Whamcloud - gitweb
LU-16350 osd-ldiskfs: no_llseek removed, dquot_transfer
authorShaun Tancheff <shaun.tancheff@hpe.com>
Thu, 11 Apr 2024 18:12:15 +0000 (11:12 -0700)
committerAndreas Dilger <adilger@whamcloud.com>
Mon, 15 Apr 2024 09:54:57 +0000 (09:54 +0000)
Linux commit v5.19-rc2-6-g868941b14441
  fs: remove no_llseek

With the removal of no_llseek, leaving .llseek set to NULL
is functionally equivalent. Only provide no_llseek if it exists.

Linux commit v5.19-rc3-6-g71e7b535b890
 quota: port quota helpers mount ids

dquot_transfer adds a user namespace argument. Provide an
osd_dquot_transfer() wrapper to discard the additional
argument for older kernels.

Lustre-change: https://review.whamcloud.com/49266
Lustre-commit: 2de1dbd440e2b26ea1bdf663b92a3e8c62a95ee7

Test-Parameters: trivial
HPE-bug-id: LUS-11376
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: If3165aed0d7b827b90e26d9f0174137d087ce57a
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/54745
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/autoconf/lustre-core.m4
lustre/ofd/ofd_access_log.c
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_internal.h

index 96e5ddd..4989ba9 100644 (file)
@@ -3326,6 +3326,55 @@ AC_DEFUN([LC_SECURITY_DENTRY_INIT_SECURTY_WITH_CTX], [
 ]) # LC_SECURITY_DENTRY_INIT_SECURTY_WITH_CTX
 
 #
+# LC_HAVE_NO_LLSEEK
+#
+# Linux commit v5.19-rc2-6-g868941b14441
+#   fs: remove no_llseek
+#
+AC_DEFUN([LC_SRC_HAVE_NO_LLSEEK], [
+       LB2_LINUX_TEST_SRC([no_llseek], [
+               #include <linux/fs.h>
+       ],[
+               static const struct file_operations fops = {
+                       .llseek = &no_llseek,
+               };
+               (void)fops;
+       ],[-Werror])
+])
+AC_DEFUN([LC_HAVE_NO_LLSEEK], [
+       AC_MSG_CHECKING([if no_llseek() is available])
+       LB2_LINUX_TEST_RESULT([no_llseek], [
+               AC_DEFINE(HAVE_NO_LLSEEK, 1, [no_llseek() is available])
+       ])
+]) # LC_HAVE_NO_LLSEEK
+
+#
+# LC_DQUOT_TRANSFER_WITH_USER_NS
+#
+# Linux commit v5.19-rc3-6-g71e7b535b890
+#  quota: port quota helpers mount ids
+#
+AC_DEFUN([LC_SRC_DQUOT_TRANSFER_WITH_USER_NS], [
+       LB2_LINUX_TEST_SRC([dquot_transfer], [
+               #include <linux/quotaops.h>
+       ],[
+               struct user_namespace *userns = NULL;
+               struct inode *inode = NULL;
+               struct iattr *iattr = NULL;
+               int err __attribute__ ((unused));
+
+               err = dquot_transfer(userns, inode, iattr);
+       ],[-Werror])
+])
+AC_DEFUN([LC_DQUOT_TRANSFER_WITH_USER_NS], [
+       AC_MSG_CHECKING([if dquot_transfer() has user_ns argument])
+       LB2_LINUX_TEST_RESULT([dquot_transfer], [
+               AC_DEFINE(HAVE_DQUOT_TRANSFER_WITH_USER_NS, 1,
+                       [dquot_transfer() has user_ns argument])
+       ])
+]) # LC_DQUOT_TRANSFER_WITH_USER_NS
+
+#
 # LC_HAVE_FILEMAP_GET_FOLIOS
 #
 # Linux commit v5.19-rc3-342-gbe0ced5e9cb8
@@ -4337,9 +4386,11 @@ AC_DEFUN([LC_PROG_LINUX_SRC], [
        LC_SRC_HAVE_ADDRESS_SPACE_OPERATIONS_RELEASE_FOLIO
        LC_SRC_HAVE_LSMCONTEXT_INIT
        LC_SRC_SECURITY_DENTRY_INIT_SECURTY_WITH_CTX
-       LC_SRC_HAVE_FILEMAP_GET_FOLIOS
 
        # 6.0
+       LC_SRC_HAVE_NO_LLSEEK
+       LC_SRC_DQUOT_TRANSFER_WITH_USER_NS
+       LC_SRC_HAVE_FILEMAP_GET_FOLIOS
        LC_SRC_HAVE_ADDRESS_SPACE_OPERATIONS_MIGRATE_FOLIO
        LC_SRC_REGISTER_SHRINKER_FORMAT_NAMED
        LC_SRC_HAVE_VFS_SETXATTR_NON_CONST_VALUE
@@ -4619,9 +4670,11 @@ AC_DEFUN([LC_PROG_LINUX_RESULTS], [
        LC_HAVE_ADDRESS_SPACE_OPERATIONS_RELEASE_FOLIO
        LC_HAVE_LSMCONTEXT_INIT
        LC_SECURITY_DENTRY_INIT_SECURTY_WITH_CTX
-       LC_HAVE_FILEMAP_GET_FOLIOS
 
        # 6.0
+       LC_HAVE_NO_LLSEEK
+       LC_DQUOT_TRANSFER_WITH_USER_NS
+       LC_HAVE_FILEMAP_GET_FOLIOS
        LC_HAVE_ADDRESS_SPACE_OPERATIONS_MIGRATE_FOLIO
        LC_REGISTER_SHRINKER_FORMAT_NAMED
        LC_HAVE_VFS_SETXATTR_NON_CONST_VALUE
index b4acc55..4dfc341 100644 (file)
@@ -434,7 +434,9 @@ static const struct file_operations oal_fops = {
        .read = &oal_file_read,
        .write = &oal_file_write,
        .poll = &oal_file_poll,
+#ifdef HAVE_NO_LLSEEK
        .llseek = &no_llseek,
+#endif
 };
 
 static void oal_device_release(struct device *dev)
index 94cd315..1654861 100644 (file)
@@ -3318,7 +3318,7 @@ static int osd_quota_transfer(struct inode *inode, const struct lu_attr *attr,
                iattr.ia_gid = make_kgid(&init_user_ns, attr->la_gid);
 
                lock_dquot_transfer(inode);
-               rc = dquot_transfer(inode, &iattr);
+               rc = osd_dquot_transfer(&init_user_ns, inode, &iattr);
                unlock_dquot_transfer(inode);
                if (rc) {
                        CERROR("%s: quota transfer failed. Is quota enforcement enabled on the ldiskfs filesystem? rc = %d\n",
index 7f253f7..b4d2078 100644 (file)
@@ -1798,4 +1798,10 @@ static int fill_fn(struct dir_context *buf, const char *name, int namelen,  \
 bool osd_tx_was_declared(const struct lu_env *env, struct osd_thandle *oth,
                         struct dt_object *dt, enum dt_txn_op op, loff_t p);
 
+#ifdef HAVE_DQUOT_TRANSFER_WITH_USER_NS
+#define osd_dquot_transfer(ns, i, a)   dquot_transfer((ns), (i), (a))
+#else
+#define osd_dquot_transfer(ns, i, a)   dquot_transfer((i), (a))
+#endif
+
 #endif /* _OSD_INTERNAL_H */