On Thu, May 14, 2020 at 04:12:44PM -0500, Eric Sandeen wrote: > On 5/14/20 3:54 PM, Darrick J. Wong wrote: > > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > > Since the old SWAPEXT ioctl doesn't know how to adjust quota ids, > > bail out of the ids don't match and quotas are enabled. > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > makes sense, I probably missed the discussion that presumably arrived > at "ye gods trying to fix up the quota allocations is nigh impossible?" No, it's not impossible[1], it's just the one person who replied also declined to review it, so now I'm racing patches. :P --D [1] https://lore.kernel.org/linux-xfs/158864102885.182577.15936710415441871446.stgit@magnolia/ > And in the end, what's yet another -EINVAL return here, anyway? ;) > > Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx> > > > --- > > fs/xfs/xfs_bmap_util.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c > > index cc23a3e23e2d..5e7da27c6e98 100644 > > --- a/fs/xfs/xfs_bmap_util.c > > +++ b/fs/xfs/xfs_bmap_util.c > > @@ -1210,6 +1210,12 @@ xfs_swap_extents_check_format( > > struct xfs_inode *ip, /* target inode */ > > struct xfs_inode *tip) /* tmp inode */ > > { > > + /* User/group/project quota ids must match if quotas are enforced. */ > > + if (XFS_IS_QUOTA_ON(ip->i_mount) && > > + (!uid_eq(VFS_I(ip)->i_uid, VFS_I(tip)->i_uid) || > > + !gid_eq(VFS_I(ip)->i_gid, VFS_I(tip)->i_gid) || > > + ip->i_d.di_projid != tip->i_d.di_projid)) > > + return -EINVAL; > > > > /* Should never get a local format */ > > if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || > >