summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Laß2021-07-30 23:51:40 +0200
committerMichael Laß2021-07-30 23:51:40 +0200
commita3eeb7a932ee2c9abd8828c37e5d93021957d02b (patch)
tree8cfc3af388ee843e6bc933be5717b264b63daaa6
parent2c0fcd8e9b26cae95bf9fbd92508beedb4c629b7 (diff)
downloadaur-a3eeb7a932ee2c9abd8828c37e5d93021957d02b.tar.gz
Update to 1.8.8
-rw-r--r--.SRCINFO33
-rw-r--r--0001-Avoid-duplicate-definitions-of-globals.patch353
-rw-r--r--0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch159
-rw-r--r--0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch49
-rw-r--r--0004-LINUX-5.8-use-lru_cache_add.patch108
-rw-r--r--0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch169
-rw-r--r--0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch73
-rw-r--r--0007-Linux-Refactor-test-for-32bit-compat.patch212
-rw-r--r--0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch98
-rw-r--r--0009-LINUX-Introduce-afs_d_path.patch67
-rw-r--r--0010-Linux-Create-wrapper-for-setattr_prepare.patch65
-rw-r--r--0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch289
-rw-r--r--PKGBUILD55
13 files changed, 11 insertions, 1719 deletions
diff --git a/.SRCINFO b/.SRCINFO
index e2827ad22126..205db53b8b26 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = openafs-modules-dkms
pkgdesc = Kernel module for OpenAFS (dkms)
- pkgver = 1.8.7
- pkgrel = 3
+ pkgver = 1.8.8
+ pkgrel = 1
url = http://www.openafs.org
arch = i686
arch = x86_64
@@ -10,37 +10,14 @@ pkgbase = openafs-modules-dkms
depends = dkms
depends = libelf
depends = openafs
- provides = openafs-modules=1.8.7
+ provides = openafs-modules=1.8.8
conflicts = openafs-features-libafs
conflicts = openafs-modules
conflicts = openafs<1.6.6-2
options = !emptydirs
- source = http://openafs.org/dl/openafs/1.8.7/openafs-1.8.7-src.tar.bz2
+ source = http://openafs.org/dl/openafs/1.8.8/openafs-1.8.8-src.tar.bz2
source = dkms.conf
- source = 0001-Avoid-duplicate-definitions-of-globals.patch
- source = 0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
- source = 0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
- source = 0004-LINUX-5.8-use-lru_cache_add.patch
- source = 0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
- source = 0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
- source = 0007-Linux-Refactor-test-for-32bit-compat.patch
- source = 0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch
- source = 0009-LINUX-Introduce-afs_d_path.patch
- source = 0010-Linux-Create-wrapper-for-setattr_prepare.patch
- source = 0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch
- sha256sums = 53543a561fce67714fec9f2a6bf408c5cc1d061c7dc9d1459458275e8ccbfa79
+ sha256sums = daa8ef86a7727facfcde3bc97a6ad143129c1c25ee35f3347080ec7e9d284da0
sha256sums = 5ea5e184f9b44f5ed45817d2b5a10149d15c8c54f49e0b5b4b773652673cb9b0
- sha256sums = 909ebe2f2f82187ec5c8bd19a385e310521dceedb0b0d5ce8413809a37fe5654
- sha256sums = 2439b2f663feed02c526f4e34b2cdc2a1d5ad35f7223ade87508c1cf4359ee9c
- sha256sums = e605d4e7154f9ccf4dec24fec27abe4e2947713f35dae6aa8698e5f8722609a7
- sha256sums = 15b53b4ab0578eaa31f849670990e15949e67be8b330d7581825a5e8408953ed
- sha256sums = ba8c81c035303cbcf204744516a83b66adac94384aaa59ea2ea1a619a41aa7c0
- sha256sums = d078882d94adf881bac2e7955689931abe7ac443db86d85e0b60c72d8b27738e
- sha256sums = 19ca49013e32824002e355a85df6e25028283a0b06a6409cc7d5cd9800fea488
- sha256sums = 52d40f8a3b032a9fa0ae57bc15d3611bc652ff6e417a488eac4223cef0db9142
- sha256sums = 457474e625565c28daa6d642b2416b4398b2b9fec3a8b90c048fc0460412a0ce
- sha256sums = 76d73a55d3e8da63c9ead2cecdec1efbaeb78739bb5abf635a64380eeba35158
- sha256sums = 8bc24efe33f06228134dd27e5c9a6832abb436e2fbe3fab09b529fed4a5b406c
pkgname = openafs-modules-dkms
-
diff --git a/0001-Avoid-duplicate-definitions-of-globals.patch b/0001-Avoid-duplicate-definitions-of-globals.patch
deleted file mode 100644
index e166c6aa5f1a..000000000000
--- a/0001-Avoid-duplicate-definitions-of-globals.patch
+++ /dev/null
@@ -1,353 +0,0 @@
-From ac4debb46bc0b95ff2f98d416703bc8df60b8415 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 22 May 2020 12:16:48 -0600
-Subject: [PATCH 01/11] Avoid duplicate definitions of globals
-
-GCC 10 changed a default flag from -fcommon to -fno-common. See
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678 for some background.
-
-The change in gcc 10 results in build link-time errors. For example:
- ../../src/xstat/.libs/liboafs_xstat_cm.a(xstat_cm.o):(.bss+0x2050):
- multiple definition of `numCollections';
-
-Ensure that only one definition for global data objects exist and change
-references to use "extern" as needed.
-
-To ensure that future changes do not introduce duplicated global
-definitions, add the -fno-common flag to XCFLAGS when using the
-configure --enable-checking setting.
-
-[cwills@sinenomine.net: Note for 1.8.x: renamed terminationEvent
-to cm_terminationEvent/fs_terminationEvent instead of deleting it.]
-
-Reviewed-on: https://gerrit.openafs.org/14106
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 0e2072ae386d4111bef161eb955964b649c31386)
-
-Change-Id: I54ca61d372cf763e4a28c0b0829ea361219f6203
-Reviewed-on: https://gerrit.openafs.org/14217
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/bucoord/main.c | 6 ++----
- src/butc/dbentries.c | 2 +-
- src/butc/dump.c | 7 +++----
- src/butc/lwps.c | 2 +-
- src/butc/tcmain.c | 2 +-
- src/cf/osconf.m4 | 2 +-
- src/fsprobe/fsprobe.h | 1 -
- src/uss/uss_vol.c | 2 +-
- src/viced/host.c | 2 ++
- src/viced/host.h | 2 +-
- src/vol/fssync-server.c | 3 ---
- src/vol/volume.c | 3 ---
- src/xstat/xstat_cm.c | 7 +++----
- src/xstat/xstat_cm.h | 3 +--
- src/xstat/xstat_cm_test.c | 4 ++--
- src/xstat/xstat_fs.c | 7 +++----
- src/xstat/xstat_fs.h | 3 +--
- src/xstat/xstat_fs_test.c | 4 ++--
- 18 files changed, 25 insertions(+), 37 deletions(-)
-
-diff --git a/src/bucoord/main.c b/src/bucoord/main.c
-index d2a5f368b..a453cc9dd 100644
---- a/src/bucoord/main.c
-+++ b/src/bucoord/main.c
-@@ -47,9 +47,9 @@ char tcell[64];
- /*
- * Global configuration information for the Backup Coordinator.
- */
--struct bc_config *bc_globalConfig; /*Ptr to global BC configuration info */
-+extern struct bc_config *bc_globalConfig; /*Ptr to global BC configuration info */
-
--struct ubik_client *cstruct; /* Ptr to Ubik client structure */
-+extern struct ubik_client *cstruct; /* Ptr to Ubik client structure */
- time_t tokenExpires; /* The token's expiration time */
-
- static const char *DefaultConfDir; /*Default backup config directory */
-@@ -162,8 +162,6 @@ bc_InitTextConfig(void)
- udbClientTextP ctPtr;
- int i;
-
-- extern struct bc_config *bc_globalConfig;
--
- mkdir(DefaultConfDir, 777); /* temporary */
-
- /* initialize the client text structures */
-diff --git a/src/butc/dbentries.c b/src/butc/dbentries.c
-index 37b35d307..29ddcbd01 100644
---- a/src/butc/dbentries.c
-+++ b/src/butc/dbentries.c
-@@ -31,7 +31,7 @@
- #include "error_macros.h"
-
- dlqlinkT savedEntries;
--dlqlinkT entries_to_flush;
-+static dlqlinkT entries_to_flush;
-
- int dbWatcherinprogress;
-
-diff --git a/src/butc/dump.c b/src/butc/dump.c
-index 1f4eb9b8f..f8fc943a6 100644
---- a/src/butc/dump.c
-+++ b/src/butc/dump.c
-@@ -42,8 +42,7 @@ extern int isafile;
- extern int forcemultiple;
-
- extern struct ubik_client *cstruct;
--dlqlinkT savedEntries;
--dlqlinkT entries_to_flush;
-+extern dlqlinkT savedEntries;
-
- extern afs_int32 groupId;
- extern afs_int32 BufferSize;
-@@ -61,8 +60,8 @@ extern char *xbsalGName;
- extern char *globalButcLog;
- #endif /*xbsa */
-
--afs_int32 dataSize; /* Size of data to read on each rx_Read() call */
--afs_int32 tapeblocks; /* Number of 16K tape datablocks in buffer (!CONF_XBSA) */
-+extern afs_int32 dataSize; /* Size of data to read on each rx_Read() call */
-+extern afs_int32 tapeblocks; /* Number of 16K tape datablocks in buffer (!CONF_XBSA) */
-
- /* TBD
- *
-diff --git a/src/butc/lwps.c b/src/butc/lwps.c
-index d262991d8..aff5e9e07 100644
---- a/src/butc/lwps.c
-+++ b/src/butc/lwps.c
-@@ -51,7 +51,7 @@ extern int forcemultiple;
- #endif
-
- /* XBSA Global Parameters */
--afs_int32 xbsaType;
-+extern afs_int32 xbsaType;
- #ifdef xbsa
- struct butx_transactionInfo butxInfo;
- #endif
-diff --git a/src/butc/tcmain.c b/src/butc/tcmain.c
-index e8a20938e..a0298addb 100644
---- a/src/butc/tcmain.c
-+++ b/src/butc/tcmain.c
-@@ -66,7 +66,7 @@
- #define TL_PREFIX "TL"
- #define CFG_PREFIX "CFG"
-
--struct ubik_client *cstruct;
-+extern struct ubik_client *cstruct;
- FILE *logIO, *ErrorlogIO, *centralLogIO, *lastLogIO;
- char lFile[AFSDIR_PATH_MAX];
- char logFile[AFSDIR_PATH_MAX + 256];
-diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4
-index 5f0d73fc2..e36152bd4 100644
---- a/src/cf/osconf.m4
-+++ b/src/cf/osconf.m4
-@@ -672,7 +672,7 @@ if test "x$GCC" = "xyes"; then
- XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Wpointer-arith"
- fi
- if test "x$enable_checking" != "xno"; then
-- XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Werror -fdiagnostics-show-option -Wpointer-arith"
-+ XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Werror -fdiagnostics-show-option -Wpointer-arith -fno-common"
- if test "x$enable_checking" != "xall"; then
- CFLAGS_NOERROR="-Wno-error"
- CFLAGS_NOUNUSED="-Wno-unused"
-diff --git a/src/fsprobe/fsprobe.h b/src/fsprobe/fsprobe.h
-index 94083bfe9..3060371ae 100644
---- a/src/fsprobe/fsprobe.h
-+++ b/src/fsprobe/fsprobe.h
-@@ -103,7 +103,6 @@ struct fsprobe_ProbeResults {
-
- extern int fsprobe_numServers; /*# servers connected */
- extern struct fsprobe_ConnectionInfo *fsprobe_ConnInfo; /*Ptr to connections */
--extern int numCollections; /*Num data collections */
- extern struct fsprobe_ProbeResults fsprobe_Results; /*Latest probe results */
-
- extern int fsprobe_Init(int, struct sockaddr_in *, int, int (*)(void), int );
-diff --git a/src/uss/uss_vol.c b/src/uss/uss_vol.c
-index c9c13941d..b31a42a06 100644
---- a/src/uss/uss_vol.c
-+++ b/src/uss/uss_vol.c
-@@ -61,7 +61,7 @@ extern int line;
- * will work and we can avoid nasty little core dumps.
- */
- struct ubik_client *uconn_vldbP; /*Ubik connection struct */
--struct ubik_client *cstruct; /*Required name for above */
-+extern struct ubik_client *cstruct; /*Required name for above */
-
- /*
- * ------------------------ Private globals -----------------------
-diff --git a/src/viced/host.c b/src/viced/host.c
-index 36f9e88c0..e7657caac 100644
---- a/src/viced/host.c
-+++ b/src/viced/host.c
-@@ -67,6 +67,8 @@ int hostCount = 0; /* number of hosts in hostList */
- int rxcon_ident_key;
- int rxcon_client_key;
-
-+struct host *(hosttableptrs[h_MAXHOSTTABLES]);
-+
- static struct rx_securityClass *sc = NULL;
- static int h_quota_limit;
-
-diff --git a/src/viced/host.h b/src/viced/host.h
-index fead948f6..272dcdbe7 100644
---- a/src/viced/host.h
-+++ b/src/viced/host.h
-@@ -254,7 +254,7 @@ extern int h_RestoreState(void);
- #define H_ENUMERATE_BAIL(flags) ((flags)|0x80000000)
- #define H_ENUMERATE_ISSET_BAIL(flags) ((flags)&0x80000000)
-
--struct host *(hosttableptrs[h_MAXHOSTTABLES]); /* Used by h_itoh */
-+extern struct host *(hosttableptrs[h_MAXHOSTTABLES]); /* Used by h_itoh */
- #define h_htoi(host) ((host)->index) /* index isn't zeroed, no need to lock */
- #define h_itoh(hostindex) (hosttableptrs[(hostindex)>>h_HTSHIFT]+((hostindex)&(h_HTSPERBLOCK-1)))
-
-diff --git a/src/vol/fssync-server.c b/src/vol/fssync-server.c
-index 2d7cd6011..69d902f1b 100644
---- a/src/vol/fssync-server.c
-+++ b/src/vol/fssync-server.c
-@@ -79,9 +79,6 @@
- #endif /* USE_UNIX_SOCKETS */
-
- #ifdef FSSYNC_BUILD_SERVER
--
--int (*V_BreakVolumeCallbacks) (VolumeId volume);
--
- #define MAXHANDLERS 4 /* Up to 4 clients; must be at least 2, so that
- * move = dump+restore can run on single server */
- #define MAXOFFLINEVOLUMES 128 /* This needs to be as big as the maximum
-diff --git a/src/vol/volume.c b/src/vol/volume.c
-index f1ff10a7b..3d9e47ef3 100644
---- a/src/vol/volume.c
-+++ b/src/vol/volume.c
-@@ -124,9 +124,6 @@ pthread_cond_t vol_vinit_cond;
- int vol_attach_threads = 1;
- #endif /* AFS_PTHREAD_ENV */
-
--/* start-time configurable I/O parameters */
--ih_init_params vol_io_params;
--
- #ifdef AFS_DEMAND_ATTACH_FS
- pthread_mutex_t vol_salvsync_mutex;
-
-diff --git a/src/xstat/xstat_cm.c b/src/xstat/xstat_cm.c
-index d8600c124..3f5bfc843 100644
---- a/src/xstat/xstat_cm.c
-+++ b/src/xstat/xstat_cm.c
-@@ -32,9 +32,8 @@
- int xstat_cm_numServers; /*Num connected servers */
- struct xstat_cm_ConnectionInfo
- *xstat_cm_ConnInfo; /*Ptr to connection array */
--int numCollections; /*Number of data collections */
- struct xstat_cm_ProbeResults xstat_cm_Results; /*Latest probe results */
--char terminationEvent; /*One-shot termination event */
-+char cm_terminationEvent; /*One-shot termination event */
-
- afs_int32 xstat_cmData[AFSCB_MAX_XSTAT_LONGS]; /*Buffer for collected data */
-
-@@ -315,8 +314,8 @@ xstat_cm_LWP(void *unused)
- */
- if (xstat_cm_debug)
- printf("[%s] Signalling main process at %" AFS_PTR_FMT "\n", rn,
-- &terminationEvent);
-- oneShotCode = LWP_SignalProcess(&terminationEvent);
-+ &cm_terminationEvent);
-+ oneShotCode = LWP_SignalProcess(&cm_terminationEvent);
- if (oneShotCode)
- fprintf(stderr, "[%s] Error %d from LWP_SignalProcess()", rn,
- oneShotCode);
-diff --git a/src/xstat/xstat_cm.h b/src/xstat/xstat_cm.h
-index efbba531c..569011cc2 100644
---- a/src/xstat/xstat_cm.h
-+++ b/src/xstat/xstat_cm.h
-@@ -86,10 +86,9 @@ struct xstat_cm_ProbeResults {
- extern int xstat_cm_numServers; /*# connected servers */
- extern struct xstat_cm_ConnectionInfo
- *xstat_cm_ConnInfo; /*Ptr to connections */
--extern int numCollections; /*Num data collections */
- extern struct xstat_cm_ProbeResults
- xstat_cm_Results; /*Latest probe results */
--extern char terminationEvent; /*One-shot termination event */
-+extern char cm_terminationEvent; /*One-shot termination event */
-
- /*
- * ------------------------ Exported functions ------------------------
-diff --git a/src/xstat/xstat_cm_test.c b/src/xstat/xstat_cm_test.c
-index b284237aa..7c5e56864 100644
---- a/src/xstat/xstat_cm_test.c
-+++ b/src/xstat/xstat_cm_test.c
-@@ -881,8 +881,8 @@ RunTheTest(struct cmd_syndesc *a_s, void *arock)
- */
- if (debugging_on)
- printf("[%s] Calling LWP_WaitProcess() on event %" AFS_PTR_FMT
-- "\n", rn, &terminationEvent);
-- waitCode = LWP_WaitProcess(&terminationEvent);
-+ "\n", rn, &cm_terminationEvent);
-+ waitCode = LWP_WaitProcess(&cm_terminationEvent);
- if (debugging_on)
- printf("[%s] Returned from LWP_WaitProcess()\n", rn);
- if (waitCode) {
-diff --git a/src/xstat/xstat_fs.c b/src/xstat/xstat_fs.c
-index 51dbe3847..dff930472 100644
---- a/src/xstat/xstat_fs.c
-+++ b/src/xstat/xstat_fs.c
-@@ -33,9 +33,8 @@
- int xstat_fs_numServers; /*Num connected servers */
- struct xstat_fs_ConnectionInfo
- *xstat_fs_ConnInfo; /*Ptr to connection array */
--int numCollections; /*Number of data collections */
- struct xstat_fs_ProbeResults xstat_fs_Results; /*Latest probe results */
--char terminationEvent; /*One-shot termination event */
-+char fs_terminationEvent; /*One-shot termination event */
-
- afs_int32 xstat_fsData[AFS_MAX_XSTAT_LONGS]; /*Buffer for collected data */
-
-@@ -334,8 +333,8 @@ xstat_fs_LWP(void *unused)
- */
- if (xstat_fs_debug)
- printf("[%s] Signalling main process at %" AFS_PTR_FMT "\n", rn,
-- &terminationEvent);
-- oneShotCode = LWP_SignalProcess(&terminationEvent);
-+ &fs_terminationEvent);
-+ oneShotCode = LWP_SignalProcess(&fs_terminationEvent);
- if (oneShotCode)
- fprintf(stderr, "[%s] Error %d from LWP_SignalProcess()", rn,
- oneShotCode);
-diff --git a/src/xstat/xstat_fs.h b/src/xstat/xstat_fs.h
-index 6e2b77b85..a800ba679 100644
---- a/src/xstat/xstat_fs.h
-+++ b/src/xstat/xstat_fs.h
-@@ -87,10 +87,9 @@ struct xstat_fs_ProbeResults {
- extern int xstat_fs_numServers; /*# connected servers */
- extern struct xstat_fs_ConnectionInfo
- *xstat_fs_ConnInfo; /*Ptr to connections */
--extern int numCollections; /*Num data collections */
- extern struct xstat_fs_ProbeResults
- xstat_fs_Results; /*Latest probe results */
--extern char terminationEvent; /*One-shot termination event */
-+extern char fs_terminationEvent; /*One-shot termination event */
-
- /*
- * ------------------------ Exported functions ------------------------
-diff --git a/src/xstat/xstat_fs_test.c b/src/xstat/xstat_fs_test.c
-index 853c2121e..d58ecf014 100644
---- a/src/xstat/xstat_fs_test.c
-+++ b/src/xstat/xstat_fs_test.c
-@@ -778,8 +778,8 @@ RunTheTest(struct cmd_syndesc *a_s, void *dummy)
- */
- if (debugging_on)
- printf("[%s] Calling LWP_WaitProcess() on event %" AFS_PTR_FMT "\n", rn,
-- &terminationEvent);
-- waitCode = LWP_WaitProcess(&terminationEvent);
-+ &fs_terminationEvent);
-+ waitCode = LWP_WaitProcess(&fs_terminationEvent);
- if (debugging_on)
- printf("[%s] Returned from LWP_WaitProcess()\n", rn);
- if (waitCode) {
---
-2.31.1
-
diff --git a/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch b/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
deleted file mode 100644
index c503f043b90c..000000000000
--- a/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-From 509169ed302741e2499fbb116ed08408c08d3999 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 3 Jul 2020 10:33:51 -0600
-Subject: [PATCH 02/11] LINUX 5.8: Replace kernel_setsockopt with new funcs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Linux 5.8-rc1 commit 'net: remove kernel_setsockopt' (5a892ff2facb)
-retires the kernel_setsockopt function. In prior kernel commits new
-functions (ip_sock_set_*) were added to replace the specific functions
-performed by kernel_setsockopt.
-
-Define new config test 'HAVE_IP_SOCK_SET' if the 'ip_sock_set' functions
-are available. The config define 'HAVE_KERNEL_SETSOCKOPT' is no longer
-set in Linux 5.8.
-
-Create wrapper functions that replace the kernel_setsockopt calls with
-calls to the appropriate Linux kernel function(s) (depending on what
-functions the kernel supports).
-
-Remove the unused 'kernel_getsockopt' function (used for building with
-pre 2.6.19 kernels).
-
-For reference
- Linux 2.6.19 introduced kernel_setsockopt
- Linux 5.8 removed kernel_setsockopt and replaced the functionality
- with a set of new functions (ip_sock_set_*)
-
-Reviewed-on: https://gerrit.openafs.org/14247
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit c48072b9800759ef1682b91ff1e962f6904a2594)
-
-Change-Id: I2724fad06b1882149d2066d13eced55eff5ee695
-Reviewed-on: https://gerrit.openafs.org/14267
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_compat.h | 43 +++++++++++++++++++++++++------------
- src/cf/linux-kernel-func.m4 | 6 ++++++
- src/rx/LINUX/rx_knet.c | 11 +++-------
- 3 files changed, 38 insertions(+), 22 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
-index 4999b89b9..620b3730c 100644
---- a/src/afs/LINUX/osi_compat.h
-+++ b/src/afs/LINUX/osi_compat.h
-@@ -314,9 +314,22 @@ zero_user_segment(struct page *pp, unsigned int from1, unsigned int to1)
- }
- #endif
-
--#ifndef HAVE_LINUX_KERNEL_SETSOCKOPT
-+#if defined(HAVE_LINUX_IP_SOCK_SET)
-+# include <net/ip.h>
-+/* ip_sock_set_* introduced in linux 5.8 */
-+static inline void
-+afs_linux_sock_set_mtu_discover(struct socket *sockp, int pmtu)
-+{
-+ ip_sock_set_mtu_discover(sockp->sk, pmtu);
-+}
-+static inline void
-+afs_linux_sock_set_recverr(struct socket *sockp)
-+{
-+ ip_sock_set_recverr(sockp->sk);
-+}
-+#else
-+# if !defined(HAVE_LINUX_KERNEL_SETSOCKOPT)
- /* Available from 2.6.19 */
--
- static inline int
- kernel_setsockopt(struct socket *sockp, int level, int name, char *val,
- unsigned int len) {
-@@ -329,20 +342,22 @@ kernel_setsockopt(struct socket *sockp, int level, int name, char *val,
-
- return ret;
- }
-+# endif /* !HAVE_LINUX_KERNEL_SETSOCKOPT */
-
--static inline int
--kernel_getsockopt(struct socket *sockp, int level, int name, char *val,
-- int *len) {
-- mm_segment_t old_fs = get_fs();
-- int ret;
--
-- set_fs(get_ds());
-- ret = sockp->ops->getsockopt(sockp, level, name, val, len);
-- set_fs(old_fs);
--
-- return ret;
-+static inline void
-+afs_linux_sock_set_mtu_discover(struct socket *sockp, int pmtu)
-+{
-+ kernel_setsockopt(sockp, SOL_IP, IP_MTU_DISCOVER, (char *)&pmtu,
-+ sizeof(pmtu));
- }
--#endif
-+static inline void
-+afs_linux_sock_set_recverr(struct socket *sockp)
-+{
-+ int recverr = 1;
-+ kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&recverr,
-+ sizeof(recverr));
-+}
-+#endif /* !HAVE_LINUX_IP_SOCK_SET */
-
- #ifdef HAVE_TRY_TO_FREEZE
- static inline int
-diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
-index 07627db52..78ff48294 100644
---- a/src/cf/linux-kernel-func.m4
-+++ b/src/cf/linux-kernel-func.m4
-@@ -151,6 +151,12 @@ AC_CHECK_LINUX_FUNC([lru_cache_add_file],
- [#include <linux/swap.h>],
- [lru_cache_add_file(NULL);])
-
-+dnl Linux 5.8 replaced kernel_setsockopt with helper functions
-+dnl e.g. ip_sock_set_mtu_discover, ip_sock_set_recverr
-+AC_CHECK_LINUX_FUNC([ip_sock_set],
-+ [#include <net/ip.h>],
-+ [ip_sock_set_mtu_discover(NULL, 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"],
-diff --git a/src/rx/LINUX/rx_knet.c b/src/rx/LINUX/rx_knet.c
-index 9fbb563f3..50607c8f5 100644
---- a/src/rx/LINUX/rx_knet.c
-+++ b/src/rx/LINUX/rx_knet.c
-@@ -34,7 +34,6 @@
- #include <linux/errqueue.h>
- #include <linux/icmp.h>
- #endif
--
- #include "osi_compat.h"
-
- /* rxk_NewSocket
-@@ -76,14 +75,10 @@ rxk_NewSocketHost(afs_uint32 ahost, short aport)
- return NULL;
- }
-
-- kernel_setsockopt(sockp, SOL_IP, IP_MTU_DISCOVER, (char *)&pmtu,
-- sizeof(pmtu));
-+ afs_linux_sock_set_mtu_discover(sockp, pmtu);
-+
- #ifdef AFS_RXERRQ_ENV
-- {
-- int recverr = 1;
-- kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&recverr,
-- sizeof(recverr));
-- }
-+ afs_linux_sock_set_recverr(sockp);
- #endif
- return (osi_socket *)sockp;
- }
---
-2.31.1
-
diff --git a/0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch b/0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
deleted file mode 100644
index 83a7ac15b8fc..000000000000
--- a/0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 2daa3a8f5771539203d9eb8c4e23b01ed7c65a16 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 3 Jul 2020 10:34:42 -0600
-Subject: [PATCH 03/11] LINUX 5.8: do not set name field in backing_dev_info
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Linux-5.8-rc1 commit 'bdi: remove the name field in struct
-backing_dev_info' (1cd925d5838)
-
-Do not set the name field in the backing_dev_info structure if it is
-not available. Uses an existing config test
- 'STRUCT_BACKING_DEV_INFO_HAS_NAME'
-
-Note the name field in the backing_dev_info structure was added in
-Linux-2.6.32
-
-Reviewed-on: https://gerrit.openafs.org/14248
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit d8ec294534fcdee77a2ccd297b4b167dc4d5573d)
-
-Change-Id: I3d9e18092db998a4c4f26bd63ee3b75383a53d4c
-Reviewed-on: https://gerrit.openafs.org/14268
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_vfsops.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c
-index 8bbb5f225..ca1d5c83b 100644
---- a/src/afs/LINUX/osi_vfsops.c
-+++ b/src/afs/LINUX/osi_vfsops.c
-@@ -121,7 +121,9 @@ afs_fill_super(struct super_block *sb, void *data, int silent)
- code = super_setup_bdi(sb);
- if (code)
- goto out;
-+# if defined(STRUCT_BACKING_DEV_INFO_HAS_NAME)
- sb->s_bdi->name = "openafs";
-+# endif
- sb->s_bdi->ra_pages = 32;
- #else
- /* used for inodes backing_dev_info field, also */
---
-2.31.1
-
diff --git a/0004-LINUX-5.8-use-lru_cache_add.patch b/0004-LINUX-5.8-use-lru_cache_add.patch
deleted file mode 100644
index 26e84c2ab12b..000000000000
--- a/0004-LINUX-5.8-use-lru_cache_add.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From d1c503f83a2cf85c6fbf7aab24728a5f0787c54c Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 3 Jul 2020 10:35:06 -0600
-Subject: [PATCH 04/11] LINUX 5.8: use lru_cache_add
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-With Linux-5.8-rc1 commit 'mm: fold and remove lru_cache_add_anon() and
-lru_cache_add_file()' (6058eaec), the lru_cache_add_file function is
-removed since it was functionally equivalent to lru_cache_add.
-
-Replace lru_cache_add_file with lru_cache_add.
-
-Introduce a new autoconf test to determine if lru_cache_add is present
-
-For reference, the Linux changes associated with the lru caches:
-
- __pagevec_lru_add introduced before v2.6.12-rc2
-
- lru_cache_add_file introduced in v2.6.28-rc1
- __pagevec_lru_add_file replaces __pagevec_lru_add in v2.6.28-rc1
- vmscan: split LRU lists into anon & file sets (4f98a2fee)
-
- __pagevec_lru_add removed in v5.7 with a note to use lru_cache_add_file
- mm/swap.c: not necessary to export __pagevec_lru_add() (bde07cfc6)
-
- lru_cache_add_file removed in v5.8
- mm: fold and remove lru_cache_add_anon() and lru_cache_add_file()
- (6058eaec)
- lru_cache_add exported
- mm: fold and remove lru_cache_add_anon() and lru_cache_add_file()
- (6058eaec)
-
-Openafs will use:
- lru_cache_add on 5.8 kernels
- lru_cache_add_file from 2.6.28 through 5.7 kernels
- __pagevec_lru_add/__pagevec_lru_add_file on pre 2.6.28 kernels
-
-Reviewed-on: https://gerrit.openafs.org/14249
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 7d85ce221d6ccc19cf76ce7680c74311e4ed2632)
-
-Change-Id: Iba6ef4441687dbf60d227a708e2a032c2c0dc79f
-Reviewed-on: https://gerrit.openafs.org/14269
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_vnodeops.c | 8 +++++++-
- src/cf/linux-kernel-func.m4 | 7 +++++++
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index 00995b27a..36a4f685e 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -71,7 +71,7 @@ extern struct vcache *afs_globalVp;
-
- /* Handle interfacing with Linux's pagevec/lru facilities */
-
--#if defined(HAVE_LINUX_LRU_CACHE_ADD_FILE)
-+#if defined(HAVE_LINUX_LRU_CACHE_ADD_FILE) || defined(HAVE_LINUX_LRU_CACHE_ADD)
-
- /*
- * Linux's lru_cache_add_file provides a simplified LRU interface without
-@@ -90,7 +90,13 @@ afs_lru_cache_init(struct afs_lru_pages *alrupages)
- static inline void
- afs_lru_cache_add(struct afs_lru_pages *alrupages, struct page *page)
- {
-+# if defined(HAVE_LINUX_LRU_CACHE_ADD)
-+ lru_cache_add(page);
-+# elif defined(HAVE_LINUX_LRU_CACHE_ADD_FILE)
- lru_cache_add_file(page);
-+# else
-+# error need a kernel function to add a page to the kernel lru cache
-+# endif
- }
-
- static inline void
-diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
-index 78ff48294..11d071806 100644
---- a/src/cf/linux-kernel-func.m4
-+++ b/src/cf/linux-kernel-func.m4
-@@ -147,10 +147,17 @@ AC_CHECK_LINUX_FUNC([inode_lock],
- [inode_lock(NULL);])
-
- dnl lru_cache_add_file added to Linux 2.6.28.
-+dnl removed in Linux 5.8
- AC_CHECK_LINUX_FUNC([lru_cache_add_file],
- [#include <linux/swap.h>],
- [lru_cache_add_file(NULL);])
-
-+dnl lru_cache_add exported in Linux 5.8
-+dnl replaces lru_cache_add_file
-+AC_CHECK_LINUX_FUNC([lru_cache_add],
-+ [#include <linux/swap.h>],
-+ [lru_cache_add(NULL);])
-+
- dnl Linux 5.8 replaced kernel_setsockopt with helper functions
- dnl e.g. ip_sock_set_mtu_discover, ip_sock_set_recverr
- AC_CHECK_LINUX_FUNC([ip_sock_set],
---
-2.31.1
-
diff --git a/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch b/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
deleted file mode 100644
index 6a3890f5ad40..000000000000
--- a/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From c3b7278663c0e88daa611e7c1cc250e63639a496 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 21 Aug 2020 10:37:51 -0600
-Subject: [PATCH 05/11] LINUX 5.9: Remove HAVE_UNLOCKED_IOCTL/COMPAT_IOCTL
-
-Linux-5.9-rc1 commit 'fs: remove the HAVE_UNLOCKED_IOCTL and
-HAVE_COMPAT_IOCTL defines' (4e24566a) removed the two referenced macros
-from the kernel.
-
-The support for unlocked_ioctl and compat_ioctl were introduced in
-Linux 2.6.11.
-
-Remove references to HAVE_UNLOCKED_IOCTL and HAVE_COMPAT_IOCTL using
-the assumption that they were always defined.
-
-Notes:
-
-With this change, building against kernels 2.6.10 and older will fail.
-RHEL4 (EOL in March 2017) used a 2.6.9 kernel. RHEL5 uses a 2.6.18
-kernel.
-
-In linux-2.6.33-rc1 the commit messages for "staging: comedi:
-Remove check for HAVE_UNLOCKED_IOCTL" (00a1855c) and "Staging: comedi:
-remove check for HAVE_COMPAT_IOCTL" (5d7ae225) both state that all new
-kernels have support for unlocked_ioctl/compat_ioctl so the checks can
-be removed along with removing support for older kernels.
-
-Reviewed-on: https://gerrit.openafs.org/14300
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Tested-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 13a49aaf0d5c43bce08135edaabb65587e1a8031)
-
-Change-Id: I6dc5ae5b32031641f4a021a31630390a91d834fe
-Reviewed-on: https://gerrit.openafs.org/14315
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_ioctl.c | 25 ++-----------------------
- src/afs/LINUX/osi_vnodeops.c | 14 --------------
- 2 files changed, 2 insertions(+), 37 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c
-index 1646a1518..9ba076a1b 100644
---- a/src/afs/LINUX/osi_ioctl.c
-+++ b/src/afs/LINUX/osi_ioctl.c
-@@ -25,10 +25,6 @@
- #include <asm/ia32_unistd.h>
- #endif
-
--#if defined(AFS_SPARC64_LINUX26_ENV) && defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
--#include <linux/ioctl32.h>
--#endif
--
- #include <linux/slab.h>
- #include <linux/init.h>
- #include <linux/sched.h>
-@@ -37,9 +33,6 @@
- #include "osi_compat.h"
-
- extern struct proc_dir_entry *openafs_procfs;
--#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
--static int ioctl32_done;
--#endif
-
- extern asmlinkage long
- afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4);
-@@ -85,12 +78,11 @@ afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
- }
- }
-
--#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL)
- static long afs_unlocked_ioctl(struct file *file, unsigned int cmd,
- unsigned long arg) {
- return afs_ioctl(FILE_INODE(file), file, cmd, arg);
- }
--#endif
-+
- #if defined(HAVE_LINUX_STRUCT_PROC_OPS)
- static struct proc_ops afs_syscall_ops = {
- .proc_ioctl = afs_unlocked_ioctl,
-@@ -100,16 +92,11 @@ static struct proc_ops afs_syscall_ops = {
- };
- #else
- static struct file_operations afs_syscall_ops = {
--# ifdef HAVE_UNLOCKED_IOCTL
- .unlocked_ioctl = afs_unlocked_ioctl,
--# else
-- .ioctl = afs_ioctl,
--# endif
--# ifdef HAVE_COMPAT_IOCTL
- .compat_ioctl = afs_unlocked_ioctl,
--# endif
- };
- #endif /* HAVE_LINUX_STRUCT_PROC_OPS */
-+
- void
- osi_ioctl_init(void)
- {
-@@ -121,18 +108,10 @@ osi_ioctl_init(void)
- entry->owner = THIS_MODULE;
- #endif
-
--#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
-- if (register_ioctl32_conversion(VIOC_SYSCALL32, NULL) == 0)
-- ioctl32_done = 1;
--#endif
- }
-
- void
- osi_ioctl_clean(void)
- {
- remove_proc_entry(PROC_SYSCALL_NAME, openafs_procfs);
--#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
-- if (ioctl32_done)
-- unregister_ioctl32_conversion(VIOC_SYSCALL32);
--#endif
- }
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index 36a4f685e..ba4f1e6af 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -589,13 +589,11 @@ out1:
- extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com,
- unsigned long arg);
-
--#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL)
- static long afs_unlocked_xioctl(struct file *fp, unsigned int com,
- unsigned long arg) {
- return afs_xioctl(FILE_INODE(fp), fp, com, arg);
-
- }
--#endif
-
-
- static int
-@@ -891,14 +889,8 @@ struct file_operations afs_dir_fops = {
- #else
- .readdir = afs_linux_readdir,
- #endif
--#ifdef HAVE_UNLOCKED_IOCTL
- .unlocked_ioctl = afs_unlocked_xioctl,
--#else
-- .ioctl = afs_xioctl,
--#endif
--#ifdef HAVE_COMPAT_IOCTL
- .compat_ioctl = afs_unlocked_xioctl,
--#endif
- .open = afs_linux_open,
- .release = afs_linux_release,
- .llseek = default_llseek,
-@@ -926,14 +918,8 @@ struct file_operations afs_file_fops = {
- .read = afs_linux_read,
- .write = afs_linux_write,
- #endif
--#ifdef HAVE_UNLOCKED_IOCTL
- .unlocked_ioctl = afs_unlocked_xioctl,
--#else
-- .ioctl = afs_xioctl,
--#endif
--#ifdef HAVE_COMPAT_IOCTL
- .compat_ioctl = afs_unlocked_xioctl,
--#endif
- .mmap = afs_linux_mmap,
- .open = afs_linux_open,
- .flush = afs_linux_flush,
---
-2.31.1
-
diff --git a/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch b/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
deleted file mode 100644
index e1bbb742e1f6..000000000000
--- a/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 95a8c71f80e6d0aa83297fedf9f808ee01c32623 Mon Sep 17 00:00:00 2001
-From: Andrew Deason <adeason@sinenomine.net>
-Date: Thu, 28 Jan 2021 16:59:47 -0600
-Subject: [PATCH 06/11] LINUX: Fix includes for fatal_signal_pending test
-
-Commit 8b6ae289 (LINUX: Avoid lookup ENOENT on fatal signals) added a
-configure test for fatal_signal_pending(). However, this check fails
-incorrectly ever since Linux 4.11, because fatal_signal_pending() was moved
-from linux/sched.h to linux/sched/signal.h in Linux commit 2a1f062a
-(sched/headers: Move signal wakeup [...]). Fix this by including
-linux/sched/signal.h if we have it during the configure test.
-
-A false negative on this configure test doesn't break the build, but
-it disables one of our safeguards preventing incorrect negative
-dentries at runtime. The function fatal_signal_pending() hasn't
-changed in quite some time (except for what header it lives in); it
-was introduced in Linux 2.6.25 via Linux commit f776d12d (Add
-fatal_signal_pending). So to try to avoid this mistake again in the
-future, make it so a missing fatal_signal_pending() breaks the build
-if we're on Linux 2.6.25+.
-
-Reviewed-on: https://gerrit.openafs.org/14508
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-(cherry picked from commit 0c1465e4f3310daa54f1e799f76237604222666d)
-
-Change-Id: I1334c060f8ab5733461ebf7c191dffa7be830021
-Reviewed-on: https://gerrit.openafs.org/14509
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_vnodeops.c | 2 ++
- src/cf/linux-kernel-func.m4 | 7 ++++++-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index ba4f1e6af..4d0f55c95 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -1206,6 +1206,8 @@ filter_enoent(int code)
- if (code == ENOENT && fatal_signal_pending(current)) {
- return EINTR;
- }
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)
-+# error fatal_signal_pending not available, but it should be
- #endif
- return code;
- }
-diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
-index 11d071806..e45a30540 100644
---- a/src/cf/linux-kernel-func.m4
-+++ b/src/cf/linux-kernel-func.m4
-@@ -42,8 +42,13 @@ AC_CHECK_LINUX_FUNC([d_make_root],
- AC_CHECK_LINUX_FUNC([do_sync_read],
- [#include <linux/fs.h>],
- [do_sync_read(NULL, NULL, 0, NULL);])
-+dnl - fatal_signal_pending introduced in 2.6.25
-+dnl - moved from linux/sched.h to linux/sched/signal.h in 4.11
- AC_CHECK_LINUX_FUNC([fatal_signal_pending],
-- [#include <linux/sched.h>],
-+ [#include <linux/sched.h>
-+ #ifdef HAVE_LINUX_SCHED_SIGNAL_H
-+ # include <linux/sched/signal.h>
-+ #endif],
- [fatal_signal_pending(NULL);])
- AC_CHECK_LINUX_FUNC([file_dentry],
- [#include <linux/fs.h>],
---
-2.31.1
-
diff --git a/0007-Linux-Refactor-test-for-32bit-compat.patch b/0007-Linux-Refactor-test-for-32bit-compat.patch
deleted file mode 100644
index 2b3cc10561fd..000000000000
--- a/0007-Linux-Refactor-test-for-32bit-compat.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 7efd65a984e5b50904e556992f533c460d9fcf9e Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 29 Jan 2021 11:32:36 -0700
-Subject: [PATCH 07/11] Linux: Refactor test for 32bit compat
-
-Refactor the preprocessor checks for determining the method to test for
-32bit compatibility (64bit kernel performing work for a 32bit task) into
-a common inline function, 'afs_in_compat_syscall' that is defined in
-LINUX/osi_machdep.h. Update osi_ioctl.c and afs_syscall.c to use
-afs_in_compat_syscall.
-
-Add include afs/sysincludes into osi_machdep.h to ensure linux/compat.h
-is pulled for the functions called in afs_in_compat_syscall.
-
-Reviewed-on: https://gerrit.openafs.org/14500
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 32cc6b0796495e596262d84c428172a511f757c4)
-
-Change-Id: I746e5777737d49381c4a74627b79d2a61cbd4f8e
-Reviewed-on: https://gerrit.openafs.org/14510
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_ioctl.c | 14 ++------
- src/afs/LINUX/osi_machdep.h | 40 +++++++++++++++++++++
- src/afs/afs_syscall.c | 70 +++----------------------------------
- 3 files changed, 47 insertions(+), 77 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c
-index 9ba076a1b..7d355674d 100644
---- a/src/afs/LINUX/osi_ioctl.c
-+++ b/src/afs/LINUX/osi_ioctl.c
-@@ -43,21 +43,13 @@ afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
- {
-
- struct afsprocdata sysargs;
--#ifdef NEED_IOCTL32
-- struct afsprocdata32 sysargs32;
--#endif
-
- if (cmd != VIOC_SYSCALL && cmd != VIOC_SYSCALL32) return -EINVAL;
-
- #ifdef NEED_IOCTL32
--# if defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--# elif defined(AFS_AMD64_LINUX20_ENV)
-- if (test_thread_flag(TIF_IA32))
--# else
-- if (test_thread_flag(TIF_32BIT))
--# endif /* AFS_S390X_LINUX26_ENV */
-- {
-+ if (afs_in_compat_syscall()) {
-+ struct afsprocdata32 sysargs32;
-+
- if (copy_from_user(&sysargs32, (void *)arg,
- sizeof(struct afsprocdata32)))
- return -EFAULT;
-diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h
-index 784829627..9ecdaf0bf 100644
---- a/src/afs/LINUX/osi_machdep.h
-+++ b/src/afs/LINUX/osi_machdep.h
-@@ -76,6 +76,8 @@
- #include "h/cred.h"
- #endif
-
-+#include "afs/sysincludes.h"
-+
- #if !defined(HAVE_LINUX_TIME_T)
- typedef time64_t time_t;
- #endif
-@@ -157,6 +159,44 @@ static inline long copyinstr(char *from, char *to, int count, int *length) {
- }
- #define copyout(F, T, C) (copy_to_user ((char*)(T), (char*)(F), (C)) > 0 ? EFAULT : 0)
-
-+/*
-+ * Test to see for 64/32bit compatibility mode
-+ * Return non-zero if in a 64bit kernel and handing a 32bit syscall
-+ */
-+#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-+static inline int
-+afs_in_compat_syscall(void)
-+{
-+# if defined(AFS_SPARC64_LINUX26_ENV)
-+ return test_thread_flag(TIF_32BIT);
-+# elif defined(AFS_SPARC64_LINUX24_ENV)
-+ return (current->thread.flags & SPARC_FLAG_32BIT) != 0;
-+# elif defined(AFS_SPARC64_LINUX20_ENV)
-+ return (current->tss.flags & SPARC_FLAG_32BIT) != 0;
-+# elif defined(AFS_AMD64_LINUX26_ENV)
-+ return test_thread_flag(TIF_IA32);
-+# elif defined(AFS_AMD64_LINUX20_ENV)
-+ return (current->thread.flags & THREAD_IA32) != 0;
-+# elif defined(AFS_PPC64_LINUX26_ENV)
-+# if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-+ return (current->thread_info->flags & _TIF_32BIT) != 0;
-+# else
-+ return (task_thread_info(current)->flags & _TIF_32BIT) != 0;
-+# endif
-+# elif defined(AFS_PPC64_LINUX20_ENV)
-+ return (current->thread.flags & PPC_FLAG_32BIT) != 0;
-+# elif defined(AFS_S390X_LINUX26_ENV)
-+ return test_thread_flag(TIF_31BIT);
-+# elif defined(AFS_S390X_LINUX20_ENV)
-+ return (current->thread.flags & S390_FLAG_31BIT) != 0;
-+# elif defined(AFS_ARM64_LINUX26_ENV)
-+ return is_compat_task();
-+# else
-+# error afs_in_compat_syscall not done for this linux
-+# endif
-+}
-+#endif /* AFS_LINUX_64BIT_KERNEL */
-+
- /* kernel print statements */
- #define printf(args...) printk(args)
- #define uprintf(args...) printk(args)
-diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c
-index ce6afdf9a..9414f38b8 100644
---- a/src/afs/afs_syscall.c
-+++ b/src/afs/afs_syscall.c
-@@ -114,40 +114,9 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst)
- #endif /* defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) */
-
- #if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-- struct afs_ioctl32 dst32;
--
--#ifdef AFS_SPARC64_LINUX26_ENV
-- if (test_thread_flag(TIF_32BIT))
--#elif defined(AFS_SPARC64_LINUX24_ENV)
-- if (current->thread.flags & SPARC_FLAG_32BIT)
--#elif defined(AFS_SPARC64_LINUX20_ENV)
-- if (current->tss.flags & SPARC_FLAG_32BIT)
--
--#elif defined(AFS_AMD64_LINUX26_ENV)
-- if (test_thread_flag(TIF_IA32))
--#elif defined(AFS_AMD64_LINUX20_ENV)
-- if (current->thread.flags & THREAD_IA32)
--
--#elif defined(AFS_PPC64_LINUX26_ENV)
--#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-- if (current->thread_info->flags & _TIF_32BIT)
--#else
-- if (task_thread_info(current)->flags & _TIF_32BIT)
--#endif
--#elif defined(AFS_PPC64_LINUX20_ENV)
-- if (current->thread.flags & PPC_FLAG_32BIT)
--
--#elif defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--#elif defined(AFS_S390X_LINUX20_ENV)
-- if (current->thread.flags & S390_FLAG_31BIT)
--#elif defined(AFS_ARM64_LINUX26_ENV)
-- if (is_compat_task())
-+ if (afs_in_compat_syscall()) {
-+ struct afs_ioctl32 dst32;
-
--#else
--#error pioctl32 not done for this linux
--#endif
-- {
- AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code);
- if (!code)
- afs_ioctl32_to_afs_ioctl(&dst32, dst);
-@@ -391,40 +360,9 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst)
- #endif /* AFS_SUN5_64BIT_ENV */
-
- #if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
-- struct iparam32 dst32;
--
--#ifdef AFS_SPARC64_LINUX26_ENV
-- if (test_thread_flag(TIF_32BIT))
--#elif defined(AFS_SPARC64_LINUX24_ENV)
-- if (current->thread.flags & SPARC_FLAG_32BIT)
--#elif defined(AFS_SPARC64_LINUX20_ENV)
-- if (current->tss.flags & SPARC_FLAG_32BIT)
--
--#elif defined(AFS_AMD64_LINUX26_ENV)
-- if (test_thread_flag(TIF_IA32))
--#elif defined(AFS_AMD64_LINUX20_ENV)
-- if (current->thread.flags & THREAD_IA32)
--
--#elif defined(AFS_PPC64_LINUX26_ENV)
--#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
-- if (current->thread_info->flags & _TIF_32BIT)
--#else
-- if (task_thread_info(current)->flags & _TIF_32BIT)
--#endif
--#elif defined(AFS_PPC64_LINUX20_ENV)
-- if (current->thread.flags & PPC_FLAG_32BIT)
--
--#elif defined(AFS_S390X_LINUX26_ENV)
-- if (test_thread_flag(TIF_31BIT))
--#elif defined(AFS_S390X_LINUX20_ENV)
-- if (current->thread.flags & S390_FLAG_31BIT)
--#elif defined(AFS_ARM64_LINUX26_ENV)
-- if (is_compat_task())
-+ if (afs_in_compat_syscall()) {
-+ struct iparam32 dst32;
-
--#else
--#error iparam32 not done for this linux platform
--#endif
-- {
- AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code);
- if (!code)
- iparam32_to_iparam(&dst32, dst);
---
-2.31.1
-
diff --git a/0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch b/0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch
deleted file mode 100644
index 75dec912f6bc..000000000000
--- a/0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 2d85a5b7a1011386d66cc36512a54e80b6cfa515 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 22 Jan 2021 07:57:55 -0700
-Subject: [PATCH 08/11] Linux 5.11: Test 32bit compat with in_compat_syscall
-
-Linux 5.11 removed the TIF_IA32 thread flag with commit:
- x86: Reclaim TIF_IA32 and TIF_X32 (8d71d2bf6efec)
-
-The flag TIF_IA32 was being used by openafs to determine if the task was
-handling a syscall request from a 32 bit process. Building against a
-Linux 5.11 kernel results in a build failure as TIF_IA32 is undefined.
-
-The function 'in_compat_syscall' was introduced in Linux 4.6 as
-the preferred method to determine if a syscall needed to handle a
-compatible call (e.g. 32bit application).
-
-To resolve the build problem, use 'in_compat_syscall' if present (Linux
-4.6 and later) to determine if the syscall needs to handle a
-compatibility mode call.
-
-Add autoconf check for in_compat_syscall.
-
-Notes about in_compat_syscall:
-
-In Linux 4.6 'in_compat_syscall' was defined for all architectures with
-a generic return of 'is_compat_task', but allows architecture specific
-overriding implementations (x86 and sparc).
-
-At 4.6 (and later), the function 'is_compat_task' is defined only for
-the following architectures to return:
-
-Arch Returns
-======= ==============================
-arm64 test_thread_flag(TIF_32BIT);
-mips test_thread_flag(TIF_32BIT_ADDR)
-parisc test_ti_thread_flag(task_thread_info(t), TIF_32BIT)
-powerpc is_32bit_task()
-s390 test_thread_flag(TIF_31BIT)
-sparc test_thread_flag(TIF_32BIT)
-
-If the Linux kernel is not built with compat mode, is_compat_task and
-in_compat_syscall is set to always return 0
-
-Linux commit that introduced in_compat_syscall:
- compat: add in_compat_syscall to ask whether we're in a compat syscall
- (5180e3e24fd3e8e7)
-
-Reviewed-on: https://gerrit.openafs.org/14499
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-(cherry picked from commit 78ef922612bef5f5fd6904896e84b9d2ea802404)
-
-Change-Id: I4eca62f19ae58fd830915feff5098cec2825f099
-Reviewed-on: https://gerrit.openafs.org/14511
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Tested-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_machdep.h | 4 +++-
- src/cf/linux-kernel-func.m4 | 6 ++++++
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h
-index 9ecdaf0bf..066c1885f 100644
---- a/src/afs/LINUX/osi_machdep.h
-+++ b/src/afs/LINUX/osi_machdep.h
-@@ -167,7 +167,9 @@ static inline long copyinstr(char *from, char *to, int count, int *length) {
- static inline int
- afs_in_compat_syscall(void)
- {
--# if defined(AFS_SPARC64_LINUX26_ENV)
-+# if defined(HAVE_LINUX_IN_COMPAT_SYSCALL)
-+ return in_compat_syscall();
-+# elif defined(AFS_SPARC64_LINUX26_ENV)
- return test_thread_flag(TIF_32BIT);
- # elif defined(AFS_SPARC64_LINUX24_ENV)
- return (current->thread.flags & SPARC_FLAG_32BIT) != 0;
-diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
-index e45a30540..5b4060238 100644
---- a/src/cf/linux-kernel-func.m4
-+++ b/src/cf/linux-kernel-func.m4
-@@ -157,6 +157,12 @@ AC_CHECK_LINUX_FUNC([lru_cache_add_file],
- [#include <linux/swap.h>],
- [lru_cache_add_file(NULL);])
-
-+dnl Linux 4.6 introduced in_compat_syscall as replacement for is_compat_task
-+dnl for certain platforms.
-+AC_CHECK_LINUX_FUNC([in_compat_syscall],
-+ [#include <linux/compat.h>],
-+ [in_compat_syscall();])
-+
- dnl lru_cache_add exported in Linux 5.8
- dnl replaces lru_cache_add_file
- AC_CHECK_LINUX_FUNC([lru_cache_add],
---
-2.31.1
-
diff --git a/0009-LINUX-Introduce-afs_d_path.patch b/0009-LINUX-Introduce-afs_d_path.patch
deleted file mode 100644
index e289942fd807..000000000000
--- a/0009-LINUX-Introduce-afs_d_path.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From e4d3ce24f759d6f099b5523fd34501b496fb88a5 Mon Sep 17 00:00:00 2001
-From: Andrew Deason <adeason@sinenomine.net>
-Date: Tue, 23 Jul 2019 13:50:31 -0500
-Subject: [PATCH 09/11] LINUX: Introduce afs_d_path
-
-Move our preprocessor logic around d_path into an osi_compat.h
-wrapper, called afs_d_path. This just makes it a little easier to use
-d_path, and moves a tiny bit of #ifdef cruft away from real code.
-
-Reviewed-on: https://gerrit.openafs.org/13721
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-(cherry picked from commit 4c4fb6e36634e5663c8be25acd4a1ac872e4738c)
-
-Change-Id: I08763c71006e4ac6f2bf88d8ac71941fc44e6ab8
-Reviewed-on: https://gerrit.openafs.org/14563
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_compat.h | 11 +++++++++++
- src/afs/LINUX/osi_misc.c | 8 +-------
- 2 files changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
-index 620b3730c..a1e7f21fb 100644
---- a/src/afs/LINUX/osi_compat.h
-+++ b/src/afs/LINUX/osi_compat.h
-@@ -737,4 +737,15 @@ afs_file_write(struct file *filp, char __user *buf, size_t len, loff_t *pos)
- #endif
- }
-
-+static inline char*
-+afs_d_path(struct dentry *dp, struct vfsmount *mnt, char *buf, int buflen)
-+{
-+#ifdef D_PATH_TAKES_STRUCT_PATH
-+ afs_linux_path_t p = { .mnt = mnt, .dentry = dp };
-+ return d_path(&p, buf, buflen);
-+#else
-+ return d_path(dp, mnt, buf, buflen);
-+#endif
-+}
-+
- #endif /* AFS_LINUX_OSI_COMPAT_H */
-diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c
-index 0e9336db6..aa5d5fc93 100644
---- a/src/afs/LINUX/osi_misc.c
-+++ b/src/afs/LINUX/osi_misc.c
-@@ -138,13 +138,7 @@ int osi_abspath(char *aname, char *buf, int buflen,
- return -PTR_ERR(name);
- code = osi_lookupname_internal(name, followlink, &mnt, &dp);
- if (!code) {
--#if defined(D_PATH_TAKES_STRUCT_PATH)
-- afs_linux_path_t p = { .mnt = mnt, .dentry = dp };
-- path = d_path(&p, buf, buflen);
--#else
-- path = d_path(dp, mnt, buf, buflen);
--#endif
--
-+ path = afs_d_path(dp, mnt, buf, buflen);
- if (IS_ERR(path)) {
- code = -PTR_ERR(path);
- } else {
---
-2.31.1
-
diff --git a/0010-Linux-Create-wrapper-for-setattr_prepare.patch b/0010-Linux-Create-wrapper-for-setattr_prepare.patch
deleted file mode 100644
index fe75325bc8a9..000000000000
--- a/0010-Linux-Create-wrapper-for-setattr_prepare.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 06c067eb25fafd8d18de204a3df430e114fc8871 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Mon, 8 Mar 2021 09:22:04 -0700
-Subject: [PATCH 10/11] Linux: Create wrapper for setattr_prepare
-
-Move call to setattr_prepare/inode_change_ok into an osi_compat.h
-wrapper called 'afs_setattr_prepare'. This moves some of the #if logic
-out of the mainline code.
-
-Reviewed-on: https://gerrit.openafs.org/14548
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-(cherry picked from commit 12ae2beeeb172cebdfa24d5ea149f73fd85541f8)
-
-Change-Id: I1c7806893daf2404a8b3ac1b5c88ca04e6409226
-Reviewed-on: https://gerrit.openafs.org/14564
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_compat.h | 10 ++++++++++
- src/afs/LINUX/osi_file.c | 6 +-----
- 2 files changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
-index a1e7f21fb..3ac4d798d 100644
---- a/src/afs/LINUX/osi_compat.h
-+++ b/src/afs/LINUX/osi_compat.h
-@@ -748,4 +748,14 @@ afs_d_path(struct dentry *dp, struct vfsmount *mnt, char *buf, int buflen)
- #endif
- }
-
-+static inline int
-+afs_setattr_prepare(struct dentry *dp, struct iattr *newattrs)
-+{
-+#if defined(HAVE_LINUX_SETATTR_PREPARE)
-+ return setattr_prepare(dp, newattrs);
-+#else
-+ return inode_change_ok(dp->d_inode, newattrs);
-+#endif
-+}
-+
- #endif /* AFS_LINUX_OSI_COMPAT_H */
-diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c
-index 5b0a0c01d..982cf47e7 100644
---- a/src/afs/LINUX/osi_file.c
-+++ b/src/afs/LINUX/osi_file.c
-@@ -205,11 +205,7 @@ osi_UFSTruncate(struct osi_file *afile, afs_int32 asize)
- AFS_CURRENT_TIME(&newattrs.ia_ctime);
-
- /* avoid notify_change() since it wants to update dentry->d_parent */
--#ifdef HAVE_LINUX_SETATTR_PREPARE
-- code = setattr_prepare(file_dentry(afile->filp), &newattrs);
--#else
-- code = inode_change_ok(inode, &newattrs);
--#endif
-+ code = afs_setattr_prepare(file_dentry(afile->filp), &newattrs);
- if (!code)
- code = afs_inode_setattr(afile, &newattrs);
- if (!code)
---
-2.31.1
-
diff --git a/0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch b/0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch
deleted file mode 100644
index 001f1782df22..000000000000
--- a/0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch
+++ /dev/null
@@ -1,289 +0,0 @@
-From 1a5b57363724d221a9065bbb10f817485d0a8bc3 Mon Sep 17 00:00:00 2001
-From: Cheyenne Wills <cwills@sinenomine.net>
-Date: Fri, 5 Mar 2021 16:31:03 -0700
-Subject: [PATCH 11/11] Linux 5.12: Add user_namespace param to inode ops
-
-The Linux commits:
-"fs: make helpers idmap mount aware" (549c72977) and
-"attr: handle idmapped mounts" (2f221d6f7) that were merged into
-Linux-5.12-rc1 cause a build failure when creating the kernel module.
-
-Several functions within the inode_operations structure had their
-signature updated to include a user_namespace parameter. This allows
-a filesystem to support idmapped mounts.
-
-OpenAFS only implements some of the changed functions.
-
- LINUX/vnodeops function inode_operation
- ===================== ===============
- afs_notify_change setattr
- afs_linux_getattr getattr
- afs_linux_create create
- afs_linux_symlink symlink
- afs_linux_mkdir mkdir
- afs_linux_rename rename
- afs_linux_permission permission
-
-Update the autoconf tests to determine if the Linux kernel requires
-the user_namespace structure for inode_operations functions. If so,
-define a generic "IOP_TAKES_USER_NAMESPACE" macro.
-
-Update the above vnodeops functions to accept a 'struct user_namespace'
-parameter.
-
-When using the 'setattr_prepare' function a user namespace must be
-now provided. In order to provide compatibility as a non-idmapped mount
-filesystem the initial user namespace can be used. With OpenAFS, the
-initial user namespace obtained at kernel module load time is stored in
-a global variable 'afs_ns'.
-
-Update the call to setattr_prepare to pass the user namespace pointed
-to by the 'afs_ns' global variable.
-
-Update calls to setattr to pass the user namespace pointed to by
-the 'afs_ns' global variable.
-
-Notes:
-
-The changes introduced with Linux 5.12 allow a filesystem to support
-idmapped mounts if desired. This commit does not implement support for
-idmapped mounts, but will continue to use the same initial user
-namespace as prior to Linux 5.12.
-
-With Linux 5.12 the following autoconf checks fail:
-
- HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS
- HAVE_LINUX_SETATTR_PREPARE
- IOP_CREATE_TAKES_BOOL
- IOP_GETATTR_TAKES_PATH_STRUCT
- IOP_MKDIR_TAKES_UMODE_T
-
-The new macro 'IOP_TAKES_USER_NAMESPACE' covers the cases where these
-macros where used.
-
-Reviewed-on: https://gerrit.openafs.org/14549
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-(cherry picked from commit 1bd68506be3243c5670aaf53798b2e4e715d4c8b)
-
-Change-Id: I8cd54042da4e0295f3cf8417c84138bb0458f881
-Reviewed-on: https://gerrit.openafs.org/14565
-Tested-by: BuildBot <buildbot@rampaginggeek.com>
-Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
-Reviewed-by: Andrew Deason <adeason@sinenomine.net>
-Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
----
- src/afs/LINUX/osi_compat.h | 8 +++--
- src/afs/LINUX/osi_vnodeops.c | 69 +++++++++++++++++++++++++++++++-----
- src/cf/linux-kernel-sig.m4 | 16 ++++++++-
- 3 files changed, 81 insertions(+), 12 deletions(-)
-
-diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h
-index 3ac4d798d..726b6559c 100644
---- a/src/afs/LINUX/osi_compat.h
-+++ b/src/afs/LINUX/osi_compat.h
-@@ -524,7 +524,9 @@ afs_inode_setattr(struct osi_file *afile, struct iattr *newattrs) {
-
- int code = 0;
- struct inode *inode = OSIFILE_INODE(afile);
--#if !defined(HAVE_LINUX_INODE_SETATTR)
-+#if 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);
- #elif defined(INODE_SETATTR_NOT_VOID)
- if (inode->i_op && inode->i_op->setattr)
-@@ -751,7 +753,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(HAVE_LINUX_SETATTR_PREPARE)
-+#if defined(IOP_TAKES_USER_NAMESPACE)
-+ return setattr_prepare(afs_ns, dp, newattrs);
-+#elif defined(HAVE_LINUX_SETATTR_PREPARE)
- return setattr_prepare(dp, newattrs);
- #else
- return inode_change_ok(dp->d_inode, newattrs);
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index 4d0f55c95..9d4a6e334 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -1118,8 +1118,13 @@ 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)
-+static int
-+afs_notify_change(struct user_namespace *mnt_userns, struct dentry *dp, struct iattr *iattrp)
-+#else
- static int
- afs_notify_change(struct dentry *dp, struct iattr *iattrp)
-+#endif
- {
- struct vattr *vattr = NULL;
- cred_t *credp = crref();
-@@ -1147,7 +1152,18 @@ out:
- return afs_convert_code(code);
- }
-
--#if defined(IOP_GETATTR_TAKES_PATH_STRUCT)
-+#if 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)
-+{
-+ int err = afs_linux_revalidate(path->dentry);
-+ if (!err) {
-+ generic_fillattr(afs_ns, path->dentry->d_inode, stat);
-+ }
-+ return err;
-+}
-+#elif defined(IOP_GETATTR_TAKES_PATH_STRUCT)
- static int
- afs_linux_getattr(const struct path *path, struct kstat *stat, u32 request_mask, unsigned int sync_mode)
- {
-@@ -1605,17 +1621,25 @@ struct dentry_operations afs_dentry_operations = {
- *
- * name is in kernel space at this point.
- */
-+
-+#if 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)
-+#elif defined(IOP_CREATE_TAKES_BOOL)
- static int
--#if defined(IOP_CREATE_TAKES_BOOL)
- afs_linux_create(struct inode *dip, struct dentry *dp, umode_t mode,
- bool excl)
- #elif defined(IOP_CREATE_TAKES_UMODE_T)
-+static int
- afs_linux_create(struct inode *dip, struct dentry *dp, umode_t mode,
- struct nameidata *nd)
- #elif defined(IOP_CREATE_TAKES_NAMEIDATA)
-+static int
- afs_linux_create(struct inode *dip, struct dentry *dp, int mode,
- struct nameidata *nd)
- #else
-+static int
- afs_linux_create(struct inode *dip, struct dentry *dp, int mode)
- #endif
- {
-@@ -1890,8 +1914,14 @@ afs_linux_unlink(struct inode *dip, struct dentry *dp)
- }
-
-
-+#if defined(IOP_TAKES_USER_NAMESPACE)
-+static int
-+afs_linux_symlink(struct user_namespace *mnt_userns, struct inode *dip,
-+ struct dentry *dp, const char *target)
-+#else
- static int
- afs_linux_symlink(struct inode *dip, struct dentry *dp, const char *target)
-+#endif
- {
- int code;
- cred_t *credp = crref();
-@@ -1919,10 +1949,15 @@ out:
- return afs_convert_code(code);
- }
-
-+#if defined(IOP_TAKES_USER_NAMESPACE)
-+static int
-+afs_linux_mkdir(struct user_namespace *mnt_userns, struct inode *dip,
-+ struct dentry *dp, umode_t mode)
-+#elif defined(IOP_MKDIR_TAKES_UMODE_T)
- static int
--#if defined(IOP_MKDIR_TAKES_UMODE_T)
- afs_linux_mkdir(struct inode *dip, struct dentry *dp, umode_t mode)
- #else
-+static int
- afs_linux_mkdir(struct inode *dip, struct dentry *dp, int mode)
- #endif
- {
-@@ -1994,13 +2029,22 @@ afs_linux_rmdir(struct inode *dip, struct dentry *dp)
- }
-
-
-+#if defined(IOP_TAKES_USER_NAMESPACE)
-+static int
-+afs_linux_rename(struct user_namespace *mnt_userns,
-+ struct inode *oldip, struct dentry *olddp,
-+ struct inode *newip, struct dentry *newdp,
-+ unsigned int flags)
-+#elif defined(HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS)
-+static int
-+afs_linux_rename(struct inode *oldip, struct dentry *olddp,
-+ struct inode *newip, struct dentry *newdp,
-+ unsigned int flags)
-+#else
- static int
- afs_linux_rename(struct inode *oldip, struct dentry *olddp,
-- struct inode *newip, struct dentry *newdp
--#ifdef HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS
-- , unsigned int flags
-+ struct inode *newip, struct dentry *newdp)
- #endif
-- )
- {
- int code;
- cred_t *credp = crref();
-@@ -2008,7 +2052,8 @@ afs_linux_rename(struct inode *oldip, struct dentry *olddp,
- const char *newname = newdp->d_name.name;
- struct dentry *rehash = NULL;
-
--#ifdef HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS
-+#if defined(HAVE_LINUX_INODE_OPERATIONS_RENAME_TAKES_FLAGS) || \
-+ defined(IOP_TAKES_USER_NAMESPACE)
- if (flags)
- return -EINVAL; /* no support for new flags yet */
- #endif
-@@ -3030,12 +3075,18 @@ done:
- /* afs_linux_permission
- * Check access rights - returns error if can't check or permission denied.
- */
-+
-+#if 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)
- static int
--#if defined(IOP_PERMISSION_TAKES_FLAGS)
- afs_linux_permission(struct inode *ip, int mode, unsigned int flags)
- #elif defined(IOP_PERMISSION_TAKES_NAMEIDATA)
-+static int
- afs_linux_permission(struct inode *ip, int mode, struct nameidata *nd)
- #else
-+static int
- afs_linux_permission(struct inode *ip, int mode)
- #endif
- {
-diff --git a/src/cf/linux-kernel-sig.m4 b/src/cf/linux-kernel-sig.m4
-index 3d3aff909..e0cc9a2f3 100644
---- a/src/cf/linux-kernel-sig.m4
-+++ b/src/cf/linux-kernel-sig.m4
-@@ -14,4 +14,18 @@ AC_CHECK_LINUX_OPERATION([inode_operations], [rename], [takes_flags],
- [struct inode *oinode, struct dentry *odentry,
- struct inode *ninode, struct dentry *ndentry,
- unsigned int flags])
--])
-+dnl Linux 5.12 added the user_namespace parameter to the several
-+dnl inode operations functions.
-+dnl Perform a generic test using the inode_op create to test for this change.
-+AC_CHECK_LINUX_OPERATION([inode_operations], [create], [user_namespace],
-+ [#include <linux/fs.h>],
-+ [int],
-+ [struct user_namespace *mnt_userns,
-+ struct inode *inode, struct dentry *dentry,
-+ umode_t umode, bool flag])
-+dnl if HAVE_LINUX_INODE_OPERATIONS_CREATE_USER_NAMESPACE, create a more generic
-+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])])
-+])
-\ No newline at end of file
---
-2.31.1
-
diff --git a/PKGBUILD b/PKGBUILD
index ca8b935a91af..ad9dec82a4ea 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,8 +6,8 @@
pkgname=openafs-modules-dkms
_srcname=openafs
-pkgver=1.8.7
-pkgrel=3
+pkgver=1.8.8
+pkgrel=1
pkgdesc="Kernel module for OpenAFS (dkms)"
arch=('i686' 'x86_64' 'armv7h')
url="http://www.openafs.org"
@@ -17,58 +17,15 @@ provides=("openafs-modules=$pkgver")
conflicts=('openafs-features-libafs' 'openafs-modules' 'openafs<1.6.6-2')
options=(!emptydirs)
source=("http://openafs.org/dl/openafs/${pkgver}/${_srcname}-${pkgver}-src.tar.bz2"
- "dkms.conf"
- 0001-Avoid-duplicate-definitions-of-globals.patch
- 0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
- 0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
- 0004-LINUX-5.8-use-lru_cache_add.patch
- 0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
- 0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
- 0007-Linux-Refactor-test-for-32bit-compat.patch
- 0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch
- 0009-LINUX-Introduce-afs_d_path.patch
- 0010-Linux-Create-wrapper-for-setattr_prepare.patch
- 0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch)
-sha256sums=('53543a561fce67714fec9f2a6bf408c5cc1d061c7dc9d1459458275e8ccbfa79'
- '5ea5e184f9b44f5ed45817d2b5a10149d15c8c54f49e0b5b4b773652673cb9b0'
- '909ebe2f2f82187ec5c8bd19a385e310521dceedb0b0d5ce8413809a37fe5654'
- '2439b2f663feed02c526f4e34b2cdc2a1d5ad35f7223ade87508c1cf4359ee9c'
- 'e605d4e7154f9ccf4dec24fec27abe4e2947713f35dae6aa8698e5f8722609a7'
- '15b53b4ab0578eaa31f849670990e15949e67be8b330d7581825a5e8408953ed'
- 'ba8c81c035303cbcf204744516a83b66adac94384aaa59ea2ea1a619a41aa7c0'
- 'd078882d94adf881bac2e7955689931abe7ac443db86d85e0b60c72d8b27738e'
- '19ca49013e32824002e355a85df6e25028283a0b06a6409cc7d5cd9800fea488'
- '52d40f8a3b032a9fa0ae57bc15d3611bc652ff6e417a488eac4223cef0db9142'
- '457474e625565c28daa6d642b2416b4398b2b9fec3a8b90c048fc0460412a0ce'
- '76d73a55d3e8da63c9ead2cecdec1efbaeb78739bb5abf635a64380eeba35158'
- '8bc24efe33f06228134dd27e5c9a6832abb436e2fbe3fab09b529fed4a5b406c')
+ "dkms.conf")
+sha256sums=('daa8ef86a7727facfcde3bc97a6ad143129c1c25ee35f3347080ec7e9d284da0'
+ '5ea5e184f9b44f5ed45817d2b5a10149d15c8c54f49e0b5b4b773652673cb9b0')
prepare() {
cd "${srcdir}/${_srcname}-${pkgver}"
- # Fix compilation with GCC 10
- patch -p1 < "${srcdir}"/0001-Avoid-duplicate-definitions-of-globals.patch
-
- # Compatibility with Linux 5.8
- patch -p1 < "${srcdir}"/0002-LINUX-5.8-Replace-kernel_setsockopt-with-new-funcs.patch
- patch -p1 < "${srcdir}"/0003-LINUX-5.8-do-not-set-name-field-in-backing_dev_info.patch
- patch -p1 < "${srcdir}"/0004-LINUX-5.8-use-lru_cache_add.patch
-
- # Compatibility with Linux 5.9
- patch -p1 < "${srcdir}"/0005-LINUX-5.9-Remove-HAVE_UNLOCKED_IOCTL-COMPAT_IOCTL.patch
-
- # Compatibility with Linux 5.11
- patch -p1 < "${srcdir}"/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
- patch -p1 < "${srcdir}"/0007-Linux-Refactor-test-for-32bit-compat.patch
- patch -p1 < "${srcdir}"/0008-Linux-5.11-Test-32bit-compat-with-in_compat_syscall.patch
-
- # Compatibility with Linux 5.12
- patch -p1 < "${srcdir}"/0009-LINUX-Introduce-afs_d_path.patch
- patch -p1 < "${srcdir}"/0010-Linux-Create-wrapper-for-setattr_prepare.patch
- patch -p1 < "${srcdir}"/0011-Linux-5.12-Add-user_namespace-param-to-inode-ops.patch
-
# Only needed when changes to configure were made
- ./regen.sh -q
+ # ./regen.sh -q
}
build() {