summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Laß2023-05-04 21:41:38 +0200
committerMichael Laß2023-05-04 21:41:38 +0200
commit46062321c9dc341dd0b2d48b18d30995465be9d1 (patch)
tree0a1426459a135cdd95baf77fa8ff27c502b7c5a1
parent03a5290ecea4c6e4e34480b5a9fc19da4902d230 (diff)
downloadaur-46062321c9dc341dd0b2d48b18d30995465be9d1.tar.gz
Add patches for Linux 6.3
-rw-r--r--.SRCINFO10
-rw-r--r--0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch4
-rw-r--r--0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch4
-rw-r--r--0003-Linux-6.3-Include-linux-filelock.h-if-available.patch101
-rw-r--r--0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch284
-rw-r--r--PKGBUILD18
6 files changed, 410 insertions, 11 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 32362deaca46..2e0723eaf9b1 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = openafs-modules-dkms
pkgdesc = Kernel module for OpenAFS (dkms)
pkgver = 1.8.9
- pkgrel = 2
+ pkgrel = 3
url = http://www.openafs.org
arch = i686
arch = x86_64
@@ -19,9 +19,13 @@ pkgbase = openafs-modules-dkms
source = dkms.conf
source = 0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch
source = 0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
+ source = 0003-Linux-6.3-Include-linux-filelock.h-if-available.patch
+ source = 0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch
sha256sums = d126178be1f42cca18cb7c0c2691ac354518e3790170150a76bbd25f4d151f06
sha256sums = 5ea5e184f9b44f5ed45817d2b5a10149d15c8c54f49e0b5b4b773652673cb9b0
- sha256sums = 18bb17dfc1cd2d2bc4db22fc0ed8676b0f2e77b1c3526ecf1341d8725c2d5e83
- sha256sums = b1352e4efe22c92f0721e109da0c95c06cb41a574884ed97dfbf65cabb860cea
+ sha256sums = e6c9a58f9f0f06a6b32e695548fce2178e7b34f324a3fc7bbe0a9e0e8e38d661
+ sha256sums = 5bef56051f0a8f6cf9220fc9182baee53817db8f1bb9051908783196ddbf5109
+ sha256sums = 6ff1b1fef24e7d89f99fe6f44b0cefc189f599305d62aaf8e99ca778b28d4a9a
+ sha256sums = 36ea501ab111a80156c52b951a7051a7bcf27d97cd675edea2e5d87c74e23287
pkgname = openafs-modules-dkms
diff --git a/0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch b/0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch
index 9138cd188d89..96a7165e3a70 100644
--- a/0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch
+++ b/0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch
@@ -1,7 +1,7 @@
From 55ce972ab2c21115b374d56a20bf6b129635eaeb Mon Sep 17 00:00:00 2001
From: Cheyenne Wills <cwills@sinenomine.net>
Date: Wed, 14 Dec 2022 13:40:48 -0700
-Subject: [PATCH 1/2] Linux: Replace lru_cache_add with folio_add_lru
+Subject: [PATCH 1/4] Linux: Replace lru_cache_add with folio_add_lru
The Linux 6.2 commit:
"folio-compat: remove lru_cache_add()" (6e1ca48d0)
@@ -85,5 +85,5 @@ index d3abdf9ff..09cf10f4c 100644
dnl e.g. ip_sock_set_mtu_discover, ip_sock_set_recverr
AC_CHECK_LINUX_FUNC([ip_sock_set],
--
-2.39.2
+2.40.1
diff --git a/0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch b/0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
index 98b998778b7d..d3ae2a6cdbde 100644
--- a/0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
+++ b/0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
@@ -1,7 +1,7 @@
From 9251a7010b77e2702d22addfe57e83d644339786 Mon Sep 17 00:00:00 2001
From: Jeffrey Hutzelman <jhutz@cmu.edu>
Date: Tue, 1 Mar 2022 10:31:14 -0500
-Subject: [PATCH 2/2] LINUX 5.13: set .proc_lseek in proc_ops
+Subject: [PATCH 2/4] LINUX 5.13: set .proc_lseek in proc_ops
When using the proc_ops structure, set .proc_lseek explicitly rather
than leaving it unset. This field has always been present in proc_ops,
@@ -41,5 +41,5 @@ index 327520c02..fbdee29cb 100644
#else
static struct file_operations afs_syscall_ops = {
--
-2.39.2
+2.40.1
diff --git a/0003-Linux-6.3-Include-linux-filelock.h-if-available.patch b/0003-Linux-6.3-Include-linux-filelock.h-if-available.patch
new file mode 100644
index 000000000000..9dde8d281fc1
--- /dev/null
+++ b/0003-Linux-6.3-Include-linux-filelock.h-if-available.patch
@@ -0,0 +1,101 @@
+From 2fcae60b52fd8f56f63fd51813081c754b77aa74 Mon Sep 17 00:00:00 2001
+From: Cheyenne Wills <cwills@sinenomine.net>
+Date: Wed, 22 Mar 2023 16:56:09 -0600
+Subject: [PATCH 3/4] Linux 6.3: Include linux/filelock.h if available
+
+Linux 6.3 commit
+ 'filelock: move file locking definitions to separate header file'
+ (5970e15dbc)
+
+relocated file lock related declarations from 'linux/fs.h' into its own
+header file, 'linux/filelock.h'.
+
+Add autoconf tests to check for the header file 'linux/filelock.h' and
+update function checks for locks_lock_file_wait() and posix_lock_file().
+
+Update osi_compat.h to include linux/filelock.h if it is available.
+
+Reviewed-on: https://gerrit.openafs.org/15346
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+(cherry picked from commit 6873dc925c5acc0ce7d65cf778ffee09c82a9898)
+
+Change-Id: If131bee5b466a119f54b05388a065e6af23698cf
+Reviewed-on: https://gerrit.openafs.org/15388
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+(cherry picked from commit 7a3ad3bc1c87e525698f7dda1e4b0fbbd913da03)
+---
+ src/afs/LINUX/osi_compat.h | 4 ++++
+ src/cf/linux-kernel-func.m4 | 6 +++++-
+ src/cf/linux-kernel-header.m4 | 2 ++
+ src/cf/linux-test4.m4 | 6 +++++-
+ 4 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
+index 9a080da31..808c608ad 100644
+--- a/src/afs/LINUX/osi_compat.h
++++ b/src/afs/LINUX/osi_compat.h
+@@ -13,6 +13,10 @@
+ # include <linux/freezer.h>
+ #endif
+
++#if defined(HAVE_LINUX_FILELOCK_H)
++# include <linux/filelock.h>
++#endif
++
+ #if defined(LINUX_KEYRING_SUPPORT)
+ # include <linux/rwsem.h>
+ # include <linux/key.h>
+diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
+index 09cf10f4c..fc26b98b5 100644
+--- a/src/cf/linux-kernel-func.m4
++++ b/src/cf/linux-kernel-func.m4
+@@ -94,7 +94,11 @@ AC_CHECK_LINUX_FUNC([ktime_get_real_ts64],
+ [struct timespec64 *s;
+ ktime_get_real_ts64(s);])
+ AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
+- [#include <linux/fs.h>],
++ [#ifdef HAVE_LINUX_FILELOCK_H
++ # include <linux/filelock.h>
++ #else
++ # include <linux/fs.h>
++ #endif],
+ [locks_lock_file_wait(NULL, NULL);])
+ AC_CHECK_LINUX_FUNC([override_creds],
+ [#include <linux/cred.h>],
+diff --git a/src/cf/linux-kernel-header.m4 b/src/cf/linux-kernel-header.m4
+index 8507eaaab..fc52830d2 100644
+--- a/src/cf/linux-kernel-header.m4
++++ b/src/cf/linux-kernel-header.m4
+@@ -10,4 +10,6 @@ AC_CHECK_LINUX_HEADER([seq_file.h])
+ AC_CHECK_LINUX_HEADER([sched/signal.h])
+ AC_CHECK_LINUX_HEADER([uaccess.h])
+ AC_CHECK_LINUX_HEADER([stdarg.h])
++dnl Linux 6.3 relocated file locking related declarations into it's own header
++AC_CHECK_LINUX_HEADER([filelock.h])
+ ])
+diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4
+index f7699cec3..0d6b645f4 100644
+--- a/src/cf/linux-test4.m4
++++ b/src/cf/linux-test4.m4
+@@ -142,7 +142,11 @@ AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
+ AC_DEFUN([LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG], [
+ AC_CHECK_LINUX_BUILD([for 3rd argument in posix_lock_file found in new kernels],
+ [ac_cv_linux_kernel_posix_lock_file_wait_arg],
+- [#include <linux/fs.h>],
++ [#ifdef HAVE_LINUX_FILELOCK_H
++ # include <linux/filelock.h>
++ #else
++ # include <linux/fs.h>
++ #endif],
+ [posix_lock_file(0,0,0);],
+ [POSIX_LOCK_FILE_WAIT_ARG],
+ [define if your kernel uses 3 arguments for posix_lock_file],
+--
+2.40.1
+
diff --git a/0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch b/0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch
new file mode 100644
index 000000000000..a343e55221a2
--- /dev/null
+++ b/0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch
@@ -0,0 +1,284 @@
+From 03583703045baa71f92be2bdf72a9d95ef0b5645 Mon Sep 17 00:00:00 2001
+From: Cheyenne Wills <cwills@sinenomine.net>
+Date: Wed, 29 Mar 2023 12:11:38 -0600
+Subject: [PATCH 4/4] Linux 6.3: Use mnt_idmap for inode op functions
+
+Through a series of Linux 6.3 commits starting with:
+ 'f2fs: project ids aren't idmapped' (64b4cdf22f) and ending with
+ 'fs: move mnt_idmap' (3707d84c13)
+the inode operations functions were changed to take a mnt_idmap
+structure instead of a user_namespace structure. These were pulled in
+via the the merge commit:
+ 'Pull vfs idmapping updates from Christian Brauner' (05e6295f7b)
+The commit message for the merge contains background and overall
+information for this conversion.
+
+The above change simply changes the functions to use a different
+structure (mnt_idmap instead of user_namespace). For afs, it is a
+simple change to swap the structures. But for some of the Linux calls
+(generic_fillattr(), setattr_prepare(), and inode_op->setattr()) we
+would like to use the Linux symbol nop_mnt_idmap, but that symbol is
+exported as GPL only. Instead, we will obtain its address from the
+current task structure at libafs initialization (much the same way as
+obtaining current user namespace for afs_ns).
+
+Add autoconf tests to determine if inode_operations.create() uses the
+mnt_idmap structure. If so set a generic configure define for
+"IOP_TAKES_MNT_IDMAP".
+
+Update afs's inode operations functions to take and use a mnt_idmap
+instead of a user_namespace.
+
+At libafs initialization, obtain the mnt_idmap from the current task
+and save it as an afs global variable, afs_mnt_idmap, to be used where
+needed.
+
+Reviewed-on: https://gerrit.openafs.org/15347
+Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+(cherry picked from commit 858ee34545e57acab1e4e5813cd1b9a011538b9e)
+
+Change-Id: If89c6f401db04826ef45de83b91240f106cca616
+Reviewed-on: https://gerrit.openafs.org/15389
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+(cherry picked from commit f6fbb85c00411bf97e9855be73baf49bd6b061d7)
+---
+ src/afs/LINUX/osi_compat.h | 8 ++++--
+ src/afs/LINUX/osi_machdep.h | 4 +++
+ src/afs/LINUX/osi_module.c | 22 ++++++++++++++++
+ src/afs/LINUX/osi_vnodeops.c | 51 ++++++++++++++++++++++++++++++------
+ src/cf/linux-kernel-sig.m4 | 13 +++++++++
+ 5 files changed, 88 insertions(+), 10 deletions(-)
+
+diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
+index 808c608ad..bb4969ce8 100644
+--- a/src/afs/LINUX/osi_compat.h
++++ b/src/afs/LINUX/osi_compat.h
+@@ -534,7 +534,9 @@ afs_inode_setattr(struct osi_file *afile, struct iattr *newattrs) {
+
+ int code = 0;
+ struct inode *inode = OSIFILE_INODE(afile);
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++ code = inode->i_op->setattr(afs_mnt_idmap, afile->filp->f_dentry, newattrs);
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ code = inode->i_op->setattr(afs_ns, afile->filp->f_dentry, newattrs);
+ #elif !defined(HAVE_LINUX_INODE_SETATTR)
+ code = inode->i_op->setattr(afile->filp->f_dentry, newattrs);
+@@ -763,7 +765,9 @@ afs_d_path(struct dentry *dp, struct vfsmount *mnt, char *buf, int buflen)
+ static inline int
+ afs_setattr_prepare(struct dentry *dp, struct iattr *newattrs)
+ {
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++ return setattr_prepare(afs_mnt_idmap, dp, newattrs);
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ return setattr_prepare(afs_ns, dp, newattrs);
+ #elif defined(HAVE_LINUX_SETATTR_PREPARE)
+ return setattr_prepare(dp, newattrs);
+diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h
+index 34940c60d..2220e0530 100644
+--- a/src/afs/LINUX/osi_machdep.h
++++ b/src/afs/LINUX/osi_machdep.h
+@@ -217,6 +217,10 @@ extern struct user_namespace *afs_ns;
+ # define afs_current_user_ns() ((struct user_namespace *)NULL)
+ # endif
+
++#if defined(IOP_TAKES_MNT_IDMAP)
++extern struct mnt_idmap *afs_mnt_idmap;
++#endif
++
+ static inline kuid_t afs_make_kuid(uid_t uid) {
+ return make_kuid(afs_ns, uid);
+ }
+diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c
+index 79ba57c4d..fdc347d2c 100644
+--- a/src/afs/LINUX/osi_module.c
++++ b/src/afs/LINUX/osi_module.c
+@@ -31,6 +31,10 @@
+ #include <linux/sched.h>
+ #include <linux/kernel.h>
+
++#if defined(IOP_TAKES_MNT_IDMAP)
++# include <linux/fs_struct.h>
++#endif
++
+ #include "osi_pagecopy.h"
+
+ extern struct file_system_type afs_fs_type;
+@@ -46,6 +50,20 @@ int afs_global_owner = 0;
+ struct user_namespace *afs_ns;
+ #endif
+
++#if defined(IOP_TAKES_MNT_IDMAP)
++struct mnt_idmap *afs_mnt_idmap;
++
++static void
++afs_init_idmap(void)
++{
++ struct path fs_root;
++
++ get_fs_root(current->fs, &fs_root);
++ afs_mnt_idmap = mnt_idmap(fs_root.mnt);
++ path_put(&fs_root);
++}
++#endif
++
+ int __init
+ afs_init(void)
+ {
+@@ -55,6 +73,10 @@ afs_init(void)
+ afs_ns = afs_current_user_ns();
+ #endif
+
++#if defined(IOP_TAKES_MNT_IDMAP)
++ afs_init_idmap();
++#endif
++
+ osi_Init();
+
+ /* Initialize CellLRU since it is used while traversing CellServDB proc
+diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
+index 06c00ac5b..fd54821bd 100644
+--- a/src/afs/LINUX/osi_vnodeops.c
++++ b/src/afs/LINUX/osi_vnodeops.c
+@@ -1146,7 +1146,10 @@ vattr2inode(struct inode *ip, struct vattr *vp)
+ * Linux version of setattr call. What to change is in the iattr struct.
+ * We need to set bits in both the Linux inode as well as the vcache.
+ */
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_notify_change(struct mnt_idmap *idmap, struct dentry *dp, struct iattr *iattrp)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_notify_change(struct user_namespace *mnt_userns, struct dentry *dp, struct iattr *iattrp)
+ #else
+@@ -1180,7 +1183,18 @@ out:
+ return afs_convert_code(code);
+ }
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_getattr(struct mnt_idmap *idmap, const struct path *path, struct kstat *stat,
++ u32 request_mask, unsigned int sync_mode)
++{
++ int err = afs_linux_revalidate(path->dentry);
++ if (!err) {
++ generic_fillattr(afs_mnt_idmap, path->dentry->d_inode, stat);
++ }
++ return err;
++}
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_getattr(struct user_namespace *mnt_userns, const struct path *path, struct kstat *stat,
+ u32 request_mask, unsigned int sync_mode)
+@@ -1661,7 +1675,11 @@ struct dentry_operations afs_dentry_operations = {
+ * name is in kernel space at this point.
+ */
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_create(struct mnt_idmap *idmap, struct inode *dip,
++ struct dentry *dp, umode_t mode, bool excl)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_create(struct user_namespace *mnt_userns, struct inode *dip,
+ struct dentry *dp, umode_t mode, bool excl)
+@@ -1953,7 +1971,11 @@ afs_linux_unlink(struct inode *dip, struct dentry *dp)
+ }
+
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_symlink(struct mnt_idmap *idmap, struct inode *dip,
++ struct dentry *dp, const char *target)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_symlink(struct user_namespace *mnt_userns, struct inode *dip,
+ struct dentry *dp, const char *target)
+@@ -1988,7 +2010,11 @@ out:
+ return afs_convert_code(code);
+ }
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_mkdir(struct mnt_idmap *idmap, struct inode *dip,
++ struct dentry *dp, umode_t mode)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_mkdir(struct user_namespace *mnt_userns, struct inode *dip,
+ struct dentry *dp, umode_t mode)
+@@ -2068,7 +2094,13 @@ afs_linux_rmdir(struct inode *dip, struct dentry *dp)
+ }
+
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_rename(struct mnt_idmap *idmap,
++ struct inode *oldip, struct dentry *olddp,
++ struct inode *newip, struct dentry *newdp,
++ unsigned int flags)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_rename(struct user_namespace *mnt_userns,
+ struct inode *oldip, struct dentry *olddp,
+@@ -2092,7 +2124,7 @@ afs_linux_rename(struct inode *oldip, struct dentry *olddp,
+ struct dentry *rehash = NULL;
+
+ #if defined(HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS) || \
+- defined(IOP_TAKES_USER_NAMESPACE)
++ defined(IOP_TAKES_MNT_IDMAP) || defined(IOP_TAKES_USER_NAMESPACE)
+ if (flags)
+ return -EINVAL; /* no support for new flags yet */
+ #endif
+@@ -3388,7 +3420,10 @@ done:
+ * Check access rights - returns error if can't check or permission denied.
+ */
+
+-#if defined(IOP_TAKES_USER_NAMESPACE)
++#if defined(IOP_TAKES_MNT_IDMAP)
++static int
++afs_linux_permission(struct mnt_idmap *idmap, struct inode *ip, int mode)
++#elif defined(IOP_TAKES_USER_NAMESPACE)
+ static int
+ afs_linux_permission(struct user_namespace *mnt_userns, struct inode *ip, int mode)
+ #elif defined(IOP_PERMISSION_TAKES_FLAGS)
+diff --git a/src/cf/linux-kernel-sig.m4 b/src/cf/linux-kernel-sig.m4
+index e0cc9a2f3..5301f3503 100644
+--- a/src/cf/linux-kernel-sig.m4
++++ b/src/cf/linux-kernel-sig.m4
+@@ -28,4 +28,17 @@ dnl define.
+ AS_IF([test AS_VAR_GET([ac_cv_linux_operation_inode_operations_create_user_namespace]) = yes],
+ [AC_DEFINE([IOP_TAKES_USER_NAMESPACE], 1,
+ [define if inodeops require struct user_namespace])])
++dnl Linux 6.3 replaced the user_namespace parameter with mnt_idmap for
++dnl the inode operations functions.
++AC_CHECK_LINUX_OPERATION([inode_operations], [create], [mnt_idmap],
++ [#include <linux/fs.h>],
++ [int],
++ [struct mnt_idmap *idmap,
++ struct inode *inode, struct dentry *dentry,
++ umode_t umode, bool flag])
++dnl if HAVE_LINUX_INODE_OPERATIONS_CREATE_MNT_IDMAP, create a more generic
++dnl define.
++AS_IF([test AS_VAR_GET([ac_cv_linux_operation_inode_operations_create_mnt_idmap]) = yes],
++ [AC_DEFINE([IOP_TAKES_MNT_IDMAP], 1,
++ [define if inodeops require struct mnt_idmap])])
+ ])
+\ No newline at end of file
+--
+2.40.1
+
diff --git a/PKGBUILD b/PKGBUILD
index c4001f10e3af..0730e7d24efe 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=openafs-modules-dkms
_srcname=openafs
pkgver=1.8.9
-pkgrel=2
+pkgrel=3
pkgdesc="Kernel module for OpenAFS (dkms)"
arch=('i686' 'x86_64' 'armv7h')
url="http://www.openafs.org"
@@ -19,11 +19,15 @@ options=(!emptydirs)
source=(http://openafs.org/dl/openafs/${pkgver}/${_srcname}-${pkgver}-src.tar.bz2
dkms.conf
0001-Linux-Replace-lru_cache_add-with-folio_add_lru.patch
- 0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch)
+ 0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
+ 0003-Linux-6.3-Include-linux-filelock.h-if-available.patch
+ 0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch)
sha256sums=('d126178be1f42cca18cb7c0c2691ac354518e3790170150a76bbd25f4d151f06'
'5ea5e184f9b44f5ed45817d2b5a10149d15c8c54f49e0b5b4b773652673cb9b0'
- '18bb17dfc1cd2d2bc4db22fc0ed8676b0f2e77b1c3526ecf1341d8725c2d5e83'
- 'b1352e4efe22c92f0721e109da0c95c06cb41a574884ed97dfbf65cabb860cea')
+ 'e6c9a58f9f0f06a6b32e695548fce2178e7b34f324a3fc7bbe0a9e0e8e38d661'
+ '5bef56051f0a8f6cf9220fc9182baee53817db8f1bb9051908783196ddbf5109'
+ '6ff1b1fef24e7d89f99fe6f44b0cefc189f599305d62aaf8e99ca778b28d4a9a'
+ '36ea501ab111a80156c52b951a7051a7bcf27d97cd675edea2e5d87c74e23287')
prepare() {
cd "${srcdir}/${_srcname}-${pkgver}"
@@ -34,6 +38,12 @@ prepare() {
# https://gerrit.openafs.org/#/c/15286/
patch -p1 < "${srcdir}"/0002-LINUX-5.13-set-.proc_lseek-in-proc_ops.patch
+ # https://gerrit.openafs.org/#/c/15388/
+ patch -p1 < "${srcdir}"/0003-Linux-6.3-Include-linux-filelock.h-if-available.patch
+
+ # https://gerrit.openafs.org/#/c/15389/
+ patch -p1 < "${srcdir}"/0004-Linux-6.3-Use-mnt_idmap-for-inode-op-functions.patch
+
# Only needed when changes to configure were made
./regen.sh -q
}