diff mbox series

xfs: set attributes_mask in xfs_vn_getattr

Message ID 20190301161727.GP21626@magnolia (mailing list archive)
State Accepted
Headers show
Series xfs: set attributes_mask in xfs_vn_getattr | expand

Commit Message

Darrick J. Wong March 1, 2019, 4:17 p.m. UTC
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>
---
 fs/xfs/xfs_iops.c |    8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Darrick J. Wong March 1, 2019, 4:56 p.m. UTC | #1
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 mbox series

Patch

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: