Message ID | 20190301161727.GP21626@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfs: set attributes_mask in xfs_vn_getattr | expand |
On Fri, Mar 01, 2019 at 08:17:27AM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > According to the statx documentation we're supposed to set a bit in > attributes_mask for every inode flag that the filesystem can support. > We don't, so fix this. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Heh, self-NAK, Luis posted the same thing a year and a half ago... > --- > fs/xfs/xfs_iops.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 1efef69a7f1c..74047bd0c1ae 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -531,6 +531,10 @@ xfs_vn_getattr( > } > } > > + /* > + * Note: If you add another clause to set an attribute flag, please > + * update attributes_mask below. > + */ ...so I'll add this comment to his patch and merge it. Will post xfsprogs changes and testcase soon. --D > if (ip->i_d.di_flags & XFS_DIFLAG_IMMUTABLE) > stat->attributes |= STATX_ATTR_IMMUTABLE; > if (ip->i_d.di_flags & XFS_DIFLAG_APPEND) > @@ -538,6 +542,10 @@ xfs_vn_getattr( > if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP) > stat->attributes |= STATX_ATTR_NODUMP; > > + stat->attributes_mask |= (STATX_ATTR_IMMUTABLE | > + STATX_ATTR_APPEND | > + STATX_ATTR_NODUMP); > + > switch (inode->i_mode & S_IFMT) { > case S_IFBLK: > case S_IFCHR:
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 1efef69a7f1c..74047bd0c1ae 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -531,6 +531,10 @@ xfs_vn_getattr( } } + /* + * Note: If you add another clause to set an attribute flag, please + * update attributes_mask below. + */ if (ip->i_d.di_flags & XFS_DIFLAG_IMMUTABLE) stat->attributes |= STATX_ATTR_IMMUTABLE; if (ip->i_d.di_flags & XFS_DIFLAG_APPEND) @@ -538,6 +542,10 @@ xfs_vn_getattr( if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP) stat->attributes |= STATX_ATTR_NODUMP; + stat->attributes_mask |= (STATX_ATTR_IMMUTABLE | + STATX_ATTR_APPEND | + STATX_ATTR_NODUMP); + switch (inode->i_mode & S_IFMT) { case S_IFBLK: case S_IFCHR: