From 302e72bbc658fa0733045e1dfadcf0bbb8a2af3d Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Tue, 22 Apr 2025 23:50:18 -0400 Subject: [PATCH] generic_fillattr() now wants the request_mask arg from caller Since ~v6.5-rc1-95-g0d72b92883c6, generic_fillattr() asks us to pass through the request_mask from the caller. This allows it to only request a subset. Signed-off-by: Auke Kok --- kmod/src/Makefile.kernelcompat | 7 +++++++ kmod/src/inode.c | 1 + kmod/src/kernelcompat.h | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index 0432720a..55fbc743 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -265,6 +265,13 @@ ifneq (,$(shell grep -s 'define __assign_str.dst, src' \ ccflags-y += -DKC_HAVE_ASSIGN_STR_PARMS endif +# +# v6.5-113-g615e95831ec3 +# +ifneq (,$(shell grep 'generic_fillattr..*,.u32,' include/linux/fs.h)) +ccflags-y += -DKC_GENERIC_FILLATTR_REQUEST_MASK +endif + # # v6.6-rc4-53-gc42d50aefd17 # diff --git a/kmod/src/inode.c b/kmod/src/inode.c index 87491eb3..8a846529 100644 --- a/kmod/src/inode.c +++ b/kmod/src/inode.c @@ -374,6 +374,7 @@ int scoutfs_getattr(KC_VFS_NS_DEF SCOUTFS_LKF_REFRESH_INODE, inode, &lock); if (ret == 0) { generic_fillattr(KC_VFS_INIT_NS + KC_FILLATTR_REQUEST_MASK inode, stat); scoutfs_unlock(sb, lock, SCOUTFS_LOCK_READ); } diff --git a/kmod/src/kernelcompat.h b/kmod/src/kernelcompat.h index e8182868..955a29c8 100644 --- a/kmod/src/kernelcompat.h +++ b/kmod/src/kernelcompat.h @@ -99,6 +99,12 @@ typedef unsigned int blk_opf_t; #endif #endif /* KC_VFS_METHOD_MNT_IDMAP_ARG */ +#ifdef KC_GENERIC_FILLATTR_REQUEST_MASK +#define KC_FILLATTR_REQUEST_MASK request_mask, +#else +#define KC_FILLATTR_REQUEST_MASK +#endif + #ifdef KC_BIO_ALLOC_DEV_OPF_ARGS #define kc_bio_alloc bio_alloc #else