Message ID | 1551449141-7884-9-git-send-email-wshilong1991@gmail.com (mailing list archive) |
---|---|
State | Deferred, archived |
Headers | show |
Series | add generic interface to set/get project | expand |
On Fri, Mar 01, 2019 at 11:05:41PM +0900, Wang Shilong wrote: > From: Wang Shilong <wshilong@ddn.com> > > From: Wang Shilong <wshilong@ddn.com> > > Signed-off-by: Wang Shilong <wshilong@ddn.com> > --- > fs/xfs/xfs_iops.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index c10466fe6ed4..a2f8c0f048cf 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -501,6 +501,7 @@ xfs_vn_getattr( > if (XFS_FORCED_SHUTDOWN(mp)) > return -EIO; > > + stat->projid = xfs_projid_to_kprojid(xfs_get_projid(ip)); I think we're supposed to set STATX_PROJID in the result mask if the caller asks for it, right? if (request_mask & STATX_PROJID) { stat->projid = xfs_projid_to_kprojid(xfs_get_projid(ip)); stat->result_mask |= STATX_PROJID; } > stat->size = XFS_ISIZE(ip); > stat->dev = inode->i_sb->s_dev; > stat->mode = inode->i_mode; > @@ -528,6 +529,8 @@ xfs_vn_getattr( > stat->attributes |= STATX_ATTR_APPEND; > if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP) > stat->attributes |= STATX_ATTR_NODUMP; > + if (ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) > + stat->attributes |= STATX_ATTR_PROJINHERIT; I think we also have to set STATX_ATTR_PROJINHERIT in the attributes_mask, but ... heh, XFS doesn't do that at all. :( --D > switch (inode->i_mode & S_IFMT) { > case S_IFBLK: > -- > 2.19.1 >
On Fri, Mar 01, 2019 at 11:05:41PM +0900, Wang Shilong wrote: > From: Wang Shilong <wshilong@ddn.com> > > From: Wang Shilong <wshilong@ddn.com> > > Signed-off-by: Wang Shilong <wshilong@ddn.com> > --- > fs/xfs/xfs_iops.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index c10466fe6ed4..a2f8c0f048cf 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -501,6 +501,7 @@ xfs_vn_getattr( > if (XFS_FORCED_SHUTDOWN(mp)) > return -EIO; > > + stat->projid = xfs_projid_to_kprojid(xfs_get_projid(ip)); Should only be set if the caller is in the init_user_ns. Cheers, Dave.
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index c10466fe6ed4..a2f8c0f048cf 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -501,6 +501,7 @@ xfs_vn_getattr( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; + stat->projid = xfs_projid_to_kprojid(xfs_get_projid(ip)); stat->size = XFS_ISIZE(ip); stat->dev = inode->i_sb->s_dev; stat->mode = inode->i_mode; @@ -528,6 +529,8 @@ xfs_vn_getattr( stat->attributes |= STATX_ATTR_APPEND; if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP) stat->attributes |= STATX_ATTR_NODUMP; + if (ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) + stat->attributes |= STATX_ATTR_PROJINHERIT; switch (inode->i_mode & S_IFMT) { case S_IFBLK: