Re: [PATCH v14 07/21] fsverity: hoist statx reporting of fs-verity flag

"Darrick J. Wong" <[email protected]>
Newsgroups org.kernel.vger.linux-xfs,dev.linux.lists.fsverity,net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.stable
Message-ID <20260804180251.GL3556460@frogsfrogsfrogs>
On Mon, Aug 03, 2026 at 10:07:57PM +0200, Andrey Albershteyn wrote:
> All filesystems, supporting fsverity, report this status by checking
> inode flag. Also, BTRFS was missing stat->attributes_mask, which is
> fixed now.
> 
> Fixes: 146054090b08 ("btrfs: initial fsverity support")
> Cc: [email protected]
> Signed-off-by: Andrey Albershteyn <[email protected]>
> Acked-by: Eric Biggers <[email protected]>
> ---
>  fs/btrfs/inode.c | 3 ---
>  fs/ext4/inode.c  | 5 +----
>  fs/f2fs/file.c   | 5 +----
>  fs/stat.c        | 6 +++++-
>  4 files changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 272598f6ae77..de729c44d6d2 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -8040,7 +8040,6 @@ static int btrfs_getattr(struct mnt_idmap *idmap,
>  	struct inode *inode = d_inode(path->dentry);
>  	u32 blocksize = btrfs_sb(inode->i_sb)->sectorsize;
>  	u32 bi_flags = BTRFS_I(inode)->flags;
> -	u32 bi_ro_flags = BTRFS_I(inode)->ro_flags;
>  
>  	stat->result_mask |= STATX_BTIME;
>  	stat->btime.tv_sec = BTRFS_I(inode)->i_otime_sec;
> @@ -8053,8 +8052,6 @@ static int btrfs_getattr(struct mnt_idmap *idmap,
>  		stat->attributes |= STATX_ATTR_IMMUTABLE;
>  	if (bi_flags & BTRFS_INODE_NODUMP)
>  		stat->attributes |= STATX_ATTR_NODUMP;
> -	if (bi_ro_flags & BTRFS_INODE_RO_VERITY)
> -		stat->attributes |= STATX_ATTR_VERITY;
>  
>  	stat->attributes_mask |= (STATX_ATTR_APPEND |
>  				  STATX_ATTR_COMPRESSED |
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index ce99807c5f5b..99fa7a28951f 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -6250,15 +6250,12 @@ int ext4_getattr(struct mnt_idmap *idmap, const struct path *path,
>  		stat->attributes |= STATX_ATTR_IMMUTABLE;
>  	if (flags & EXT4_NODUMP_FL)
>  		stat->attributes |= STATX_ATTR_NODUMP;
> -	if (flags & EXT4_VERITY_FL)
> -		stat->attributes |= STATX_ATTR_VERITY;
>  
>  	stat->attributes_mask |= (STATX_ATTR_APPEND |
>  				  STATX_ATTR_COMPRESSED |
>  				  STATX_ATTR_ENCRYPTED |
>  				  STATX_ATTR_IMMUTABLE |
> -				  STATX_ATTR_NODUMP |
> -				  STATX_ATTR_VERITY);
> +				  STATX_ATTR_NODUMP);
>  
>  	generic_fillattr(idmap, request_mask, inode, stat);
>  	return 0;
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 4b52c56d71f0..9b531a016ed4 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -1024,15 +1024,12 @@ int f2fs_getattr(struct mnt_idmap *idmap, const struct path *path,
>  		stat->attributes |= STATX_ATTR_IMMUTABLE;
>  	if (flags & F2FS_NODUMP_FL)
>  		stat->attributes |= STATX_ATTR_NODUMP;
> -	if (IS_VERITY(inode))
> -		stat->attributes |= STATX_ATTR_VERITY;
>  
>  	stat->attributes_mask |= (STATX_ATTR_COMPRESSED |
>  				  STATX_ATTR_APPEND |
>  				  STATX_ATTR_ENCRYPTED |
>  				  STATX_ATTR_IMMUTABLE |
> -				  STATX_ATTR_NODUMP |
> -				  STATX_ATTR_VERITY);
> +				  STATX_ATTR_NODUMP);
>  
>  	generic_fillattr(idmap, request_mask, inode, stat);
>  
> diff --git a/fs/stat.c b/fs/stat.c
> index 89909746bed1..ae1299bd7436 100644
> --- a/fs/stat.c
> +++ b/fs/stat.c
> @@ -203,8 +203,12 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat,
>  	if (IS_DAX(inode))
>  		stat->attributes |= STATX_ATTR_DAX;
>  
> +	if (IS_VERITY(inode))
> +		stat->attributes |= STATX_ATTR_VERITY;

Makes sense to hoist this;
Reviewed-by: "Darrick J. Wong" <[email protected]>

--D

> +
>  	stat->attributes_mask |= (STATX_ATTR_AUTOMOUNT |
> -				  STATX_ATTR_DAX);
> +				  STATX_ATTR_DAX |
> +				  STATX_ATTR_VERITY);
>  
>  	idmap = mnt_idmap(path->mnt);
>  	if (inode->i_op->getattr) {
> -- 
> 2.54.0
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.