diff options
author | Michael Laß | 2024-01-19 18:24:18 +0100 |
---|---|---|
committer | Michael Laß | 2024-01-19 18:24:18 +0100 |
commit | 526d91ddbe4ca32d724e1a4314c964593e7434fc (patch) | |
tree | 4d78e3777c09eb1090c3f3024c1ce7ad5a0ab5e7 | |
parent | d0d02bd73898681920696799462647831f777c9a (diff) | |
download | aur-526d91ddbe4ca32d724e1a4314c964593e7434fc.tar.gz |
Update to 1.8.11pre1
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | 0001-Linux-6.5-Replace-generic_file_splice_read.patch | 67 | ||||
-rw-r--r-- | 0002-LINUX-Make-sysctl-definitions-more-concise.patch | 318 | ||||
-rw-r--r-- | 0003-Linux-6.5-Use-register_sysctl.patch | 107 | ||||
-rw-r--r-- | 0004-hcrypto-rename-abort-to-_afscrypto_abort.patch | 73 | ||||
-rw-r--r-- | 0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch | 126 | ||||
-rw-r--r-- | 0006-dir-Introduce-struct-DirEntryFlex.patch | 236 | ||||
-rw-r--r-- | 0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch | 61 | ||||
-rw-r--r-- | 0008-Linux-6.6-convert-to-ctime-accessor-functions.patch | 105 | ||||
-rw-r--r-- | 0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch | 92 | ||||
-rw-r--r-- | 0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch | 144 | ||||
-rw-r--r-- | PKGBUILD | 46 |
12 files changed, 9 insertions, 1394 deletions
@@ -1,7 +1,7 @@ pkgbase = openafs-modules pkgdesc = Kernel module for OpenAFS - pkgver = 1.8.10 - pkgrel = 6 + pkgver = 1.8.11pre1 + pkgrel = 1 url = http://www.openafs.org install = openafs-modules.install arch = i686 @@ -14,27 +14,7 @@ pkgbase = openafs-modules conflicts = openafs-features-libafs conflicts = openafs<1.6.6-2 options = !emptydirs - source = http://openafs.org/dl/openafs/1.8.10/openafs-1.8.10-src.tar.bz2 - source = 0001-Linux-6.5-Replace-generic_file_splice_read.patch - source = 0002-LINUX-Make-sysctl-definitions-more-concise.patch - source = 0003-Linux-6.5-Use-register_sysctl.patch - source = 0004-hcrypto-rename-abort-to-_afscrypto_abort.patch - source = 0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch - source = 0006-dir-Introduce-struct-DirEntryFlex.patch - source = 0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch - source = 0008-Linux-6.6-convert-to-ctime-accessor-functions.patch - source = 0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch - source = 0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch - sha256sums = 9fec11364623549e8db7374072f5c8f01b841f6bfe7e85673cbce35ff43ffb07 - sha256sums = 91cf2ee76afaacd7f85ec3cc9bcf35920f54e8b11b68b3b3d8036af742a44e4d - sha256sums = 0779c389864cf514a04734abd318a4e98db88889b04b2fdbe8e2a3816cb872eb - sha256sums = e22896c9cff526e01336849e2032c235707450cf93f6131a8a7e3c86d84e8e5c - sha256sums = 5dacbca5a5afa6ff99b2976fcc70fa760a4f5e9286c21a05ec233b09ce37bb11 - sha256sums = 5213e96c818842210736927e9ef5669fb6b35e6755bb71995fadf3c2ba44e04c - sha256sums = ee60fa3f52a397510eb5c6e2e664eb4e66e9620180a74e54d9c8e9677691f8f0 - sha256sums = 2f2bea9c8a9ea6122af2456725faa41b014687b1681a3c20a0918adf879bfb86 - sha256sums = 12f2f983dd7845758a1d0e6ab1c85358c5660022137dc4f00c3a3d4f8443e7f3 - sha256sums = 37abfa35b2b78956e258137fc66197c118084802f1fb17d4ab9546010c693e6d - sha256sums = cf47ce835da5015d4b0621223a4edad5b096790a4aecac2f6141b70164598243 + source = http://openafs.org/dl/openafs/candidate/1.8.11pre1/openafs-1.8.11pre1-src.tar.bz2 + sha256sums = dfdb4bcd79e060180ebfd127d0447eceb716be0fbe07712ee7f9ac1904b42c82 pkgname = openafs-modules diff --git a/0001-Linux-6.5-Replace-generic_file_splice_read.patch b/0001-Linux-6.5-Replace-generic_file_splice_read.patch deleted file mode 100644 index 95b878cecb32..000000000000 --- a/0001-Linux-6.5-Replace-generic_file_splice_read.patch +++ /dev/null @@ -1,67 +0,0 @@ -From c971e62f522699a0785d7cd028d93dbf203e793c Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Sun, 9 Jul 2023 18:52:23 -0600 -Subject: [PATCH 01/10] Linux 6.5: Replace generic_file_splice_read - -The Linux 6.5 commit: - 'splice: Remove generic_file_splice_read()' (c6585011bc) -replaces the function generic_file_splice_read() with the function -filemap_splice_read(). - -The Linux function 'filemap_splice_read()' was introduced with the -Linux 6.3 commits: - - 'splice: Add a func to do a splice from a buffered file without - ITER_PIPE' (07073eb01c) - 'splice: Export filemap/direct_splice_read()' (7c8e01ebf2) - -With updates in Linux 6.5: - 'splice: Fix filemap_splice_read() to use the correct inode' - (c37222082f) -- which fixes a problem in the code. - 'splice: Make filemap_splice_read() check s_maxbytes' (83aeff881e) - -Due to the fact that there could be problems with splice support prior -to Linux 6.5 (where filemap_splice_read()'s use was expanded to -additional filesystems other than just cifs), we only want to use -'filemap_splice_read()' in Linux 6.5 and later. - -The LINUX/osi_vnodeops.c file is updated to use 'filemap_splice_read()', -for Linux 6.5 and later, for the splice_read member of the -file_operations structure. - -Reviewed-on: https://gerrit.openafs.org/15486 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 0e06eb78f293bb295b0fe12da24abd8dc1160149) - -Change-Id: I3b5436234d275253a37987dc40a522ae8f3cae1e -Reviewed-on: https://gerrit.openafs.org/15520 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit fef245769366efe8694ddadd1e1f2ed5ef8608f4) ---- - src/afs/LINUX/osi_vnodeops.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index ccec38289..dd8b39d5d 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -960,7 +960,11 @@ struct file_operations afs_file_fops = { - # else - .splice_write = generic_file_splice_write, - # endif -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,5,0) -+ .splice_read = filemap_splice_read, -+# else - .splice_read = generic_file_splice_read, -+# endif - #endif - .release = afs_linux_release, - .fsync = afs_linux_fsync, --- -2.43.0 - diff --git a/0002-LINUX-Make-sysctl-definitions-more-concise.patch b/0002-LINUX-Make-sysctl-definitions-more-concise.patch deleted file mode 100644 index c206b52788f0..000000000000 --- a/0002-LINUX-Make-sysctl-definitions-more-concise.patch +++ /dev/null @@ -1,318 +0,0 @@ -From 17e481aa89cdc480d700cf9741331e12e5944049 Mon Sep 17 00:00:00 2001 -From: Andrew Deason <adeason@sinenomine.net> -Date: Thu, 18 Jul 2019 22:56:48 -0500 -Subject: [PATCH 02/10] LINUX: Make sysctl definitions more concise - -Our sysctl definitions are quite verbose, and adding new ones involves -copying a bunch of lines. Make these a little easier to specify, by -defining some new preprocessor macros. - -Reviewed-on: https://gerrit.openafs.org/13700 -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Tested-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 1b0bb8a7fcbd69d513ed30bb76fd0693d1bd3319) - -Change-Id: Ib656634ed956b845c89656069aa297253acce785 -Reviewed-on: https://gerrit.openafs.org/15521 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit d15c7ab50c92671052cbe9a93b0440c81156d8aa) ---- - src/afs/LINUX/osi_sysctl.c | 252 +++++++------------------------------ - 1 file changed, 45 insertions(+), 207 deletions(-) - -diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c -index 8e7dd70e1..894c49412 100644 ---- a/src/afs/LINUX/osi_sysctl.c -+++ b/src/afs/LINUX/osi_sysctl.c -@@ -18,6 +18,8 @@ - #include <linux/config.h> - #endif - -+#ifdef CONFIG_SYSCTL -+ - /* From afs_util.c */ - extern afs_int32 afs_md5inum; - -@@ -31,206 +33,48 @@ extern afs_int32 afs_blocksUsed_2; - extern afs_int32 afs_pct1; - extern afs_int32 afs_pct2; - --#ifdef CONFIG_SYSCTL -+# ifdef STRUCT_CTL_TABLE_HAS_CTL_NAME -+# ifdef CTL_UNNUMBERED -+# define AFS_SYSCTL_NAME(num) .ctl_name = CTL_UNNUMBERED, -+# else -+# define AFS_SYSCTL_NAME(num) .ctl_name = num, -+# endif -+# else -+# define AFS_SYSCTL_NAME(num) -+# endif -+ -+# define AFS_SYSCTL_INT2(num, perms, name, var) { \ -+ AFS_SYSCTL_NAME(num) \ -+ .procname = name, \ -+ .data = &var, \ -+ .maxlen = sizeof(var), \ -+ .mode = perms, \ -+ .proc_handler = &proc_dointvec \ -+} -+# define AFS_SYSCTL_INT(num, perms, var) \ -+ AFS_SYSCTL_INT2(num, perms, #var, var) -+ - static struct ctl_table_header *afs_sysctl = NULL; - - static struct ctl_table afs_sysctl_table[] = { -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 1, --#endif --#endif -- .procname = "hm_retry_RO", -- .data = &hm_retry_RO, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 2, --#endif --#endif -- .procname = "hm_retry_RW", -- .data = &hm_retry_RW, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 3, --#endif --#endif -- .procname = "hm_retry_int", -- .data = &hm_retry_int, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 4, --#endif --#endif -- .procname = "GCPAGs", -- .data = &afs_gcpags, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 5, --#endif --#endif -- .procname = "rx_deadtime", -- .data = &afs_rx_deadtime, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 6, --#endif --#endif -- .procname = "bkVolPref", -- .data = &afs_bkvolpref, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 7, --#endif --#endif -- .procname = "afs_blocksUsed", -- .data = &afs_blocksUsed, -- .maxlen = sizeof(afs_int32), -- .mode = 0444, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 8, --#endif --#endif -- .procname = "afs_blocksUsed_0", -- .data = &afs_blocksUsed_0, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 9, --#endif --#endif -- .procname = "afs_blocksUsed_1", -- .data = &afs_blocksUsed_1, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 10, --#endif --#endif -- .procname = "afs_blocksUsed_2", -- .data = &afs_blocksUsed_2, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 11, --#endif --#endif -- .procname = "afs_pct1", -- .data = &afs_pct1, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 12, --#endif --#endif -- .procname = "afs_pct2", -- .data = &afs_pct2, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 13, --#endif --#endif -- .procname = "afs_cacheBlocks", -- .data = &afs_cacheBlocks, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 14, --#endif --#endif -- .procname = "md5inum", -- .data = &afs_md5inum, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -+ AFS_SYSCTL_INT(1, 0644, hm_retry_RO), -+ AFS_SYSCTL_INT(2, 0644, hm_retry_RW), -+ AFS_SYSCTL_INT(3, 0644, hm_retry_int), -+ -+ AFS_SYSCTL_INT2(4, 0644, "GCPAGs", afs_gcpags), -+ AFS_SYSCTL_INT2(5, 0644, "rx_deadtime", afs_rx_deadtime), -+ AFS_SYSCTL_INT2(6, 0644, "bkVolPref", afs_bkvolpref), -+ -+ AFS_SYSCTL_INT( 7, 0444, afs_blocksUsed), -+ AFS_SYSCTL_INT( 8, 0644, afs_blocksUsed_0), -+ AFS_SYSCTL_INT( 9, 0644, afs_blocksUsed_1), -+ AFS_SYSCTL_INT(10, 0644, afs_blocksUsed_2), -+ -+ AFS_SYSCTL_INT( 11, 0644, afs_pct1), -+ AFS_SYSCTL_INT( 12, 0644, afs_pct2), -+ AFS_SYSCTL_INT( 13, 0644, afs_cacheBlocks), -+ AFS_SYSCTL_INT2(14, 0644, "md5inum", afs_md5inum), -+ - { - .procname = 0 - } -@@ -238,13 +82,7 @@ static struct ctl_table afs_sysctl_table[] = { - - static struct ctl_table fs_sysctl_table[] = { - { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 1, --#endif --#endif -+ AFS_SYSCTL_NAME(1) - .procname = "afs", - .mode = 0555, - .child = afs_sysctl_table -@@ -257,11 +95,11 @@ static struct ctl_table fs_sysctl_table[] = { - int - osi_sysctl_init(void) - { --#if defined(REGISTER_SYSCTL_TABLE_NOFLAG) -+# if defined(REGISTER_SYSCTL_TABLE_NOFLAG) - afs_sysctl = register_sysctl_table(fs_sysctl_table); --#else -+# else - afs_sysctl = register_sysctl_table(fs_sysctl_table, 0); --#endif -+# endif - if (!afs_sysctl) - return -1; - --- -2.43.0 - diff --git a/0003-Linux-6.5-Use-register_sysctl.patch b/0003-Linux-6.5-Use-register_sysctl.patch deleted file mode 100644 index ddec4dca84f4..000000000000 --- a/0003-Linux-6.5-Use-register_sysctl.patch +++ /dev/null @@ -1,107 +0,0 @@ -From c96d401d9e044e412ea162d530273476de34211a Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Thu, 13 Jul 2023 10:54:22 -0600 -Subject: [PATCH 03/10] Linux 6.5: Use register_sysctl() - -The linux 6.5 commit: - "sysctl: Remove register_sysctl_table" (b8cbc0855a) -removed the Linux function register_sysctl_table(). The replacement -function is register_sysctl(), which offers a simpler interface. - -Add an autoconf test for the Linux function register_sysctl and add a -call to register_sysctl when available. - -Notes: -The Linux function register_sysctl was added in Linux 3.3 with the -commit: - 'sysctl: Add register_sysctl for normal sysctl users' (fea478d410) -with a note that it is a simpler interface. - -The function register_sysctl_table was marked as deprecated with the -Linux 6.3 commit: - 'proc_sysctl: enhance documentation' (1dc8689e4c) - -Reviewed-on: https://gerrit.openafs.org/15500 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit fb31d299e6caa015f6288ba9186da6277d3d6a8d) - -Change-Id: I60f68f1dd95c32bada7179e98250fd44d7c2ddf3 -Reviewed-on: https://gerrit.openafs.org/15522 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 63801cfd1fc06ec3259fcfd67229f3a3c70447ed) ---- - src/afs/LINUX/osi_sysctl.c | 8 +++++--- - src/cf/linux-kernel-assorted.m4 | 4 +++- - src/cf/linux-kernel-func.m4 | 8 ++++++++ - 3 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c -index 894c49412..a0a039892 100644 ---- a/src/afs/LINUX/osi_sysctl.c -+++ b/src/afs/LINUX/osi_sysctl.c -@@ -79,7 +79,7 @@ static struct ctl_table afs_sysctl_table[] = { - .procname = 0 - } - }; -- -+# if !defined(HAVE_LINUX_REGISTER_SYSCTL) - static struct ctl_table fs_sysctl_table[] = { - { - AFS_SYSCTL_NAME(1) -@@ -91,11 +91,13 @@ static struct ctl_table fs_sysctl_table[] = { - .procname = 0 - } - }; -- -+# endif - int - osi_sysctl_init(void) - { --# if defined(REGISTER_SYSCTL_TABLE_NOFLAG) -+# if defined(HAVE_LINUX_REGISTER_SYSCTL) -+ afs_sysctl = register_sysctl("afs", afs_sysctl_table); -+# elif defined(REGISTER_SYSCTL_TABLE_NOFLAG) - afs_sysctl = register_sysctl_table(fs_sysctl_table); - # else - afs_sysctl = register_sysctl_table(fs_sysctl_table, 0); -diff --git a/src/cf/linux-kernel-assorted.m4 b/src/cf/linux-kernel-assorted.m4 -index 03d5f6583..b3a11bc3a 100644 ---- a/src/cf/linux-kernel-assorted.m4 -+++ b/src/cf/linux-kernel-assorted.m4 -@@ -39,7 +39,9 @@ LINUX_LINUX_KEYRING_SUPPORT - LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK - LINUX_KEY_ALLOC_NEEDS_CRED - LINUX_INIT_WORK_HAS_DATA --LINUX_REGISTER_SYSCTL_TABLE_NOFLAG -+dnl Don't bother checking register_sysctl_table if using register_sysctl -+AS_IF([test "x$ac_cv_linux_func_register_sysctl" != "xyes"], -+ [LINUX_REGISTER_SYSCTL_TABLE_NOFLAG]) - LINUX_HAVE_DCACHE_LOCK - LINUX_D_COUNT_IS_INT - LINUX_IOP_GETATTR_TAKES_PATH_STRUCT -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index ee22158db..811954915 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -217,6 +217,14 @@ AC_CHECK_LINUX_FUNC([block_dirty_folio], - #include <linux/buffer_head.h>], - [block_dirty_folio(NULL, NULL);]) - -+dnl Linux 6.5 removed the Linux function register_sysctl_table(), which -+dnl was deprecated in Linux 6.3 in favor of register_sysctl() which was -+dnl introduced in Linux 3.3 -+AC_CHECK_LINUX_FUNC([register_sysctl], -+ [#include <linux/kernel.h> -+ #include <linux/sysctl.h>], -+ [(void)register_sysctl(NULL, NULL);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], --- -2.43.0 - diff --git a/0004-hcrypto-rename-abort-to-_afscrypto_abort.patch b/0004-hcrypto-rename-abort-to-_afscrypto_abort.patch deleted file mode 100644 index 6306fadf74dd..000000000000 --- a/0004-hcrypto-rename-abort-to-_afscrypto_abort.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 25bebacfd7bf4461cb49bae9cae2a1e97b9cd1c5 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Sun, 9 Jul 2023 18:45:15 -0600 -Subject: [PATCH 04/10] hcrypto: rename abort to _afscrypto_abort -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The Linux 6.5 commit: - panic: make function declarations visible (d9cdb43189) -added a declaration for abort into panic.h. - -When building the Linux kernel module, the build fails with the -following: - - src/crypto/hcrypto/kernel/config.h:95:20: error: static declaration of - ‘abort’ follows non-static declaration - 95 | static_inline void abort(void) {osi_Panic("hckernel aborting\n" - );} - | ^~~~~ - ... - from ./include/linux/wait.h:9, - from /openafs/src/afs/sysincludes.h:118, - from /openafs/src/crypto/hcrypto/kernel/config.h:30: - ./include/linux/panic.h:36:6: note: previous declaration of ‘abort’ - with type ‘void(void)’ - 36 | void abort(void); - | ^~~~~ - -Update the declaration in hcrypto/kernel/config.h to change the function -name from abort to _afscrypto_abort and use a preprocessor define to -map abort to _afscrypto_abort. - -Reviewed-on: https://gerrit.openafs.org/15501 -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Tested-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit c4c16890d9d2829f6bef1ef58feafb30b1d59da3) - -Change-Id: I54cc9156b98320d04fe6f7bb595a150d5ba87b49 -Reviewed-on: https://gerrit.openafs.org/15523 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 538f450033a67e251b473ff92238b3124b85fc72) ---- - src/crypto/hcrypto/kernel/config.h | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/src/crypto/hcrypto/kernel/config.h b/src/crypto/hcrypto/kernel/config.h -index 9623fa9e7..ea0f60b64 100644 ---- a/src/crypto/hcrypto/kernel/config.h -+++ b/src/crypto/hcrypto/kernel/config.h -@@ -91,7 +91,13 @@ extern int osi_readRandom(void *, afs_size_t); - static_inline pid_t getpid(void) {return 1;}; - #endif - static_inline int open(const char *path, int flags, ...) {return -1;} --static_inline void abort(void) {osi_Panic("hckernel aborting\n");} -+ -+#ifdef abort -+# undef abort -+#endif -+#define abort _afscrypto_abort -+static_inline void _afscrypto_abort(void) {osi_Panic("hckernel aborting\n");} -+ - static_inline void rk_cloexec(int fd) {} - static_inline ssize_t read(int d, void *buf, size_t nbytes) {return -1;} - static_inline int close(int d) {return -1;} --- -2.43.0 - diff --git a/0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch b/0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch deleted file mode 100644 index 4793e9632d40..000000000000 --- a/0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch +++ /dev/null @@ -1,126 +0,0 @@ -From bb5b276d6036735cfacad9b27e8d0e50eb2ef819 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Tue, 29 Aug 2023 14:58:10 -0600 -Subject: [PATCH 05/10] linux: Replace fop iterate with fop iterate_shared - -The Linux 6.5 commit: - 'vfs: get rid of old '->iterate' directory operation' (3e32715496) -removed the filesystem_operations iterate method. The replacement -method, iterate_shared, was introduced with the Linux 4.6 commit: - 'introduce a parallel variant of ->iterate()' (6192269444) - -The above commits indicate that the iterate_shared is an "almost" -drop-in replacement for iterate. The vfs documentation for -iterate_shared has caveats on the implementation (serializing in-core -per-inode or per-dentry modifications and using d_alloc_parallel if -doing dcache pre-seeding). A wrapper is provided to assist filesystems -with the migration from iterate to iterate_shared. Until it can be -verified that afs_linux_readdir meets the above requirements, we will -use the wrapper (ref 3e32715496 commit) - -Add configure tests for the iterate_shared file_operations member and -for the wrap_directory_iterator function. - -Update osi_vnodeops.c to use iterate_shared and the wrapper if they are -both available. - -Reviewed-on: https://gerrit.openafs.org/15528 -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -(cherry picked from commit 7437f4d37719ea53711e06ac9675dad1abd6769e) - -Change-Id: Id00cfab2c0b51c2167fe19cd9cf7f136450ff174 -Reviewed-on: https://gerrit.openafs.org/15558 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 6de0a646036283266e1d4aeb583e426005ca5ad4) ---- - src/afs/LINUX/osi_vnodeops.c | 19 +++++++++++++++---- - src/cf/linux-kernel-func.m4 | 10 ++++++++++ - src/cf/linux-kernel-struct.m4 | 1 + - 3 files changed, 26 insertions(+), 4 deletions(-) - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index dd8b39d5d..fb62752e6 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -54,14 +54,16 @@ - # define D_SPLICE_ALIAS_RACE - #endif - -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+# define USE_FOP_ITERATE 1 -+#elif defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE) && !defined(FMODE_KABI_ITERATE) - /* Workaround for RH 7.5 which introduced file operation iterate() but requires - * each file->f_mode to be marked with FMODE_KABI_ITERATE. Instead OpenAFS will - * continue to use file opearation readdir() in this case. - */ --#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE) && !defined(FMODE_KABI_ITERATE) --#define USE_FOP_ITERATE 1 -+# define USE_FOP_ITERATE 1 - #else --#undef USE_FOP_ITERATE -+# undef USE_FOP_ITERATE - #endif - - /* Kernels from before 2.6.19 may not be able to return errors from -@@ -909,10 +911,19 @@ out: - crfree(credp); - return afs_convert_code(code); - } -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+# if defined(WRAP_DIR_ITER) -+WRAP_DIR_ITER(afs_linux_readdir) /* Adds necessary locking for iterate_shared */ -+# else -+# error the Linux provided macro WRAP_DIR_ITER is not available -+# endif -+#endif - - struct file_operations afs_dir_fops = { - .read = generic_read_dir, --#if defined(USE_FOP_ITERATE) -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+ .iterate_shared = shared_afs_linux_readdir, -+#elif defined(USE_FOP_ITERATE) - .iterate = afs_linux_readdir, - #else - .readdir = afs_linux_readdir, -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 811954915..145725575 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -225,6 +225,16 @@ AC_CHECK_LINUX_FUNC([register_sysctl], - #include <linux/sysctl.h>], - [(void)register_sysctl(NULL, NULL);]) - -+dnl Linux 6.5 removed the file_operations method 'iterate'. Filesystems should -+dnl using the iterate_shared method (introduced in linux 4.6). Linux 6.4 -+dnl provides a wrapper that can be used for filesystems that haven't fully -+dnl converted to meet the iterate_shared requirements. -+ -+AC_CHECK_LINUX_FUNC([wrap_directory_iterator], -+ [#include <linux/kernel.h> -+ #include <linux/fs.h>], -+ [(void)wrap_directory_iterator(NULL, NULL, NULL);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], -diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4 -index 8082308e8..52e10acb8 100644 ---- a/src/cf/linux-kernel-struct.m4 -+++ b/src/cf/linux-kernel-struct.m4 -@@ -23,6 +23,7 @@ AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h]) - AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h]) -+AC_CHECK_LINUX_STRUCT([file_operations], [iterate_shared], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h]) --- -2.43.0 - diff --git a/0006-dir-Introduce-struct-DirEntryFlex.patch b/0006-dir-Introduce-struct-DirEntryFlex.patch deleted file mode 100644 index 1f1c52dac5b7..000000000000 --- a/0006-dir-Introduce-struct-DirEntryFlex.patch +++ /dev/null @@ -1,236 +0,0 @@ -From d8d6ce951cc2f937cfe9369ab940c278909c26d2 Mon Sep 17 00:00:00 2001 -From: Mark Vitale <mvitale@sinenomine.net> -Date: Fri, 15 Sep 2023 15:01:56 -0400 -Subject: [PATCH 06/10] dir: Introduce struct DirEntryFlex -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The directory package as implemented in AFS-2 allocates space for each -directory entry as a DirEntry struct followed by 0-8 contiguous -DirXEntry structs, as needed. This is implemented by: - - - afs_dir_NameBlobs calculates the number of blocks needed - - FindBlobs allocates and returns index of entry - - afs_dir_GetBlob returns pointer to 1st DirEntry struct - -After this, we populate DirEntry (and any contiguous DirXEntry blocks) -with open code. Most existing code writes the entry's name via a string -copy operation to DirEntry->name, which is only 16 bytes long. -Therefore, for dir entry names that are 16 bytes or longer, OpenAFS -routinely does string copies that look like buffer overruns. This has -not previously caused problems because the OpenAFS code has arranged for -a sufficiently large amount of contiguous memory to be available. -However, this remains undefined behavior in the C abstract virtual -machine; thus compilers are not required to produce safe operation. - -Recent changes in the OpenAFS build chain have made this approach no -longer viable: - -1) Linux 6.5 commit df8fc4e934c12b 'kbuild: Enable --fstrict-flex-arrays=3' modified the hardening of several kernel -string operations when running with CONFIG_FORTIFY_SOURCE=y. - -2) gcc 13 commit 79a89108dd352cd9288f5de35481b1280c7588a5 -'__builtin_dynamic_object_size: Recognize builtin' provides some -enhancements to _builtin_object_size. The Linux commit above will now -use these when the kernel is built with gcc 13. - -When OpenAFS is built under Linux 6.5 or higher and gcc 13 or higher, -the hardened strlcpy will BUG for directory entry names longer than 16 -characters. - -Since there are multiple places where OpenAFS writes directory names, -there are several symptoms that may manifest. However, the first one is -usually a kernel BUG at cache manager initialization if running with -afsd -dynroot _and_ there are any cell names 15 characters or longer in -the client CellServDB. (A 15-character cellname reaches the 16 -character limit when -dyrnoot adds the RW mountpoint ".<cellname>".) - -Address this by using flexible arrays (standardized with C99). A -flexible array is a variable-length array that is declared with no size -at all, e.g., name[]. - -Create an autoconf test to determine whether the compiler supports -flexible arrays. - -Create a new struct DirEntryFlex. If the compiler supports -flexible arrays, define name[]; otherwise retain the name[16] -definition. - -Whenever we write a directory name, use DirEntryFlex so that any -hardening will be satisfied that there is sufficient space for the name. - -However, the actual guarantee that this is true is still provided by the -OpenAFS directory routines mentioned above - all of these remain -unchanged. - -The DirEntry struct remains unchanged for continued use in OpenAFS, as -well as for any out-of-tree users of the directory package. - -Reviewed-on: https://gerrit.openafs.org/15573 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Cheyenne Wills <cwills@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -(cherry picked from commit e2ec16cf941b0aadfbd54fc2f52edd58b62e232d) - -Change-Id: Ibf6d3549ba1e941c957e98ef4875152d865c9358 -Reviewed-on: https://gerrit.openafs.org/15599 -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit fd527549c2d2b29a955f8c0427ac67c5d49ef38c) ---- - acinclude.m4 | 1 + - src/afs/LINUX/osi_vnodeops.c | 4 ++-- - src/afs/afs_dynroot.c | 4 ++-- - src/cf/c-flexible-array.m4 | 16 ++++++++++++++++ - src/dir/dir.c | 4 ++-- - src/dir/dir.h | 26 ++++++++++++++++++++++++++ - 6 files changed, 49 insertions(+), 6 deletions(-) - create mode 100644 src/cf/c-flexible-array.m4 - -diff --git a/acinclude.m4 b/acinclude.m4 -index 16339682d..812bece98 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -56,6 +56,7 @@ OPENAFS_HCRYPTO - OPENAFS_CURSES - OPENAFS_C_ATTRIBUTE - OPENAFS_C_PRAGMA -+OPENAFS_C_FLEXIBLE_ARRAY - OPENAFS_MORE_ROKEN_CHECKS - OPENAFS_NETDB_CHECKS - OPENAFS_ROKEN_HEADERS -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index fb62752e6..dc1e32f98 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -426,7 +426,7 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) - int code; - int offset; - afs_int32 dirpos; -- struct DirEntry *de; -+ struct DirEntryFlex *de; - struct DirBuffer entry; - ino_t ino; - int len; -@@ -531,7 +531,7 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) - goto unlock_out; - } - -- de = (struct DirEntry *)entry.data; -+ de = entry.data; - ino = afs_calc_inum (avc->f.fid.Cell, avc->f.fid.Fid.Volume, - ntohl(de->fid.vnode)); - len = strlen(de->name); -diff --git a/src/afs/afs_dynroot.c b/src/afs/afs_dynroot.c -index 281b168eb..37200abc1 100644 ---- a/src/afs/afs_dynroot.c -+++ b/src/afs/afs_dynroot.c -@@ -228,7 +228,7 @@ afs_dynroot_addDirEnt(struct DirHeader *dirHeader, int *curPageP, - { - char *dirBase = (char *)dirHeader; - struct PageHeader *pageHeader; -- struct DirEntry *dirEntry; -+ struct DirEntryFlex *dirEntry; - int sizeOfEntry, i, t1, t2; - int curPage = *curPageP; - int curChunk = *curChunkP; -@@ -257,7 +257,7 @@ afs_dynroot_addDirEnt(struct DirHeader *dirHeader, int *curPageP, - dirHeader->alloMap[curPage] = EPP - 1; - } - -- dirEntry = (struct DirEntry *)(pageHeader + curChunk); -+ dirEntry = (struct DirEntryFlex *)(pageHeader + curChunk); - dirEntry->flag = 1; - dirEntry->length = 0; - dirEntry->next = 0; -diff --git a/src/cf/c-flexible-array.m4 b/src/cf/c-flexible-array.m4 -new file mode 100644 -index 000000000..e281166f8 ---- /dev/null -+++ b/src/cf/c-flexible-array.m4 -@@ -0,0 +1,16 @@ -+AC_DEFUN([OPENAFS_C_FLEXIBLE_ARRAY],[ -+ dnl Check to see if the compiler support C99 flexible arrays, e.g., var[] -+ AC_MSG_CHECKING([for C99 flexible arrays]) -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -+ struct flexarraytest { -+ int flag; -+ int numbers[]; -+ }; -+ ]], [[]]) -+ ], -+ [AC_MSG_RESULT([yes]) -+ AC_DEFINE([HAVE_FLEXIBLE_ARRAY], [1], -+ [Define to 1 if your compiler supports C99 flexible arrays.]) -+ ],[AC_MSG_RESULT([no])] -+ ) -+]) -diff --git a/src/dir/dir.c b/src/dir/dir.c -index bc5bb046d..5e8aff7db 100644 ---- a/src/dir/dir.c -+++ b/src/dir/dir.c -@@ -99,7 +99,7 @@ afs_dir_Create(dir_file_t dir, char *entry, void *voidfid) - int blobs, firstelt; - int i; - struct DirBuffer entrybuf, prevbuf, headerbuf; -- struct DirEntry *ep; -+ struct DirEntryFlex *ep; - struct DirHeader *dhp; - int code; - size_t rlen; -@@ -127,7 +127,7 @@ afs_dir_Create(dir_file_t dir, char *entry, void *voidfid) - /* First, we fill in the directory entry. */ - if (afs_dir_GetBlob(dir, firstelt, &entrybuf) != 0) - return EIO; -- ep = (struct DirEntry *)entrybuf.data; -+ ep = entrybuf.data; - - ep->flag = FFIRST; - ep->fid.vnode = htonl(vfid[1]); -diff --git a/src/dir/dir.h b/src/dir/dir.h -index f5c8eef42..ad6db07e6 100644 ---- a/src/dir/dir.h -+++ b/src/dir/dir.h -@@ -51,6 +51,32 @@ struct DirHeader { - unsigned short hashTable[NHASHENT]; - }; - -+/* -+ * This struct is just a copy of DirEntry, but with name defined as a flexible -+ * array if possible. -+ * -+ * Using this helps us convince safety-minded string functions (e.g. -+ * _FORTIFY_SOURCE) that an OpenAFS directory entry name really does fit -+ * in the allotted space, and thus avoid undefined behavior. -+ */ -+struct DirEntryFlex { -+ char flag; -+ char length; /* currently unused */ -+ unsigned short next; -+ struct MKFid fid; -+#ifdef HAVE_FLEXIBLE_ARRAY -+ char name[]; -+#else -+ char name[16]; -+#endif -+}; -+ -+/* -+ * This struct was the original format for directory entries in very early -+ * versions of AFS. But now it just represents the minimum possible on-disk -+ * representation of a directory entry. The 16-character limit was relieved by -+ * the introduction of extension struct DirXEntry in AFS-2. -+*/ - struct DirEntry { - /* A directory entry */ - char flag; --- -2.43.0 - diff --git a/0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch b/0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch deleted file mode 100644 index 2d4ff432a702..000000000000 --- a/0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch +++ /dev/null @@ -1,61 +0,0 @@ -From c90ef42fcbe39270e8bfc3089e2cf1ce7ecbce16 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Wed, 6 Sep 2023 11:41:55 -0600 -Subject: [PATCH 07/10] LINUX: Pass an array of structs to register_sysctl - -The Linux 6.6 commit "sysctl: Add size to register_sysctl" (9edbfe92a0) -renamed the Linux function register_sysctl() to register_sysctl_sz() and -added a size parameter. For backward compatibility, a macro, -register_sysctl, is provided. The macro calculates the size of the -ctl_table being registered and passes the size to register_sysctl_sz. -However, in order to perform the size calculation, an array of ctl_table -structures must be passed as the 2nd parameter. - -This change only affects the autoconf test used to determine if Linux -provides register_sysctl. - -Update the autoconf test for register_sysctl to use an actual ctl_table -structure for the 2nd parameter instead of a NULL. - -Reviewed-on: https://gerrit.openafs.org/15559 -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -(cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154) - -Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f -Reviewed-on: https://gerrit.openafs.org/15575 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 5b647bf17a878271e1ce9882e41663770ee73528) ---- - src/cf/linux-kernel-func.m4 | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 145725575..105e58cce 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -220,10 +220,13 @@ AC_CHECK_LINUX_FUNC([block_dirty_folio], - dnl Linux 6.5 removed the Linux function register_sysctl_table(), which - dnl was deprecated in Linux 6.3 in favor of register_sysctl() which was - dnl introduced in Linux 3.3 -+dnl Linux 6.6 changed the function register_sysctl to a macro that requires -+dnl an array of ctl_table structures as its 2nd parameter - AC_CHECK_LINUX_FUNC([register_sysctl], -- [#include <linux/kernel.h> -- #include <linux/sysctl.h>], -- [(void)register_sysctl(NULL, NULL);]) -+ [#include <linux/kernel.h> -+ #include <linux/sysctl.h>], -+ [[static struct ctl_table cf_sysctl_table[1]; -+ (void)register_sysctl(NULL, cf_sysctl_table);]]) - - dnl Linux 6.5 removed the file_operations method 'iterate'. Filesystems should - dnl using the iterate_shared method (introduced in linux 4.6). Linux 6.4 --- -2.43.0 - diff --git a/0008-Linux-6.6-convert-to-ctime-accessor-functions.patch b/0008-Linux-6.6-convert-to-ctime-accessor-functions.patch deleted file mode 100644 index f6611f8c0a76..000000000000 --- a/0008-Linux-6.6-convert-to-ctime-accessor-functions.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 767e4924190a6db61a98a633894c25c74af39fd5 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Thu, 5 Oct 2023 14:44:49 -0600 -Subject: [PATCH 08/10] Linux 6.6: convert to ctime accessor functions - -The Linux 6.6 commit "fs: add ctime accessors infrastructure" -(9b6304c1d5) added accessor functions for an inode's ctime member. -A follow on commit "fs: rename i_ctime field to __i_ctime" (13bc244578) -changed the name of the inode member ctime to __i_ctime to indicate it's -a private member. - -Add an autoconf test for the ctime accessor function -'inode_set_ctime()'. - -Add an afs_inode_set_ctime to LINUX/osi_machdep.h that is either defined -as a macro to Linux's inode_set_ctime, or implements a static inline -function to set a inode's ctime. - -Convert the setting of an inode's ctime to use afs_inode_set_ctime(). - -For more information behind the Linux change, see the commit message -for: - "Merge tag 'v6.6-vfs.ctime' - of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs" (615e95831) - -Reviewed-on: https://gerrit.openafs.org/15560 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Tested-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 072c7934cd1b99052882f02294f7036d422b6cf1) - - Conflicts: - src/cf/linux-kernel-func.m4 (context) - -Change-Id: I729408d12a7946f5778b036ca7e2c14299f3ce8e -Reviewed-on: https://gerrit.openafs.org/15589 -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 6413fdbc913834f2884989e5811841f4ccea2b5f) ---- - src/afs/LINUX/osi_machdep.h | 11 +++++++++++ - src/afs/LINUX/osi_vnodeops.c | 3 +-- - src/cf/linux-kernel-func.m4 | 6 ++++++ - 3 files changed, 18 insertions(+), 2 deletions(-) - -diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h -index 2220e0530..f9ceb359e 100644 ---- a/src/afs/LINUX/osi_machdep.h -+++ b/src/afs/LINUX/osi_machdep.h -@@ -118,6 +118,17 @@ osi_GetTime(osi_timeval32_t *atv) - } - #endif - -+#if defined(HAVE_LINUX_INODE_SET_CTIME) -+# define afs_inode_set_ctime(inode, sec, nsec) inode_set_ctime((inode), (sec), (nsec)) -+#else -+static inline void -+afs_inode_set_ctime(struct inode *inode, time64_t sec, long nsec) -+{ -+ inode->i_ctime.tv_sec = sec; -+ inode->i_ctime.tv_nsec = nsec; -+} -+#endif -+ - #undef gop_lookupname - #define gop_lookupname osi_lookupname - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index dc1e32f98..903b5dd5c 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1144,8 +1144,7 @@ vattr2inode(struct inode *ip, struct vattr *vp) - * any time the sysname list changes. - */ - ip->i_mtime.tv_nsec = afs_sysnamegen; -- ip->i_ctime.tv_sec = vp->va_ctime.tv_sec; -- ip->i_ctime.tv_nsec = 0; -+ afs_inode_set_ctime(ip, vp->va_ctime.tv_sec, 0); - } - - /* afs_notify_change -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 105e58cce..dc26b6056 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -238,6 +238,12 @@ AC_CHECK_LINUX_FUNC([wrap_directory_iterator], - #include <linux/fs.h>], - [(void)wrap_directory_iterator(NULL, NULL, NULL);]) - -+dnl Linux 6.6 requires the use of a getter/setter for accessing a inode's -+dnl ctime member. Test for the setter inode_set_ctime -+AC_CHECK_LINUX_FUNC([inode_set_ctime], -+ [#include <linux/fs.h>], -+ [inode_set_ctime(NULL, 0, 0);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], --- -2.43.0 - diff --git a/0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch b/0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch deleted file mode 100644 index 4d81dcaf80c6..000000000000 --- a/0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 75ada815f0177b2e90ee8e2f8b08124eb9abf604 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Mon, 18 Sep 2023 12:23:01 -0600 -Subject: [PATCH 09/10] Linux 6.6: Pass request_mask to generic_fillattr - -The Linux 6.6 commit: "fs: pass the request_mask to generic_fillattr" -(0d72b92883) added an additional parameter to Linux's -generic_fillattr() function. - -For openafs, generic_fillattr() is called from the inode_operations -method "getattr", which is implemented in afs_linux_getattr(). The value -for the request_mask parameter is an existing parameter that is passed -to the inode_operations "getattr" method. - -Add an autoconf test for 4 parameters to the generic_fillattr function -and update afs_linux_getattr() to pass the request_mask to -generic_fillattr(). - -Reviewed-on: https://gerrit.openafs.org/15561 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Tested-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 4fed232b80fb1ad6c0e1dfb42ed8d8e1e6821dd7) - -Change-Id: I5cddc56c5e605a6c5e4f7f3691eafec8ca589d2c -Reviewed-on: https://gerrit.openafs.org/15590 -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> -(cherry picked from commit 4f1d8104d17d2b4e95c7abaf5498db6b80aefa8f) ---- - src/afs/LINUX/osi_vnodeops.c | 4 ++++ - src/cf/linux-kernel-assorted.m4 | 1 + - src/cf/linux-test4.m4 | 13 +++++++++++++ - 3 files changed, 18 insertions(+) - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 903b5dd5c..86dd7b473 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1195,7 +1195,11 @@ afs_linux_getattr(struct mnt_idmap *idmap, const struct path *path, struct kstat - { - int err = afs_linux_revalidate(path->dentry); - if (!err) { -+# if defined(GENERIC_FILLATTR_TAKES_REQUEST_MASK) -+ generic_fillattr(afs_mnt_idmap, request_mask, path->dentry->d_inode, stat); -+# else - generic_fillattr(afs_mnt_idmap, path->dentry->d_inode, stat); -+# endif - } - return err; - } -diff --git a/src/cf/linux-kernel-assorted.m4 b/src/cf/linux-kernel-assorted.m4 -index b3a11bc3a..49827d5be 100644 ---- a/src/cf/linux-kernel-assorted.m4 -+++ b/src/cf/linux-kernel-assorted.m4 -@@ -58,6 +58,7 @@ LINUX_IOP_LOOKUP_TAKES_UNSIGNED - LINUX_D_INVALIDATE_IS_VOID - LINUX_KERNEL_READ_OFFSET_IS_LAST - LINUX_KEYRING_SEARCH_TAKES_RECURSE -+LINUX_GENERIC_FILLATTR_TAKES_REQUEST_MASK - ]) - - -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 0d6b645f4..f15c6b94d 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -853,3 +853,16 @@ AC_DEFUN([LINUX_KEYRING_SEARCH_TAKES_RECURSE], [ - [define if your keyring_search has the recurse parameter], - []) - ]) -+ -+dnl Linux 6.6 added the 'request_mask' parameter to generic_fillattr. -+AC_DEFUN([LINUX_GENERIC_FILLATTR_TAKES_REQUEST_MASK], [ -+ AC_CHECK_LINUX_BUILD([whether generic_fillattr has the request_mask parameter], -+ [ac_cv_linux_func_generic_fillattr_takes_request_mask], -+ [#include <linux/fs.h>], -+ [ -+ generic_fillattr(NULL, 0, NULL, NULL); -+ ], -+ [GENERIC_FILLATTR_TAKES_REQUEST_MASK], -+ [define if your generic_fillattr has the request_mask_parameter], -+ []) -+]) --- -2.43.0 - diff --git a/0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch b/0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch deleted file mode 100644 index f410dd938ee1..000000000000 --- a/0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 99d55938f14c517c1c81e5d91fed38ac2ad8a4b9 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills <cwills@sinenomine.net> -Date: Thu, 9 Nov 2023 10:38:29 -0700 -Subject: [PATCH 10/10] Linux 6.7: convert to inode a/mtime accessor funcs - -The Linux 6.7 commit "fs: new accessor methods for atime and mtime" -(077c212f03) is a follow up to the Linux 6.6 commit "fs: add ctime -accessors infrastructure" (9b6304c1d5) - -With the above 6.7 commit, the inode's i_atime and i_mtime are renamed -to __i_atime and __i_mtime and accessing these members should use the -new accessor functions. - -This commit is similar to the OpenAFS commit "Linux 6.6: convert to -ctime accessor functions" (072c7934cd1) - -Add autoconf tests to detect when we need to use the new accessors and -introduce new wrapper functions to get and set an inode's atime and -mtime. - -Note, unlike the (072c7934cd1) commit, we need to add support for -reading an inode's atime and mtime, so this commit has the getters for -the atime and mtime members. - -Reviewed-on: https://gerrit.openafs.org/15597 -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 8962767a7e27f8db9dc9001999edf573be706d66) - -Change-Id: If5f58df74f37749b7dfdc52172a8e9573d849ecd -Reviewed-on: https://gerrit.openafs.org/15600 -Reviewed-by: Andrew Deason <adeason@sinenomine.net> -Reviewed-by: Mark Vitale <mvitale@sinenomine.net> -Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> -Tested-by: BuildBot <buildbot@rampaginggeek.com> -Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> -(cherry picked from commit 6edf9d350c6ffd9d5e51fb8106701c1bc2f6a4d9) ---- - src/afs/LINUX/osi_file.c | 5 ++--- - src/afs/LINUX/osi_machdep.h | 29 +++++++++++++++++++++++++++++ - src/afs/LINUX/osi_vnodeops.c | 6 ++---- - src/cf/linux-kernel-func.m4 | 8 ++++++++ - 4 files changed, 41 insertions(+), 7 deletions(-) - -diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c -index b8bdce7e7..6dbfc155f 100644 ---- a/src/afs/LINUX/osi_file.c -+++ b/src/afs/LINUX/osi_file.c -@@ -175,9 +175,8 @@ afs_osi_Stat(struct osi_file *afile, struct osi_stat *astat) - { - AFS_STATCNT(osi_Stat); - astat->size = i_size_read(OSIFILE_INODE(afile)); -- astat->mtime = OSIFILE_INODE(afile)->i_mtime.tv_sec; -- astat->atime = OSIFILE_INODE(afile)->i_atime.tv_sec; -- -+ astat->mtime = afs_inode_get_mtime_sec(OSIFILE_INODE(afile)); -+ astat->atime = afs_inode_get_atime_sec(OSIFILE_INODE(afile)); - return 0; - } - -diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h -index f9ceb359e..f08ae8223 100644 ---- a/src/afs/LINUX/osi_machdep.h -+++ b/src/afs/LINUX/osi_machdep.h -@@ -128,6 +128,35 @@ afs_inode_set_ctime(struct inode *inode, time64_t sec, long nsec) - inode->i_ctime.tv_nsec = nsec; - } - #endif -+#if defined(HAVE_LINUX_INODE_ATIME_MTIME_ACCESSORS) -+# define afs_inode_set_atime(inode, sec, nsec) inode_set_atime((inode), (sec), (nsec)) -+# define afs_inode_get_atime_sec(inode) inode_get_atime_sec((inode)) -+# define afs_inode_set_mtime(inode, sec, nsec) inode_set_mtime((inode), (sec), (nsec)) -+# define afs_inode_get_mtime_sec(inode) inode_get_mtime_sec((inode)) -+#else -+static inline void -+afs_inode_set_atime(struct inode *inode, time_t sec, long nsec) -+{ -+ inode->i_atime.tv_sec = sec; -+ inode->i_atime.tv_nsec = nsec; -+} -+static inline time_t -+afs_inode_get_atime_sec(struct inode *inode) -+{ -+ return inode->i_atime.tv_sec; -+} -+static inline void -+afs_inode_set_mtime(struct inode *inode, time_t sec, long nsec) -+{ -+ inode->i_mtime.tv_sec = sec; -+ inode->i_mtime.tv_nsec = nsec; -+} -+static inline time_t -+afs_inode_get_mtime_sec(struct inode *inode) -+{ -+ return inode->i_mtime.tv_sec; -+} -+#endif /* HAVE_LINUX_INODE_ATIME_MTIME_ACCESSORS */ - - #undef gop_lookupname - #define gop_lookupname osi_lookupname -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 86dd7b473..7e85aa552 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1136,14 +1136,12 @@ vattr2inode(struct inode *ip, struct vattr *vp) - ip->i_uid = afs_make_kuid(vp->va_uid); - ip->i_gid = afs_make_kgid(vp->va_gid); - i_size_write(ip, vp->va_size); -- ip->i_atime.tv_sec = vp->va_atime.tv_sec; -- ip->i_atime.tv_nsec = 0; -- ip->i_mtime.tv_sec = vp->va_mtime.tv_sec; -+ afs_inode_set_atime(ip, vp->va_atime.tv_sec, 0); - /* Set the mtime nanoseconds to the sysname generation number. - * This convinces NFS clients that all directories have changed - * any time the sysname list changes. - */ -- ip->i_mtime.tv_nsec = afs_sysnamegen; -+ afs_inode_set_mtime(ip, vp->va_mtime.tv_sec, afs_sysnamegen); - afs_inode_set_ctime(ip, vp->va_ctime.tv_sec, 0); - } - -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index dc26b6056..7f3000fc1 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -244,6 +244,14 @@ AC_CHECK_LINUX_FUNC([inode_set_ctime], - [#include <linux/fs.h>], - [inode_set_ctime(NULL, 0, 0);]) - -+dnl Linux 6.7 requires the use of a getter/setter for accessing a inode's -+dnl atime and mtime members. Test for the setters. Assummes that the -+dnl getters are present if the setters are. -+AC_CHECK_LINUX_FUNC([inode_atime_mtime_accessors], -+ [#include <linux/fs.h>], -+ [inode_set_atime(NULL, 0, 0); -+ inode_set_mtime(NULL, 0, 0);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], --- -2.43.0 - @@ -5,8 +5,8 @@ pkgname=openafs-modules _srcname=openafs -pkgver=1.8.10 -pkgrel=6 +pkgver=1.8.11pre1 +pkgrel=1 pkgdesc="Kernel module for OpenAFS" arch=('i686' 'x86_64' 'armv7h') url="http://www.openafs.org" @@ -16,28 +16,8 @@ makedepends=('libelf' 'linux-headers') conflicts=('openafs-features-libafs' 'openafs<1.6.6-2') options=(!emptydirs) install=openafs-modules.install -source=(http://openafs.org/dl/openafs/${pkgver}/${_srcname}-${pkgver}-src.tar.bz2 - 0001-Linux-6.5-Replace-generic_file_splice_read.patch - 0002-LINUX-Make-sysctl-definitions-more-concise.patch - 0003-Linux-6.5-Use-register_sysctl.patch - 0004-hcrypto-rename-abort-to-_afscrypto_abort.patch - 0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch - 0006-dir-Introduce-struct-DirEntryFlex.patch - 0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch - 0008-Linux-6.6-convert-to-ctime-accessor-functions.patch - 0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch - 0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch) -sha256sums=('9fec11364623549e8db7374072f5c8f01b841f6bfe7e85673cbce35ff43ffb07' - '91cf2ee76afaacd7f85ec3cc9bcf35920f54e8b11b68b3b3d8036af742a44e4d' - '0779c389864cf514a04734abd318a4e98db88889b04b2fdbe8e2a3816cb872eb' - 'e22896c9cff526e01336849e2032c235707450cf93f6131a8a7e3c86d84e8e5c' - '5dacbca5a5afa6ff99b2976fcc70fa760a4f5e9286c21a05ec233b09ce37bb11' - '5213e96c818842210736927e9ef5669fb6b35e6755bb71995fadf3c2ba44e04c' - 'ee60fa3f52a397510eb5c6e2e664eb4e66e9620180a74e54d9c8e9677691f8f0' - '2f2bea9c8a9ea6122af2456725faa41b014687b1681a3c20a0918adf879bfb86' - '12f2f983dd7845758a1d0e6ab1c85358c5660022137dc4f00c3a3d4f8443e7f3' - '37abfa35b2b78956e258137fc66197c118084802f1fb17d4ab9546010c693e6d' - 'cf47ce835da5015d4b0621223a4edad5b096790a4aecac2f6141b70164598243') +source=(http://openafs.org/dl/openafs/candidate/${pkgver}/${_srcname}-${pkgver}-src.tar.bz2) +sha256sums=('dfdb4bcd79e060180ebfd127d0447eceb716be0fbe07712ee7f9ac1904b42c82') # Heuristic to determine version of installed kernel # You can modify this if the heuristic fails @@ -52,24 +32,8 @@ _extramodules="/usr/lib/modules/${_kernelver}/extramodules" prepare() { cd "${srcdir}/${_srcname}-${pkgver}" - # Patches for Linux 6.5 - patch -p1 < "${srcdir}"/0001-Linux-6.5-Replace-generic_file_splice_read.patch - patch -p1 < "${srcdir}"/0002-LINUX-Make-sysctl-definitions-more-concise.patch - patch -p1 < "${srcdir}"/0003-Linux-6.5-Use-register_sysctl.patch - patch -p1 < "${srcdir}"/0004-hcrypto-rename-abort-to-_afscrypto_abort.patch - patch -p1 < "${srcdir}"/0005-linux-Replace-fop-iterate-with-fop-iterate_shared.patch - patch -p1 < "${srcdir}"/0006-dir-Introduce-struct-DirEntryFlex.patch - - # Patches for Linux 6.6 - patch -p1 < "${srcdir}"/0007-LINUX-Pass-an-array-of-structs-to-register_sysctl.patch - patch -p1 < "${srcdir}"/0008-Linux-6.6-convert-to-ctime-accessor-functions.patch - patch -p1 < "${srcdir}"/0009-Linux-6.6-Pass-request_mask-to-generic_fillattr.patch - - # Patches for Linux 6.7 - patch -p1 < "${srcdir}"/0010-Linux-6.7-convert-to-inode-a-mtime-accessor-funcs.patch - # Only needed when changes to configure were made - ./regen.sh -q + #./regen.sh -q } build() { |