Re: [PATCH v6 1/7] fs: pass the request_mask to generic_fillattr

From: Paulo Alcantara
Date: Wed Aug 02 2023 - 14:48:12 EST


Jeff Layton <jlayton@xxxxxxxxxx> writes:

> generic_fillattr just fills in the entire stat struct indiscriminately
> today, copying data from the inode. There is at least one attribute
> (STATX_CHANGE_COOKIE) that can have side effects when it is reported,
> and we're looking at adding more with the addition of multigrain
> timestamps.
>
> Add a request_mask argument to generic_fillattr and have most callers
> just pass in the value that is passed to getattr. Have other callers
> (e.g. ksmbd) just pass in STATX_BASIC_STATS. Also move the setting of
> STATX_CHANGE_COOKIE into generic_fillattr.
>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
> fs/9p/vfs_inode.c | 4 ++--
> fs/9p/vfs_inode_dotl.c | 4 ++--
> fs/afs/inode.c | 2 +-
> fs/btrfs/inode.c | 2 +-
> fs/ceph/inode.c | 2 +-
> fs/coda/inode.c | 3 ++-
> fs/ecryptfs/inode.c | 5 +++--
> fs/erofs/inode.c | 2 +-
> fs/exfat/file.c | 2 +-
> fs/ext2/inode.c | 2 +-
> fs/ext4/inode.c | 2 +-
> fs/f2fs/file.c | 2 +-
> fs/fat/file.c | 2 +-
> fs/fuse/dir.c | 2 +-
> fs/gfs2/inode.c | 2 +-
> fs/hfsplus/inode.c | 2 +-
> fs/kernfs/inode.c | 2 +-
> fs/libfs.c | 4 ++--
> fs/minix/inode.c | 2 +-
> fs/nfs/inode.c | 2 +-
> fs/nfs/namespace.c | 3 ++-
> fs/ntfs3/file.c | 2 +-
> fs/ocfs2/file.c | 2 +-
> fs/orangefs/inode.c | 2 +-
> fs/proc/base.c | 4 ++--
> fs/proc/fd.c | 2 +-
> fs/proc/generic.c | 2 +-
> fs/proc/proc_net.c | 2 +-
> fs/proc/proc_sysctl.c | 2 +-
> fs/proc/root.c | 3 ++-
> fs/smb/client/inode.c | 2 +-
> fs/smb/server/smb2pdu.c | 22 +++++++++++-----------
> fs/smb/server/vfs.c | 3 ++-
> fs/stat.c | 18 ++++++++++--------
> fs/sysv/itree.c | 3 ++-
> fs/ubifs/dir.c | 2 +-
> fs/udf/symlink.c | 2 +-
> fs/vboxsf/utils.c | 2 +-
> include/linux/fs.h | 2 +-
> mm/shmem.c | 2 +-
> 40 files changed, 70 insertions(+), 62 deletions(-)
>
> [...]
>
> diff --git a/fs/smb/client/inode.c b/fs/smb/client/inode.c
> index 218f03dd3f52..93fe43789d7a 100644
> --- a/fs/smb/client/inode.c
> +++ b/fs/smb/client/inode.c
> @@ -2540,7 +2540,7 @@ int cifs_getattr(struct mnt_idmap *idmap, const struct path *path,
> return rc;
> }
>
> - generic_fillattr(&nop_mnt_idmap, inode, stat);
> + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
> stat->blksize = cifs_sb->ctx->bsize;
> stat->ino = CIFS_I(inode)->uniqueid;

Reviewed-by: Paulo Alcantara (SUSE) <pc@xxxxxxxxxxxxx>