From 7815835d21a5c0b6dbc58d9bc9dd823d4952f86f Mon Sep 17 00:00:00 2001 From: Andrew Perepechko Date: Mon, 18 Dec 2023 11:19:26 -0700 Subject: [PATCH] LU-14651 build: fix build for el7.9 kernels Handle extra setattr_prepare() argument added in Linux 5.12 kernels when building on older kernels. HPE-bug-id: LUS-12059 Signed-off-by: Andrew Perepechko Change-Id: Ie7fd1c4d51b7a9b086cfca0db941321cbcce7057 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53503 Reviewed-by: Alexander Zarochentsev Reviewed-by: Sebastien Buisson Reviewed-by: James Simmons Reviewed-by: Oleg Drokin Tested-by: Sebastien Buisson Tested-by: James Simmons --- lustre/llite/llite_internal.h | 7 ++++++- lustre/llite/llite_lib.c | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index 26e1c44..e52d49f 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -311,11 +311,16 @@ struct ll_inode_info { #define inode_permission(ns, inode, mask) inode_permission(inode, mask) #define generic_permission(ns, inode, mask) generic_permission(inode, mask) #define simple_setattr(ns, de, iattr) simple_setattr(de, iattr) +#define ll_setattr(ns, de, attr) ll_setattr(de, attr) +#ifdef HAVE_STRUCT_POSIX_ACL_XATTR +#define setattr_prepare(ns, de, at) setattr_prepare(de, at) +#else +#define setattr_prepare(ns, de, at) inode_change_ok(de->d_inode, at) +#endif #define ll_inode_permission(ns, inode, mask) ll_inode_permission(inode, mask) #ifdef HAVE_INODEOPS_ENHANCED_GETATTR #define ll_getattr(ns, path, stat, mask, fl) ll_getattr(path, stat, mask, fl) #endif /* HAVE_INODEOPS_ENHANCED_GETATTR */ -#define ll_setattr(ns, de, attr) ll_setattr(de, attr) #endif #ifdef IOCB_APPEND diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 34f083a..199b5b0 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -2498,6 +2498,10 @@ int ll_setattr(struct mnt_idmap *map, struct dentry *de, struct iattr *attr) enum op_xvalid xvalid = 0; int rc; + rc = setattr_prepare(map, de, attr); + if (rc) + return rc; + rc = llcrypt_prepare_setattr(de, attr); if (rc) return rc; -- 1.8.3.1