From cfa65eea8cf389946b35526aa731407a8149e83a1000ab8a97032bbceafaac9d Mon Sep 17 00:00:00 2001 From: Christof Hanke Date: Fri, 26 Apr 2024 04:08:22 +0000 Subject: [PATCH 1/3] Accepting request 1170220 from home:hauky:branches:filesystems - update to openafs-1.8.11 - apply upstream patches for kernel 6.8 * 056a7a8.diff * 05ac614.diff * 073adec.diff * 0d9f6cf.diff * 0e983a9.diff * 112fb94.diff * 1e1bf8e.diff * 2056ce8.diff * 5312d06.diff * 67e48c8.diff * 6b20756.diff * 743d72f.diff * 7cae97b.diff * 81b910a.diff * 87ab04a.diff * 9f052c1.diff * a14a9ad.diff * a87845d.diff * aae8b00.diff * b77b304.diff * d1c89ac.diff * d9f3a2c.diff * db91384.diff * dffd0e1.diff * e0f425a.diff * e157f8f.diff * e428053.diff * ef7b8c5.diff * f5bafb0.diff * fca6fd9.diff OBS-URL: https://build.opensuse.org/request/show/1170220 OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=123 --- 056a7a8.diff | 46 +++ 05ac614.diff | 264 +++++++++++++ 073adec.diff | 126 ++++++ 0d9f6cf.diff | 134 +++++++ 0e983a9.diff | 347 +++++++++++++++++ 112fb94.diff | 57 +++ 1e1bf8e.diff | 80 ++++ 2056ce8.diff | 71 ++++ 5312d06.diff | 49 +++ 67e48c8.diff | 43 +++ 6b20756.diff | 75 ++++ 743d72f.diff | 48 +++ 7cae97b.diff | 66 ++++ 81b910a.diff | 81 ++++ 87ab04a.diff | 112 ++++++ 9f052c1.diff | 52 +++ ChangeLog | 40 ++ RELNOTES-1.8.11 | 90 +++++ RELNOTES-1.8.11pre1 | 1 - a14a9ad.diff | 177 +++++++++ a87845d.diff | 99 +++++ aae8b00.diff | 53 +++ b77b304.diff | 47 +++ d1c89ac.diff | 89 +++++ d9f3a2c.diff | 147 +++++++ db91384.diff | 71 ++++ dffd0e1.diff | 150 +++++++ e0f425a.diff | 67 ++++ e157f8f.diff | 473 +++++++++++++++++++++++ e428053.diff | 65 ++++ ef7b8c5.diff | 107 +++++ f5bafb0.diff | 78 ++++ fca6fd9.diff | 35 ++ openafs-1.8.11-doc.tar.bz2 | 3 + openafs-1.8.11-doc.tar.bz2.md5 | 1 + openafs-1.8.11-doc.tar.bz2.sha256 | 1 + openafs-1.8.11-src.tar.bz2 | 3 + openafs-1.8.11-src.tar.bz2.md5 | 1 + openafs-1.8.11-src.tar.bz2.sha256 | 1 + openafs-1.8.11pre1-doc.tar.bz2 | 3 - openafs-1.8.11pre1-doc.tar.bz2.md5 | 1 - openafs-1.8.11pre1-doc.tar.bz2.sha256 | 1 - openafs-1.8.11pre1-src.tar.bz2 | 3 - openafs-1.8.11pre1-src.tar.bz2.md5 | 1 - openafs-1.8.11pre1-src.tar.bz2.sha256 | 1 - openafs-client.service.allow_unsupported | 1 - openafs.changes | 36 ++ openafs.spec | 66 +++- sysconfig.openafs-fuse-client | 2 +- 49 files changed, 3549 insertions(+), 16 deletions(-) create mode 100644 056a7a8.diff create mode 100644 05ac614.diff create mode 100644 073adec.diff create mode 100644 0d9f6cf.diff create mode 100644 0e983a9.diff create mode 100644 112fb94.diff create mode 100644 1e1bf8e.diff create mode 100644 2056ce8.diff create mode 100644 5312d06.diff create mode 100644 67e48c8.diff create mode 100644 6b20756.diff create mode 100644 743d72f.diff create mode 100644 7cae97b.diff create mode 100644 81b910a.diff create mode 100644 87ab04a.diff create mode 100644 9f052c1.diff create mode 100644 RELNOTES-1.8.11 delete mode 100644 RELNOTES-1.8.11pre1 create mode 100644 a14a9ad.diff create mode 100644 a87845d.diff create mode 100644 aae8b00.diff create mode 100644 b77b304.diff create mode 100644 d1c89ac.diff create mode 100644 d9f3a2c.diff create mode 100644 db91384.diff create mode 100644 dffd0e1.diff create mode 100644 e0f425a.diff create mode 100644 e157f8f.diff create mode 100644 e428053.diff create mode 100644 ef7b8c5.diff create mode 100644 f5bafb0.diff create mode 100644 fca6fd9.diff create mode 100644 openafs-1.8.11-doc.tar.bz2 create mode 100644 openafs-1.8.11-doc.tar.bz2.md5 create mode 100644 openafs-1.8.11-doc.tar.bz2.sha256 create mode 100644 openafs-1.8.11-src.tar.bz2 create mode 100644 openafs-1.8.11-src.tar.bz2.md5 create mode 100644 openafs-1.8.11-src.tar.bz2.sha256 delete mode 100644 openafs-1.8.11pre1-doc.tar.bz2 delete mode 100644 openafs-1.8.11pre1-doc.tar.bz2.md5 delete mode 100644 openafs-1.8.11pre1-doc.tar.bz2.sha256 delete mode 100644 openafs-1.8.11pre1-src.tar.bz2 delete mode 100644 openafs-1.8.11pre1-src.tar.bz2.md5 delete mode 100644 openafs-1.8.11pre1-src.tar.bz2.sha256 diff --git a/056a7a8.diff b/056a7a8.diff new file mode 100644 index 0000000..77bc313 --- /dev/null +++ b/056a7a8.diff @@ -0,0 +1,46 @@ +From 056a7a8005a68cf2fb8be80668b139aa87a0de0b Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 09:28:02 -0700 +Subject: [PATCH] afs: Remove dummy_PSetAcl() + +The function dummy_PSetAcl() is not referenced anywhere within the +source tree. + +Remove the function dummy_PSetAcl(). + +The commit: 'doxygen-comments-20081010' (4b72f8765c) +introduced the function, but dummy_PSetAcl() has never been referenced +or defined within a header file. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15618 +Reviewed-by: Benjamin Kaduk +Tested-by: Benjamin Kaduk +(cherry picked from commit 05ca98687d882c72915e91430e29a4f2a36c502c) + +Change-Id: Ie4420a365e07d2d8564530e004df75330e86bea5 +--- + +diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c +index 9182a4b..7ddb5ad 100644 +--- a/src/afs/afs_pioctl.c ++++ b/src/afs/afs_pioctl.c +@@ -1426,12 +1426,6 @@ + * + * \post Changed ACL, via direct writing to the wire + */ +-int +-dummy_PSetAcl(char *ain, char *aout) +-{ +- return 0; +-} +- + DECL_PIOCTL(PSetAcl) + { + afs_int32 code; diff --git a/05ac614.diff b/05ac614.diff new file mode 100644 index 0000000..fe4a85c --- /dev/null +++ b/05ac614.diff @@ -0,0 +1,264 @@ +From 05ac6149f2f7998b6110c403d26757151b8e8ffe Mon Sep 17 00:00:00 2001 +From: Mark Vitale +Date: Thu, 11 Mar 2021 15:36:54 -0500 +Subject: [PATCH] afs: remove dead ICL (fstrace) code + +The ICL code (afs/afs_icl.c) which supports fstrace includes a number of +functions that have been dead code since the original IBM code import. +Some of these seem to have been intended to support fine-grained event +tracing, but the implementation was never completed. + +Remove the dead code. No functional change is incurred by this commit. + +Reviewed-on: https://gerrit.openafs.org/14555 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit ba58d9912cff07a6f2af7275017cf70115f1a88d) + +Change-Id: Ic0a6d5dac200e7e130fa8df66005bdaf291cf088 +Reviewed-on: https://gerrit.openafs.org/15682 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Michael Meffie +Reviewed-by: Benjamin Kaduk +--- + +diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c +index 8d09113..42b4a0c 100644 +--- a/src/afs/afs_icl.c ++++ b/src/afs/afs_icl.c +@@ -538,18 +538,6 @@ + #define ICL_APPENDLONG(lp, x) ICL_APPENDINT32((lp), (x)) + #endif + +-/* routine to tell whether we're dealing with the address or the +- * object itself +- */ +-int +-afs_icl_UseAddr(int type) +-{ +- if (type == ICL_TYPE_HYPER || type == ICL_TYPE_STRING +- || type == ICL_TYPE_FID || type == ICL_TYPE_INT64) +- return 1; +- else +- return 0; +-} + + void + afs_icl_AppendOne(struct afs_icl_log *logp, int type, long parm) +@@ -884,19 +872,6 @@ + return code; + } + +-/* return basic parameter information about a log */ +-int +-afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, +- afs_int32 * curSizep) +-{ +- ObtainReadLock(&logp->lock); +- *maxSizep = logp->logSize; +- *curSizep = logp->logElements; +- ReleaseReadLock(&logp->lock); +- return 0; +-} +- +- + /* hold and release logs */ + int + afs_icl_LogHold(struct afs_icl_log *logp) +@@ -904,14 +879,6 @@ + ObtainWriteLock(&afs_icl_lock, 187); + logp->refCount++; + ReleaseWriteLock(&afs_icl_lock); +- return 0; +-} +- +-/* hold and release logs, called with lock already held */ +-int +-afs_icl_LogHoldNL(struct afs_icl_log *logp) +-{ +- logp->refCount++; + return 0; + } + +@@ -1070,32 +1037,6 @@ + return tp; + } + +-int +-afs_icl_EnumerateLogs(int (*aproc) +- (char *name, char *arock, struct afs_icl_log * tp), +- char *arock) +-{ +- struct afs_icl_log *tp; +- afs_int32 code; +- +- code = 0; +- ObtainWriteLock(&afs_icl_lock, 195); +- for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { +- tp->refCount++; /* hold this guy */ +- ReleaseWriteLock(&afs_icl_lock); +- ObtainReadLock(&tp->lock); +- code = (*aproc) (tp->name, arock, tp); +- ReleaseReadLock(&tp->lock); +- ObtainWriteLock(&afs_icl_lock, 196); +- if (--tp->refCount == 0) +- afs_icl_ZapLog(tp); +- if (code) +- break; +- } +- ReleaseWriteLock(&afs_icl_lock); +- return code; +-} +- + struct afs_icl_set *afs_icl_allSets = 0; + + int +@@ -1198,46 +1139,6 @@ + return 0; + } + +-/* function to change event enabling information for a particular set */ +-int +-afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, int setValue) +-{ +- char *tp; +- +- ObtainWriteLock(&setp->lock, 200); +- if (!ICL_EVENTOK(setp, eventID)) { +- ReleaseWriteLock(&setp->lock); +- return -1; +- } +- tp = &setp->eventFlags[ICL_EVENTBYTE(eventID)]; +- if (setValue) +- *tp |= ICL_EVENTMASK(eventID); +- else +- *tp &= ~(ICL_EVENTMASK(eventID)); +- ReleaseWriteLock(&setp->lock); +- return 0; +-} +- +-/* return indication of whether a particular event ID is enabled +- * for tracing. If *getValuep is set to 0, the event is disabled, +- * otherwise it is enabled. All events start out enabled by default. +- */ +-int +-afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, int *getValuep) +-{ +- ObtainReadLock(&setp->lock); +- if (!ICL_EVENTOK(setp, eventID)) { +- ReleaseWriteLock(&setp->lock); +- return -1; +- } +- if (setp->eventFlags[ICL_EVENTBYTE(eventID)] & ICL_EVENTMASK(eventID)) +- *getValuep = 1; +- else +- *getValuep = 0; +- ReleaseReadLock(&setp->lock); +- return 0; +-} +- + /* hold and release event sets */ + int + afs_icl_SetHold(struct afs_icl_set *setp) +@@ -1337,54 +1238,6 @@ + } + } + ReleaseReadLock(&setp->lock); +- return code; +-} +- +-int +-afs_icl_EnumerateSets(int (*aproc) +- (char *name, char *arock, struct afs_icl_log * tp), +- char *arock) +-{ +- struct afs_icl_set *tp, *np; +- afs_int32 code; +- +- code = 0; +- ObtainWriteLock(&afs_icl_lock, 205); +- for (tp = afs_icl_allSets; tp; tp = np) { +- tp->refCount++; /* hold this guy */ +- ReleaseWriteLock(&afs_icl_lock); +- code = (*aproc) (tp->name, arock, (struct afs_icl_log *)tp); +- ObtainWriteLock(&afs_icl_lock, 206); +- np = tp->nextp; /* tp may disappear next, but not np */ +- if (--tp->refCount == 0 && (tp->states & ICL_SETF_DELETED)) +- afs_icl_ZapSet(tp); +- if (code) +- break; +- } +- ReleaseWriteLock(&afs_icl_lock); +- return code; +-} +- +-int +-afs_icl_AddLogToSet(struct afs_icl_set *setp, struct afs_icl_log *newlogp) +-{ +- int i; +- int code = -1; +- +- ObtainWriteLock(&setp->lock, 207); +- for (i = 0; i < ICL_LOGSPERSET; i++) { +- if (!setp->logs[i]) { +- setp->logs[i] = newlogp; +- code = i; +- afs_icl_LogHold(newlogp); +- if (!(setp->states & ICL_SETF_FREED)) { +- /* bump up the number of sets using the log */ +- afs_icl_LogUse(newlogp); +- } +- break; +- } +- } +- ReleaseWriteLock(&setp->lock); + return code; + } + +diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h +index e9a655e..ed43635 100644 +--- a/src/afs/afs_prototypes.h ++++ b/src/afs/afs_prototypes.h +@@ -364,10 +364,7 @@ + extern int afs_icl_CopyOut(struct afs_icl_log *logp, + afs_int32 * bufferp, afs_int32 * bufSizep, + afs_uint32 * cookiep, afs_int32 * flagsp); +-extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, +- afs_int32 * curSizep); + extern int afs_icl_LogHold(struct afs_icl_log *logp); +-extern int afs_icl_LogHoldNL(struct afs_icl_log *logp); + extern int afs_icl_LogUse(struct afs_icl_log *logp); + extern int afs_icl_LogFreeUse(struct afs_icl_log *logp); + extern int afs_icl_LogSetSize(struct afs_icl_log *logp, +@@ -378,11 +375,6 @@ + extern int afs_icl_ZeroLog(struct afs_icl_log *logp); + extern int afs_icl_LogFree(struct afs_icl_log *logp); + extern struct afs_icl_log *afs_icl_FindLog(char *name); +-extern int +- afs_icl_EnumerateLogs(int (*aproc) +- +- (char *name, char *arock, struct afs_icl_log * tp), +- char *arock); + extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, + struct afs_icl_log *fatalLogp, + struct afs_icl_set **outSetpp); +@@ -391,18 +383,7 @@ + struct afs_icl_log *fatalLogp, + afs_uint32 flags, + struct afs_icl_set **outSetpp); +-extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, +- int setValue); +-extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, +- int *getValuep); + extern int afs_icl_ZeroSet(struct afs_icl_set *setp); +-extern int +- afs_icl_EnumerateSets(int (*aproc) +- +- (char *name, char *arock, struct afs_icl_log * tp), +- char *arock); +-extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, +- struct afs_icl_log *newlogp); + extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); + extern int afs_icl_SetHold(struct afs_icl_set *setp); + extern int afs_icl_ZapSet(struct afs_icl_set *setp); diff --git a/073adec.diff b/073adec.diff new file mode 100644 index 0000000..ebf2a52 --- /dev/null +++ b/073adec.diff @@ -0,0 +1,126 @@ +From 073adec17a9b7b55d3672b17f7faa4a122ce6e9d Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Thu, 08 Feb 2024 12:22:13 -0700 +Subject: [PATCH] afs: Remove SRXAFSCB_FetchData/StoreData + +Commit 'client-64bit-file-size-support-20011031' (971b18bc42) introduced +the RPC functions SRXAFSCB_FetchData() and SRXAFSCB_StoreData with RPC +numbers of 65536 and 65537 respectively. + +Commit 'more-64bit-file-size-support-20011031' (c5b1a3775f) removed the +references from afscbint.xg, but did not remove the actual code. The +65536 RPC number was reassigned to SRXAFSCB_GetCE64, and the commit: +'This is mostly a rewrite of src/afs/afs_cell.c, and associated changes' +(629d08065) assigned the 65537 RPC to SRXAFSCB_GetCellByNum. + +Remove the 2 functions since there are no references other than the +prototype in afs_prototypes.h. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +Reviewed-on: https://gerrit.openafs.org/15639 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 379f7fc51d411990189ec28e48c91edc87d76120) + +Change-Id: I1a3539227d22e6df89d78245634dfeb14943035a +--- + +diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c +index 22edefb..56e8cd2 100644 +--- a/src/afs/afs_callback.c ++++ b/src/afs/afs_callback.c +@@ -1473,71 +1473,6 @@ + } + + /*------------------------------------------------------------------------ +- * EXPORTED SRXAFSCB_FetchData +- * +- * Description: +- * Routine to do third party move from a remioserver to the original +- * issuer of an ArchiveData request. Presently supported only by the +- * "fs" command, not by the AFS client. +- * +- * Arguments: +- * rxcall: Ptr to Rx call on which this request came in. +- * Fid: pointer to AFSFid structure. +- * Fd: File descriptor inside fs command. +- * Position: Offset in the file. +- * Length: Data length to transfer. +- * TotalLength: Pointer to total file length field +- * +- * Returns: +- * 0 on success +- * +- * Environment: +- * Nothing interesting. +- * +- * Side Effects: +- *------------------------------------------------------------------------*/ +-int +-SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, afs_int32 Fd, +- afs_int64 Position, afs_int64 Length, +- afs_int64 * TotalLength) +-{ +- return ENOSYS; +-} +- +-/*------------------------------------------------------------------------ +- * EXPORTED SRXAFSCB_StoreData +- * +- * Description: +- * Routine to do third party move from a remioserver to the original +- * issuer of a RetrieveData request. Presently supported only by the +- * "fs" command, not by the AFS client. +- * +- * Arguments: +- * rxcall: Ptr to Rx call on which this request came in. +- * Fid: pointer to AFSFid structure. +- * Fd: File descriptor inside fs command. +- * Position: Offset in the file. +- * Length: Data length to transfer. +- * TotalLength: Pointer to total file length field +- * +- * Returns: +- * 0 on success +- * +- * Environment: +- * Nothing interesting. +- * +- * Side Effects: +- * As advertised. +- *------------------------------------------------------------------------*/ +-int +-SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, afs_int32 Fd, +- afs_int64 Position, afs_int64 Length, +- afs_int64 * TotalLength) +-{ +- return ENOSYS; +-} +- +-/*------------------------------------------------------------------------ + * EXPORTED SRXAFSCB_GetCellByNum + * + * Description: +diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h +index ed43635..208bd03 100644 +--- a/src/afs/afs_prototypes.h ++++ b/src/afs/afs_prototypes.h +@@ -103,13 +103,6 @@ + afs_uint32 * serverVersion, + afs_uint32 * configCount, + cacheConfig * config); +-extern int SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, +- afs_int32 Fd, afs_int64 Position, +- afs_int64 Length, afs_int64 * TotalLength); +-extern int SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, +- afs_int32 Fd, afs_int64 Position, +- afs_int64 Length, afs_int64 * TotalLength); +- + + /* afs_cbqueue.c */ + extern afs_rwlock_t afs_xcbhash; diff --git a/0d9f6cf.diff b/0d9f6cf.diff new file mode 100644 index 0000000..a6b428c --- /dev/null +++ b/0d9f6cf.diff @@ -0,0 +1,134 @@ +From 0d9f6cf121e49cfe1a2047b98d4c30b82a1898bd Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Thu, 15 Feb 2024 09:00:05 -0700 +Subject: [PATCH] afs: Move function prototypes into headers + +Several .c files contain external function prototypes, while the +implementing files do not have these prototypes. + +Move these prototypes into header files so that the prototypes are +available to both the caller and the implementation. + +Because the file holding the implementation does not have prototypes, +these functions are flagged when building against a Linux 6.8 kernel +(which sets the -Wmissing-declarations and -Wmissing-prototypes compiler +flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Add the prototypes for the following to afs_prototypes.h: + exporter_add + afs_syscall (AFS_LINUX_ENV) + BlobScan + +Remove the prototypes from the .c files where they are referenced. + +Reviewed-on: https://gerrit.openafs.org/15642 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 85781d7e83ae4501d8ab267bf55ef63f90f63101) + +Change-Id: I74333e99e08af88bebdcbff4767d79397acac358 +--- + +diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c +index fbdee29..3e79774 100644 +--- a/src/afs/LINUX/osi_ioctl.c ++++ b/src/afs/LINUX/osi_ioctl.c +@@ -34,9 +34,6 @@ + + extern struct proc_dir_entry *openafs_procfs; + +-extern asmlinkage long +-afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); +- + static int + afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, + unsigned long arg) +diff --git a/src/afs/LINUX/osi_syscall.c b/src/afs/LINUX/osi_syscall.c +index 5e9e519..dc78da8 100644 +--- a/src/afs/LINUX/osi_syscall.c ++++ b/src/afs/LINUX/osi_syscall.c +@@ -91,9 +91,6 @@ + + + /***** ALL PLATFORMS *****/ +-extern asmlinkage long +-afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); +- + static SYSCALLTYPE *afs_sys_call_table; + static SYSCALLTYPE afs_ni_syscall = 0; + +diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c +index 7e85aa5..08fccb1 100644 +--- a/src/afs/LINUX/osi_vnodeops.c ++++ b/src/afs/LINUX/osi_vnodeops.c +@@ -407,8 +407,6 @@ + } + #endif + +-extern int BlobScan(struct dcache * afile, afs_int32 ablob, afs_int32 *ablobOut); +- + /* This is a complete rewrite of afs_readdir, since we can make use of + * filldir instead of afs_readdir_move. Note that changes to vcache/dcache + * handling and use of bulkstats will need to be reflected here as well. +diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c +index e1796c5..0fbe4e8 100644 +--- a/src/afs/VNOPS/afs_vnop_lookup.c ++++ b/src/afs/VNOPS/afs_vnop_lookup.c +@@ -667,8 +667,6 @@ + return 0; + } + +-extern int BlobScan(struct dcache * afile, afs_int32 ablob, afs_int32 *ablobOut); +- + /* called with an unlocked directory and directory cookie. Areqp + * describes who is making the call. + * Scans the next N (about 30, typically) directory entries, and does +diff --git a/src/afs/afs_nfsclnt.c b/src/afs/afs_nfsclnt.c +index fbb5006..4c7806d 100644 +--- a/src/afs/afs_nfsclnt.c ++++ b/src/afs/afs_nfsclnt.c +@@ -160,7 +160,6 @@ + osi_Assert(ISAFS_GLOCK()); + #endif + if (!init_nfsexporter) { +- extern struct afs_exporter *exporter_add(); + + init_nfsexporter = 1; + LOCK_INIT(&afs_xnfspag, "afs_xnfspag"); +diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h +index 208bd03..9b3b1af 100644 +--- a/src/afs/afs_prototypes.h ++++ b/src/afs/afs_prototypes.h +@@ -331,6 +331,8 @@ + + /* afs_exporter.c */ + extern struct afs_exporter *root_exported; ++extern struct afs_exporter * exporter_add(afs_int32 size, struct exporterops *ops, ++ afs_int32 state, afs_int32 type, char *data); + extern struct afs_exporter *exporter_find(int type); + extern void shutdown_exporter(void); + +@@ -923,6 +925,10 @@ + extern int Afs_syscall(void); + #endif + ++#if defined(AFS_LINUX_ENV) ++extern asmlinkage long afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); ++#endif ++ + /* afs_tokens.c */ + struct ktc_tokenUnion; + struct ktc_setTokenData; +@@ -1292,6 +1298,7 @@ + + /* VNOPS/afs_vnop_readdir.c */ + extern int afs_rd_stash_i; ++extern int BlobScan(struct dcache * afile, afs_int32 ablob, int *ablobOut); + #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, + afs_ucred_t *acred, int *eofp); diff --git a/0e983a9.diff b/0e983a9.diff new file mode 100644 index 0000000..9e4a8e4 --- /dev/null +++ b/0e983a9.diff @@ -0,0 +1,347 @@ +From 0e983a9a7e010a4e7c8a4c60cf313e566323bbf1 Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Sun, 03 May 2020 10:33:28 -0500 +Subject: [PATCH] afs: Drop GLOCK for various Rx calls + +Most calls into Rx from libafs do so without the AFS_GLOCK, but a few +pieces of code still hold AFS_GLOCK while making some Rx calls. A few +calls into Rx also currently require AFS_GLOCK, but drop AFS_GLOCK +internally, which is somewhat confusing/inconsistent. Calling Rx +functions with AFS_GLOCK held can potentially cause locking/allocation +problems on various platforms, such as FreeBSD where we get WITNESS +warnings about acquiring sleepable Rx locks while holding the +non-sleepable AFS_GLOCK. + +Fix a variety of Rx calls from libafs to drop AFS_GLOCK before calling +into Rx. Specifically, this commit handles calls to rxi_GetIFInfo, +rx_InitHost, rx_StartServer, rx_ServerProc, rx_GetConnection, +rx_DestroyConnection/rx_PutConnection, and +rx_SetConnSecondsUntilNatPing. + +For calls made via afs_start_thread, adjust afs_start_thread to accept +a new argument that says whether to acquire AFS_GLOCK for the relevant +function or not. + +For a call to rx_InitHost inside afs_InitSetup, dropping GLOCK makes +it possible for another thread to also enter afs_InitSetup while we're +running, before afs_InitSetup_done is set. To prevent two threads from +running afs_InitSetup in parallel, introduce afs_InitSetup_running +(which is set while afs_InitSetup is running), and simply wait for it +to be cleared if it is set when we enter afs_InitSetup. + +This commit does not handle strictly all calls into Rx from libafs, +since many Rx calls don't do anything interesting besides set some +internal variables, and so AFS_GLOCK doesn't really matter for them, +and dropping/reacquiring it around those calls may have performance +impact. + +Reviewed-on: https://gerrit.openafs.org/14184 +Reviewed-by: Benjamin Kaduk +Tested-by: BuildBot +(cherry picked from commit d5e1428a3bd4a7fbb4401cf17176474f0c1825d3) + + Conflicts: + src/afs/afs_call.c - context only due to not having commit: + 'Log binding ip address and port during startup' (02dede5d40) + +Change-Id: I0d14105d5dc8bfd4740c7a9adfc61c36f8a2318c +--- + +diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c +index aa5d5fc..be69846 100644 +--- a/src/afs/LINUX/osi_misc.c ++++ b/src/afs/LINUX/osi_misc.c +@@ -155,7 +155,18 @@ + + + /* This could use some work, and support on more platforms. */ +-int afs_thread_wrapper(void *rock) ++static int ++afs_thread_wrapper(void *rock) ++{ ++ void (*proc)(void) = rock; ++ __module_get(THIS_MODULE); ++ (*proc)(); ++ module_put(THIS_MODULE); ++ return 0; ++} ++ ++static int ++afs_thread_wrapper_glock(void *rock) + { + void (*proc)(void) = rock; + __module_get(THIS_MODULE); +@@ -166,7 +177,12 @@ + return 0; + } + +-void afs_start_thread(void (*proc)(void), char *name) ++void ++afs_start_thread(void (*proc)(void), char *name, int needs_glock) + { +- kthread_run(afs_thread_wrapper, proc, "%s", name); ++ if (needs_glock) { ++ kthread_run(afs_thread_wrapper_glock, proc, "%s", name); ++ } else { ++ kthread_run(afs_thread_wrapper, proc, "%s", name); ++ } + } +diff --git a/src/afs/LINUX/osi_prototypes.h b/src/afs/LINUX/osi_prototypes.h +index 130b566..2ed0543 100644 +--- a/src/afs/LINUX/osi_prototypes.h ++++ b/src/afs/LINUX/osi_prototypes.h +@@ -50,7 +50,7 @@ + struct dentry **dpp); + extern int osi_abspath(char *aname, char *buf, int buflen, + int followlink, char **pathp); +-extern void afs_start_thread(void (*proc)(void), char *name); ++extern void afs_start_thread(void (*proc)(void), char *name, int needs_glock); + + /* osi_probe.c */ + extern void *osi_find_syscall_table(int which); +diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c +index 4ac63b1..7fb323c 100644 +--- a/src/afs/afs_call.c ++++ b/src/afs/afs_call.c +@@ -104,10 +104,18 @@ + static int + afs_InitSetup(int preallocs) + { ++ static int afs_InitSetup_running; ++ + int code; ++ ++ while (afs_InitSetup_running) { ++ afs_osi_Sleep(&afs_InitSetup_running); ++ } + + if (afs_InitSetup_done) + return EAGAIN; ++ ++ afs_InitSetup_running = 1; + + #ifdef AFS_SUN510_ENV + /* Initialize a RW lock for the ifinfo global array */ +@@ -133,10 +141,12 @@ + /* start RX */ + if(!afscall_set_rxpck_received) + rx_extraPackets = AFS_NRXPACKETS; /* smaller # of packets */ ++ AFS_GUNLOCK(); + code = rx_InitHost(rx_bindhost, htons(7001)); ++ AFS_GLOCK(); + if (code) { + afs_warn("AFS: RX failed to initialize %d).\n", code); +- return code; ++ goto done; + } + rx_SetRxDeadTime(afs_rx_deadtime); + /* resource init creates the services */ +@@ -145,6 +155,9 @@ + afs_InitSetup_done = 1; + afs_osi_Wakeup(&afs_InitSetup_done); + ++ done: ++ afs_InitSetup_running = 0; ++ afs_osi_Wakeup(&afs_InitSetup_running); + return code; + } + +@@ -1703,7 +1716,9 @@ + afs_warn("CB... "); + + afs_termState = AFSOP_STOP_RXCALLBACK; ++ AFS_GUNLOCK(); + rx_WakeupServerProcs(); ++ AFS_GLOCK(); + #ifdef AFS_AIX51_ENV + shutdown_rxkernel(); + #endif +@@ -1756,7 +1771,9 @@ + afs_warn("NetIfPoller... "); + osi_StopNetIfPoller(); + #endif ++ AFS_GUNLOCK(); + rxi_FreeAllPackets(); ++ AFS_GLOCK(); + + afs_termState = AFSOP_STOP_COMPLETE; + +diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c +index 1fe990e..7cffef6 100644 +--- a/src/afs/afs_callback.c ++++ b/src/afs/afs_callback.c +@@ -985,7 +985,9 @@ + /* + * Donate this process to Rx. + */ ++ AFS_GUNLOCK(); + rx_ServerProc(NULL); ++ AFS_GLOCK(); + return (0); + + } /*afs_RXCallBackServer */ +diff --git a/src/afs/afs_conn.c b/src/afs/afs_conn.c +index 2a3a513..8728ce5 100644 +--- a/src/afs/afs_conn.c ++++ b/src/afs/afs_conn.c +@@ -532,7 +532,9 @@ + */ + if ((service != 52) && (sap->natping == NULL)) { + sap->natping = tc; ++ AFS_GUNLOCK(); + rx_SetConnSecondsUntilNatPing(tc->id, 20); ++ AFS_GLOCK(); + } + + tc->forceConnectFS = 0; /* apparently we're appropriately connected now */ +@@ -542,7 +544,9 @@ + } /* end of if (tc->forceConnectFS)*/ + + *rxconn = tc->id; ++ AFS_GUNLOCK(); + rx_GetConnection(*rxconn); ++ AFS_GLOCK(); + + ReleaseSharedLock(&afs_xconn); + return tc; +@@ -672,7 +676,9 @@ + (unsigned long)(uintptrsz)ac, (int)ac->refCount); + } + ac->parent->refCount--; ++ AFS_GUNLOCK(); + rx_PutConnection(rxconn); ++ AFS_GLOCK(); + } /*afs_PutConn */ + + +diff --git a/src/afs/afs_daemons.c b/src/afs/afs_daemons.c +index 1879772..632aa84 100644 +--- a/src/afs/afs_daemons.c ++++ b/src/afs/afs_daemons.c +@@ -223,19 +223,21 @@ + } + } + if (last10MinCheck + 600 < now) { ++ int addrs_changed; + #ifdef AFS_USERSPACE_IP_ADDR + extern int rxi_GetcbiInfo(void); + #endif + afs_Trace1(afs_iclSetp, CM_TRACE_PROBEUP, ICL_TYPE_INT32, 600); + #ifdef AFS_USERSPACE_IP_ADDR +- if (rxi_GetcbiInfo()) { /* addresses changed from last time */ ++ addrs_changed = rxi_GetcbiInfo(); ++#else ++ AFS_GUNLOCK(); ++ addrs_changed = rxi_GetIFInfo(); ++ AFS_GLOCK(); ++#endif ++ if (addrs_changed) { /* addresses changed from last time */ + afs_FlushCBs(); + } +-#else /* AFS_USERSPACE_IP_ADDR */ +- if (rxi_GetIFInfo()) { /* addresses changed from last time */ +- afs_FlushCBs(); +- } +-#endif /* else AFS_USERSPACE_IP_ADDR */ + if (!afs_CheckServerDaemonStarted) + afs_CheckServers(0, NULL); + afs_GCUserData(); /* gc old conns */ +diff --git a/src/afs/afs_init.c b/src/afs/afs_init.c +index bdb791c..efa5132 100644 +--- a/src/afs/afs_init.c ++++ b/src/afs/afs_init.c +@@ -554,7 +554,9 @@ + afs_server = + rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", &secobj, 1, + RXSTATS_ExecuteRequest); ++ AFS_GUNLOCK(); + rx_StartServer(0); ++ AFS_GLOCK(); + afs_osi_Wakeup(&afs_server); /* wakeup anyone waiting for it */ + return 0; + +diff --git a/src/afs/afs_pag_call.c b/src/afs/afs_pag_call.c +index 610cfb3..9b7a906 100644 +--- a/src/afs/afs_pag_call.c ++++ b/src/afs/afs_pag_call.c +@@ -91,9 +91,12 @@ + afs_uuid_create(&afs_cb_interface.uuid); + + AFS_GLOCK(); +- + afs_InitStats(); ++ AFS_GUNLOCK(); ++ + rx_Init(htons(7001)); ++ ++ AFS_GLOCK(); + + AFS_STATCNT(afs_ResourceInit); + AFS_RWLOCK_INIT(&afs_xuser, "afs_xuser"); +@@ -117,18 +120,20 @@ + 1, RXSTATS_ExecuteRequest); + pagcb_svc = rx_NewService(0, PAGCB_SERVICEID, "pagcb", &srv_secobj, + 1, PAGCB_ExecuteRequest); ++ AFS_GUNLOCK(); + rx_StartServer(0); ++ AFS_GLOCK(); + + clt_secobj = rxnull_NewClientSecurityObject(); + rmtsys_conn = rx_NewConnection(nfs_server_addr, htons(7009), + RMTSYS_SERVICEID, clt_secobj, 0); + + #ifdef RXK_LISTENER_ENV +- afs_start_thread(rxk_Listener, "Rx Listener"); ++ afs_start_thread(rxk_Listener, "Rx Listener", 1); + #endif +- afs_start_thread((void *)(void *)rx_ServerProc, "Rx Server Thread"); +- afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon"); +- afs_start_thread(afs_Daemon, "AFS PAG Daemon"); ++ afs_start_thread((void *)(void *)rx_ServerProc, "Rx Server Thread", 0); ++ afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon", 1); ++ afs_start_thread(afs_Daemon, "AFS PAG Daemon", 1); + + afs_icl_InitLogs(); + +diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c +index c90df3d..239cf16 100644 +--- a/src/rx/rx_kcommon.c ++++ b/src/rx/rx_kcommon.c +@@ -267,13 +267,7 @@ + threadID = rxi_availProcs++; + MUTEX_EXIT(&rx_quota_mutex); + +-# ifdef RX_ENABLE_LOCKS +- AFS_GUNLOCK(); +-# endif /* RX_ENABLE_LOCKS */ + rxi_ServerProc(threadID, NULL, NULL); +-# ifdef RX_ENABLE_LOCKS +- AFS_GLOCK(); +-# endif /* RX_ENABLE_LOCKS */ + + return NULL; + } +@@ -856,8 +850,6 @@ + # if (defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)) && defined(KERNEL_FUNNEL) + thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL); + # endif +- AFS_ASSERT_GLOCK(); +- AFS_GUNLOCK(); + # if defined(AFS_HPUX102_ENV) + # if defined(AFS_HPUX110_ENV) + /* we need a file associated with the socket so sosend in NetSend +@@ -997,14 +989,12 @@ + # endif /* else defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) */ + # endif /* else AFS_HPUX110_ENV */ + +- AFS_GLOCK(); + # if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL) + thread_funnel_switch(NETWORK_FUNNEL, KERNEL_FUNNEL); + # endif + return (osi_socket *)newSocket; + + bad: +- AFS_GLOCK(); + # if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL) + thread_funnel_switch(NETWORK_FUNNEL, KERNEL_FUNNEL); + # endif diff --git a/112fb94.diff b/112fb94.diff new file mode 100644 index 0000000..44e0348 --- /dev/null +++ b/112fb94.diff @@ -0,0 +1,57 @@ +From 112fb94a608a9a810cc9b43fdf762f15277d9eaa Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Thu, 08 Feb 2024 11:50:16 -0700 +Subject: [PATCH] afs: Declare init_hckernel_mutex() + +The function init_hckernel_mutex() (in rand.c) is flagged due to a +missing prototype when building against a Linux 6.8 kernel (which sets +the -Wmissing-declarations and -Wmissing-prototypes compiler flags as +default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Add a function prototype for init_hckernel_mutex() to afs_osi.h and +remove the prototype from afs_osi.c + +There are no functional changes with this commit. + +Reviewed-on: https://gerrit.openafs.org/15622 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit ccc2af429710104793fb4659b10697cceab182b3) + +Change-Id: Ic5eb4584a980657a01a1cb4411c0c1f03b1f3560 +--- + +diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c +index 6f54c63..e8f852e 100644 +--- a/src/afs/afs_osi.c ++++ b/src/afs/afs_osi.c +@@ -25,11 +25,6 @@ + * -- On HP called from afsc_link. + * -- On SGI called from afs_init. */ + +-/* No hckernel-specific header for this prototype. */ +-#ifndef UKERNEL +-extern void init_hckernel_mutex(void); +-#endif +- + afs_lock_t afs_ftf; /* flush text lock */ + + #ifdef AFS_SGI_ENV +diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h +index 79c44a9..e3f0e0c 100644 +--- a/src/afs/afs_osi.h ++++ b/src/afs/afs_osi.h +@@ -458,4 +458,9 @@ + # define osi_ShouldDeferRemunlink(avc) 0 + #endif + ++/* No hckernel-specific header for this prototype. */ ++#ifndef UKERNEL ++extern void init_hckernel_mutex(void); ++#endif ++ + #endif /* _AFS_OSI_ */ diff --git a/1e1bf8e.diff b/1e1bf8e.diff new file mode 100644 index 0000000..b1b2d1d --- /dev/null +++ b/1e1bf8e.diff @@ -0,0 +1,80 @@ +From 1e1bf8ebcd3c18b05326cd7b26a471db804aeaeb Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Tue, 24 Jul 2018 23:22:01 -0500 +Subject: [PATCH] LINUX: Minor osi_vfsop.c cleanup + +- Fix the formatting on afs_mount/afs_get_sb definitions + +- Declare a couple of functions static that are not referenced outside + of this file + +Reviewed-on: https://gerrit.openafs.org/13282 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit fa15fbda0aa0c3810695d9b867d3258b60e76b7c) + +Change-Id: I8a32475bf2ddb9c7206aef679947021925697c5a +Reviewed-on: https://gerrit.openafs.org/15680 +Reviewed-by: Andrew Deason +Reviewed-by: Michael Meffie +Tested-by: Benjamin Kaduk +Reviewed-by: Benjamin Kaduk +--- + +diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c +index b85ab3f..bb49a5c 100644 +--- a/src/afs/LINUX/osi_vfsops.c ++++ b/src/afs/LINUX/osi_vfsops.c +@@ -40,7 +40,7 @@ + + /* Forward declarations */ + static int afs_root(struct super_block *afsp); +-int afs_fill_super(struct super_block *sb, void *data, int silent); ++static int afs_fill_super(struct super_block *sb, void *data, int silent); + + + /* +@@ -52,19 +52,22 @@ + #if defined(STRUCT_FILE_SYSTEM_TYPE_HAS_MOUNT) + static struct dentry * + afs_mount(struct file_system_type *fs_type, int flags, +- const char *dev_name, void *data) { ++ const char *dev_name, void *data) ++{ + return mount_nodev(fs_type, flags, data, afs_fill_super); + } + #elif defined(GET_SB_HAS_STRUCT_VFSMOUNT) + static int + afs_get_sb(struct file_system_type *fs_type, int flags, +- const char *dev_name, void *data, struct vfsmount *mnt) { ++ const char *dev_name, void *data, struct vfsmount *mnt) ++{ + return get_sb_nodev(fs_type, flags, data, afs_fill_super, mnt); + } + #else + static struct super_block * + afs_get_sb(struct file_system_type *fs_type, int flags, +- const char *dev_name, void *data) { ++ const char *dev_name, void *data) ++{ + return get_sb_nodev(fs_type, flags, data, afs_fill_super); + } + #endif +@@ -83,7 +86,7 @@ + + struct backing_dev_info *afs_backing_dev_info; + +-int ++static int + afs_fill_super(struct super_block *sb, void *data, int silent) + { + int code = 0; +@@ -372,7 +375,7 @@ + * statp is in user space, so we need to cobble together a statfs, then + * copy it. + */ +-int ++static int + #if defined(STATFS_TAKES_DENTRY) + afs_statfs(struct dentry *dentry, struct kstatfs *statp) + #else diff --git a/2056ce8.diff b/2056ce8.diff new file mode 100644 index 0000000..69080a5 --- /dev/null +++ b/2056ce8.diff @@ -0,0 +1,71 @@ +From 2056ce8ae0d617d663e6181573c982994a1836db Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 15:30:23 -0700 +Subject: [PATCH] rx: Add static attribute to internal functions + +When building against a Linux 6.8 kernel, functions that are missing +prototypes or declarations are flagged. + +We can add the static attribute to functions that are not referenced +outside of the file that implements them to avoid having these functions +flagged by the compiler. + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +There are no functional changes in this commit. + +Reviewed-on: https://gerrit.openafs.org/15626 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 55adceba2d561ec4e89235de329782a68e603a11) + +Change-Id: I1b2a6e1c07bd4b75b7b83e177f17865eb903e488 +--- + +diff --git a/src/rx/rx.c b/src/rx/rx.c +index aaec609..d6c52c3 100644 +--- a/src/rx/rx.c ++++ b/src/rx/rx.c +@@ -6513,7 +6513,7 @@ + return -1; + } + +-void ++static void + rxi_NatKeepAliveEvent(struct rxevent *event, void *arg1, + void *dummy, int dummy2) + { +@@ -6615,7 +6615,7 @@ + * declared dead; if nothing has been sent for a while, we send a + * keep-alive packet (if we're actually trying to keep the call alive) + */ +-void ++static void + rxi_KeepAliveEvent(struct rxevent *event, void *arg1, void *dummy, + int dummy2) + { +@@ -6656,7 +6656,7 @@ + } + + /* Does what's on the nameplate. */ +-void ++static void + rxi_GrowMTUEvent(struct rxevent *event, void *arg1, void *dummy, int dummy2) + { + struct rx_call *call = arg1; +@@ -8266,7 +8266,7 @@ + static int rxi_monitor_peerStats = 0; + + +-void ++static void + rxi_ClearRPCOpStat(rx_function_entry_v1_p rpc_stat) + { + rpc_stat->invocations = 0; diff --git a/5312d06.diff b/5312d06.diff new file mode 100644 index 0000000..ede79c5 --- /dev/null +++ b/5312d06.diff @@ -0,0 +1,49 @@ +From 5312d069bc57d200ff65bf968c9bdff0f38fe653 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 09:13:27 -0700 +Subject: [PATCH] afs: Remove afs_osi_UnmaskUserLoop() + +The function afs_osi_UnmaskUserLoop() is not referenced anywhere within +the source tree. + +Remove the function afs_osi_UnmaskUserLoop(). + +The commit: 'darwin-afsdb-handler-signal-mask-20040728' (9728182c00) +introduced the function, but afs_osi_UnmaskUserLoop() has never been +referenced or defined within a header file. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15617 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 587cfce29cb4e014e5b8d96e0433c5e7d2c6729a) + +Change-Id: I0fe91a41e8f00773cb1d5976a8c3e39e4415f6bc +--- + +diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c +index 18732d1..6f54c63 100644 +--- a/src/afs/afs_osi.c ++++ b/src/afs/afs_osi.c +@@ -152,14 +152,6 @@ + #endif + } + +-void +-afs_osi_UnmaskUserLoop(void) +-{ +-#ifdef AFS_DARWIN_ENV +- afs_osi_fullSigRestore(); +-#endif +-} +- + /* register rxk listener proc info */ + void + afs_osi_RxkRegister(void) diff --git a/67e48c8.diff b/67e48c8.diff new file mode 100644 index 0000000..67dddb7 --- /dev/null +++ b/67e48c8.diff @@ -0,0 +1,43 @@ +From 67e48c84b9971e6b865274408080fbf5ec7ba1ac Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 15:52:57 -0700 +Subject: [PATCH] afs: Add declaration for RXAFS_ResidencyCmd() + +The function RXAFS_ResidencyCmd() is 'manually' defined within the +afsint.xg, so a prototype for the function is not defined. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Add a prototype for RXAFS_ResidencyCmd + +There are no functional changes with this commit + +The function RXAFS_ResidencyCmd() was introduced with commit: +'rename-residency-from-mrafs-to-osd-20090427' (8655541d1e) + +Reviewed-on: https://gerrit.openafs.org/15619 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 1d6cfbc5f627abf3808aae97afb72662301483b5) + +Change-Id: I42d0868b83e119b0c3348a3af8aaf5961c040bb2 +--- + +diff --git a/src/fsint/afsint.xg b/src/fsint/afsint.xg +index 9fe4980..cdcd07a 100644 +--- a/src/fsint/afsint.xg ++++ b/src/fsint/afsint.xg +@@ -664,6 +664,7 @@ + ) = 220; + + #ifdef RPC_CLIENT ++%int RXAFS_ResidencyCmd(struct rx_connection *z_conn, AFSFid *Fid, struct FsCmdInputs *Inputs, struct FsCmdOutputs *Outputs); + %int RXAFS_ResidencyCmd(struct rx_connection *z_conn, AFSFid *Fid, struct FsCmdInputs *Inputs, struct FsCmdOutputs *Outputs) + %{ + % return RXAFS_FsCmd(z_conn, Fid, Inputs, Outputs); diff --git a/6b20756.diff b/6b20756.diff new file mode 100644 index 0000000..5f248bf --- /dev/null +++ b/6b20756.diff @@ -0,0 +1,75 @@ +From 6b207567af7244a4fc6c314fdc815aa14c4eae09 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 09 Feb 2024 09:01:33 -0700 +Subject: [PATCH] afs: fix 'ops' variable may be used uninitialized + +When the function rxfs_storeInit() has the static attribute, gcc flags +the variable 'ops' as possibly uninitialized. + +In function 'afs_CacheStoreDCaches', + inlined from 'afs_CacheStoreVCache' at + .../src/afs/afs_fetchstore.c:630:14: + .../afs/afs_fetchstore.c:535:17: error: 'ops' may be used + uninitialized [-Werror=maybe-uninitialized] + 535 | code = (*ops->destroy)(&rock, code); + | ~^~~~~~~~~~~~~~ + ...src/afs/afs_fetchstore.c: In function 'afs_CacheStoreVCache': + ...src/afs/afs_fetchstore.c:567:22: note: 'ops' was declared here + 567 | struct storeOps *ops; + | ^~~ + cc1: all warnings being treated as errors + +This is a false positive report by the gcc compiler. + +The function rxfs_storeInit() returns a 0 only when it has successfully +assigned a value to the ops variable, and afs_CacheStoreDcaches() is +only called if the return value from rxfs_storeInit() is 0. + +The ops variable is only used within a block that is within a for loop, +which could leave a stray value if the variable isn't initialized within +that loop. + +Assigning a NULL to ops is sufficient to avoid the compiler error, and +relocating the declaration of the ops variable into the block where it +is actually used ensures that it's always initialized before its use +within the loop. + +Clean up whitespace in the statement that follows the new location for +the ops variable. + +Note, this commit is being added before a commit that adds the static +attribute to the rxfs_storeInit() function which also "fixes" the +compiler error (see: afs: Add static attribute to internal functions). + +Reviewed-on: https://gerrit.openafs.org/15630 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 36e4c02ff27b9d66755b9544778896b9b1e5c391) + +Change-Id: I9d8a07e576c6bf889f8f182c6fc0d34dc997c004 +--- + +diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c +index 7b35b8f..63b370d 100644 +--- a/src/afs/afs_fetchstore.c ++++ b/src/afs/afs_fetchstore.c +@@ -564,7 +564,6 @@ + afs_hyper_t *anewDV, afs_size_t *amaxStoredLength) + { + afs_int32 code = 0; +- struct storeOps *ops; + void * rock = NULL; + unsigned int i, j; + +@@ -619,7 +618,8 @@ + ICL_HANDLE_OFFSET(length)); + + do { +- tc = afs_Conn(&avc->f.fid, areq, 0, &rxconn); ++ struct storeOps *ops = NULL; ++ tc = afs_Conn(&avc->f.fid, areq, 0, &rxconn); + + #ifdef AFS_64BIT_CLIENT + restart: diff --git a/743d72f.diff b/743d72f.diff new file mode 100644 index 0000000..cc50e6a --- /dev/null +++ b/743d72f.diff @@ -0,0 +1,48 @@ +From 743d72f6b6aba44599099c7cbc879435f9005e3a Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Wed, 03 Apr 2024 11:36:54 -0600 +Subject: [PATCH] Linux: Define afs_thread_wrapper() as static + +When building against a Linux 6.8 kernel, functions that are missing +prototypes or declarations are flagged. + +We can add the static attribute to functions that are not referenced +outside of the file that implements them to avoid having these functions +flagged by the compiler. + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +This is an openafs-1.8.x specific commit. + +The function afs_thread_wrapper() in LINUX/osi_misc.c on the master +branch was changed to a static function with commit: + 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) +However this is a larger change than needed to fix the build problem and +the commit could have a significant impact for 1.8.x since it is +changing rx locking. To avoid introducing such a change, just change +the afs_thread_wrapper() to static as a 1.8.x specific commit. + +There are no functional changes in this commit. + +Change-Id: I4edc61e6a4989c16ccf41b935e205dbf209bf2a5 +--- + +diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c +index aa5d5fc..27f73cd 100644 +--- a/src/afs/LINUX/osi_misc.c ++++ b/src/afs/LINUX/osi_misc.c +@@ -155,7 +155,8 @@ + + + /* This could use some work, and support on more platforms. */ +-int afs_thread_wrapper(void *rock) ++static int ++afs_thread_wrapper(void *rock) + { + void (*proc)(void) = rock; + __module_get(THIS_MODULE); diff --git a/7cae97b.diff b/7cae97b.diff new file mode 100644 index 0000000..e4e8251 --- /dev/null +++ b/7cae97b.diff @@ -0,0 +1,66 @@ +From 7cae97b86fbcc4a53967927d6c2cae9dcbc6ac4d Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Mon, 12 Feb 2024 12:31:30 -0700 +Subject: [PATCH] Linux 6.8: use hlist iteration for dentry children + +Linux 6.8 commit 'dentry: switch the lists of children to hlist' +(da549bdd15) replaces the dentry lists d_subdirs/d_child with the hlist +d_children/d_sib. + +Add an autoconf test for a d_children member in the dentry structure. + +Define a macro that uses the applicable Linux function for iterating +over a dentry's children. + +Reviewed-on: https://gerrit.openafs.org/15632 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 8e0bbe6a07523dd2e7efb3c9d1b4ad9e19fc9bb7) + +Change-Id: Ief4c334c4ef3e54822e068dcdf654541e86b9176 +--- + +diff --git a/src/afs/LINUX/osi_vcache.c b/src/afs/LINUX/osi_vcache.c +index 897fd37..43644f4 100644 +--- a/src/afs/LINUX/osi_vcache.c ++++ b/src/afs/LINUX/osi_vcache.c +@@ -15,6 +15,14 @@ + + #include "osi_compat.h" + ++#if defined(STRUCT_DENTRY_HAS_D_CHILDREN) ++# define afs_for_each_child(child, parent) \ ++ hlist_for_each_entry((child), &(parent)->d_children, d_sib) ++#else ++# define afs_for_each_child(child, parent) \ ++ list_for_each_entry((child), &(parent)->d_subdirs, d_child) ++#endif ++ + static void + TryEvictDirDentries(struct inode *inode) + { +@@ -312,7 +320,7 @@ + * because 'dp' is an ancestor of 'child'. + */ + struct dentry *child; +- list_for_each_entry(child, &dp->d_subdirs, d_child) { ++ afs_for_each_child(child, dp) { + spin_lock(&child->d_lock); + child->d_time = 0; + spin_unlock(&child->d_lock); +diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4 +index 2824ec1..5cd346f 100644 +--- a/src/cf/linux-kernel-struct.m4 ++++ b/src/cf/linux-kernel-struct.m4 +@@ -17,6 +17,9 @@ + dnl linux 2.6.16 moved dentry->d_child to dentry->d_u.d_child + dnl linux 3.19 moved it back to dentry->d_child + AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_child], [dcache.h]) ++dnl linux 6.8 uses hlist for dentry children and renamed ++dnl d_subdirs/d_child to d_childern/d_sib ++AC_CHECK_LINUX_STRUCT([dentry], [d_children], [dcache.h]) + AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h]) + AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h]) + AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h]) diff --git a/81b910a.diff b/81b910a.diff new file mode 100644 index 0000000..c46a241 --- /dev/null +++ b/81b910a.diff @@ -0,0 +1,81 @@ +From 81b910ab4a0ef0d0b6cd3a1a636fcbcd050c0245 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Tue, 05 Mar 2024 08:37:47 -0700 +Subject: [PATCH] Linux 6.8: Remove ctl_table sentinels + +The Linux 6.8 commit 'sysctl: Remove the now superfluous sentinel +elements from ctl_table array' (c8a65501d3) was a clean up commit +that removed the sentinel entry in the ctl_table array (e.g. the +"null" entry at the end of the table). + +As of Linux 6.8, including the sentinel entry (.procname =) in the +ctl_table is unnecessary, but doesn't yet break anything. But it is +likely that including the sentinel will start to cause runtime errors in +future Linux versions very soon, so avoid the sentinel when we can, to +avoid possible problems in the future. + +Define a new macro that can be used as the last entry of a ctl_table +that will either add a "null" entry, or nothing. + +There is not a specific build test we can use within configure, so we +must explicitly test the Linux version to decide if we need to use a +sentinel or not when defining the macro. We are selecting 6.8 to match +the version where the Linux kernel is removing the sentinels from the in +kernel filesystems. + +Note: See the Linux merge commits 'Merge tag 'sysctl-6.8-rc1' of +git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux' (a05aea98d4) +for more details behind the staged removal of the sentinels in the +ctl_table structures and the potential future change for removing the +actual check for the sentinel within the Linux kernel. + +Reviewed-on: https://gerrit.openafs.org/15645 +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 35c8c1bf0b1cb48178f676ba5bcf16ad59c5a33b) + +Change-Id: I34cb7586003e10a6c7438d7205123d57af30585e +--- + +diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c +index a0a0398..c1116fc 100644 +--- a/src/afs/LINUX/osi_sysctl.c ++++ b/src/afs/LINUX/osi_sysctl.c +@@ -54,6 +54,14 @@ + # define AFS_SYSCTL_INT(num, perms, var) \ + AFS_SYSCTL_INT2(num, perms, #var, var) + ++# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,8,0) ++/* end of list sentinel not needed */ ++# define AFS_SYSCTL_SENTINEL ++# else ++/* NULL entry to mark the end of the list */ ++# define AFS_SYSCTL_SENTINEL { .procname = NULL } ++# endif ++ + static struct ctl_table_header *afs_sysctl = NULL; + + static struct ctl_table afs_sysctl_table[] = { +@@ -75,9 +83,7 @@ + AFS_SYSCTL_INT( 13, 0644, afs_cacheBlocks), + AFS_SYSCTL_INT2(14, 0644, "md5inum", afs_md5inum), + +- { +- .procname = 0 +- } ++ AFS_SYSCTL_SENTINEL + }; + # if !defined(HAVE_LINUX_REGISTER_SYSCTL) + static struct ctl_table fs_sysctl_table[] = { +@@ -87,9 +93,7 @@ + .mode = 0555, + .child = afs_sysctl_table + }, +- { +- .procname = 0 +- } ++ AFS_SYSCTL_SENTINEL + }; + # endif + int diff --git a/87ab04a.diff b/87ab04a.diff new file mode 100644 index 0000000..a3d687d --- /dev/null +++ b/87ab04a.diff @@ -0,0 +1,112 @@ +From 87ab04acc921794f49084548cf5fc94f6f37f10e Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Mon, 12 Feb 2024 08:25:47 -0700 +Subject: [PATCH] afs: Add includes to pick up function prototypes + +The functions defined in LINUX/osi_crypto.c, osi_pagecopy.c, +osi_probe.c, and osi_syscall.c have function prototypes defined in +existing header files, however either due to missing includes or +preprocessor conditionals that skip the includes, these function +prototypes are not being pulled in. + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Add the necessary includes to osi_crypto.c and osi_pagecopy.c and +re-arrange the includes in osi_probe.c and osi_syscall.c to ensure that +the function prototypes are present when building the Linux kernel +module. + +Reviewed-on: https://gerrit.openafs.org/15641 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 3683f15278e34e13d7272928eaf666f0acc4e1e9) + +Change-Id: Iac704fc98d0d685358224049f383d68aa7a105f8 +--- + +diff --git a/src/afs/LINUX/osi_crypto.c b/src/afs/LINUX/osi_crypto.c +index ead1916..7f8435c 100644 +--- a/src/afs/LINUX/osi_crypto.c ++++ b/src/afs/LINUX/osi_crypto.c +@@ -25,6 +25,9 @@ + #include + #include "afs/param.h" + ++#include "afs/sysincludes.h" ++#include "afsincludes.h" ++ + #include + + int +diff --git a/src/afs/LINUX/osi_pagecopy.c b/src/afs/LINUX/osi_pagecopy.c +index 7142a1b..42f5e38 100644 +--- a/src/afs/LINUX/osi_pagecopy.c ++++ b/src/afs/LINUX/osi_pagecopy.c +@@ -61,6 +61,7 @@ + #include + #include + #include ++#include "osi_pagecopy.h" + + static DECLARE_WAIT_QUEUE_HEAD (afs_pagecopy_wq); + static spinlock_t afs_pagecopy_lock; +diff --git a/src/afs/LINUX/osi_probe.c b/src/afs/LINUX/osi_probe.c +index 9b06fa7..be42ecf 100644 +--- a/src/afs/LINUX/osi_probe.c ++++ b/src/afs/LINUX/osi_probe.c +@@ -48,9 +48,13 @@ + #ifdef OSI_PROBE_STANDALONE + # define OSI_PROBE_DEBUG + #endif ++ + #ifndef OSI_PROBE_STANDALONE + # include + # include "afs/param.h" ++ ++# include "afs/sysincludes.h" ++# include "afsincludes.h" + #endif + + #include +@@ -60,10 +64,6 @@ + #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,26) + /* Slightly kludgy, but too bad */ + #define scsi_command_size scsi_command_size_tbl +-#endif +-#ifndef OSI_PROBE_STANDALONE +-# include "afs/sysincludes.h" +-# include "afsincludes.h" + #endif + #include + #ifdef HAVE_LINUX_CONFIG_H +diff --git a/src/afs/LINUX/osi_syscall.c b/src/afs/LINUX/osi_syscall.c +index 836491c..5e9e519 100644 +--- a/src/afs/LINUX/osi_syscall.c ++++ b/src/afs/LINUX/osi_syscall.c +@@ -14,6 +14,10 @@ + #include + #include "afs/param.h" + ++#include /* early to avoid printf->printk mapping */ ++#include "afs/sysincludes.h" ++#include "afsincludes.h" ++ + #ifdef LINUX_KEYRING_SUPPORT + /* The syscall probing stuff is unnecessary (and is never called) if we have + * keyrings support; we rely on keyrings instead of group ids to track PAGs. +@@ -31,9 +35,6 @@ + + #else /* LINUX_KEYRING_SUPPORT */ + +-#include /* early to avoid printf->printk mapping */ +-#include "afs/sysincludes.h" +-#include "afsincludes.h" + #include /* For syscall numbers. */ + #include + diff --git a/9f052c1.diff b/9f052c1.diff new file mode 100644 index 0000000..1a45dba --- /dev/null +++ b/9f052c1.diff @@ -0,0 +1,52 @@ +From 9f052c137d1184a783c8ac3182c3544b275484f5 Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Sat, 09 Jan 2021 12:50:03 -0600 +Subject: [PATCH] afs: Remove SRXAFSCB_GetDE + +The GetDE RPC has been commented out from afscbint.xg effectively +since it was introduced, but we still define the SRXAFSCB_GetDE server +stub for it. + +This is useless, but also potentially dangerous, since the stub +routine just returns success, without populating the output arguments. +One of the output arguments is a string, and so if this RPC is +actually run, the rxgen-generated server code will try to xdr_string() +that string. Since we never set it to anything, this will result in +xdr_string trying to dereference a NULL pointer. + +None of this actually happens currently, since the GetDE RPC is +commented out. But to avoid the above situation if it's ever +uncommented, remove the useless SRXAFSCB_GetDE function. + +Reviewed-on: https://gerrit.openafs.org/14488 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 444a971edc47c34efbefed6e332ee6e843ae072b) + +Change-Id: I83846d79ce3143571923cb6023075620091f093d +Reviewed-on: https://gerrit.openafs.org/15681 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Michael Meffie +Reviewed-by: Benjamin Kaduk +--- + +diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c +index e7d8ab5..22edefb 100644 +--- a/src/afs/afs_callback.c ++++ b/src/afs/afs_callback.c +@@ -1636,14 +1636,3 @@ + + return code; + } +- +- +-int +-SRXAFSCB_GetDE(struct rx_call *a_call, afs_int32 a_index, afs_int32 *addr, +- afs_int32 *inode, afs_int32 *flags, afs_int32 *time, +- char ** fileName) +-{ /*SRXAFSCB_GetDE*/ +- int code = 0; /*Return code*/ +- return(code); +- +-} /*SRXAFSCB_GetDE*/ diff --git a/ChangeLog b/ChangeLog index 43bcdd3..20fc239 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,43 @@ +commit 1a36b929773ea369a5b14a48759949fe6acbe3b7 +Author: Mark Vitale +Date: Thu Mar 7 12:48:22 2024 -0500 + + Make OpenAFS 1.8.11 + + Update version strings for the 1.8.11 release. + Add final updates to NEWS. + + Change-Id: Id66da29a5001f18e8816bcb214f70544474bfaef + Reviewed-on: https://gerrit.openafs.org/15671 + Tested-by: Mark Vitale + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 33fabe9e0b3c8b608bff82f3fda9ba2f8b3775a7 +Author: Andrew Deason +Date: Tue Nov 13 11:09:52 2018 -0600 + + roken: Use srcdir for roken-post.h + + roken-post.h is a source file, not a generated file in the objdir. + Specify $(srcdir) so we can work with objdir builds. + + Reviewed-on: https://gerrit.openafs.org/13387 + Tested-by: BuildBot + Reviewed-by: Michael Meffie + Reviewed-by: Cheyenne Wills + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 345a739b7bb6c9c142a2b0fe584fed6c44d6c655) + + Change-Id: Ie02f0aaf373bebe74b0eaf8969b712c146a462f8 + Reviewed-on: https://gerrit.openafs.org/15638 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Tested-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + commit 47c4fb427a02809a73a8f7024e49ff5f58d2be06 Author: Stephan Wiesand Date: Thu Aug 3 17:35:02 2023 +0200 diff --git a/RELNOTES-1.8.11 b/RELNOTES-1.8.11 new file mode 100644 index 0000000..9562bc5 --- /dev/null +++ b/RELNOTES-1.8.11 @@ -0,0 +1,90 @@ + User-Visible OpenAFS Changes + +OpenAFS 1.8.11 + + All platforms + + * Check Rx RPC call number in incoming packets before allocating new + RPC calls to avoid re-running RPC calls when spurious packets are + received (15562) + + * Fix memory leaks (15516 15517) + + * Fix build failure when building with _FORTIFY_SOURCE (15518 15519) + + * Fix build failures when building with the clang compiler (15540 15541 + 15547 15548) + + * Improve error detection in OpenAFS directories for both clients + and servers (15544 15545 15546) + + * Add a Makefile target to build Red Hat RPM packages (15514) + + * Add support for custom version numbers in Red Hat RPM packages (15513) + + All server platforms + + * Fix File Server and Protection Server crashes due to recursive thread + lock bug (15609) + + * Fix fileserver crashes during startup (15509 15543) + + * The bosserver no longer creates the client configuration directory and + "ThisCell" and "CellServDB" symlinks. The "vos", "pts", and "bos" + commands now read cell configuration from the server cell configuration + directory when the client cell configuration directory is not present. + This change allows server packaging to be independent of client packaging + and removes the need for client configuration artifacts on hosts running + server processes only (15510 15511 15512) + + * Print a warning in the volserver log when an older version of a volume + is restored over an existing volume, unless the volume was restored with + "-overwrite full" (15531) + + * Print a warning in the bosserver log when the bosserver was not started + in restricted mode (15537) + + * Avoid unbounded string copies when looking up volumes by name in + the vlserver (15538) + + * Fix off-by-one directory entry name size check in salvager (15598) + + All client platforms + + * Updated the CellServDB to the latest version from grand.central.org + (15603) + + All UNIX/Linux client platforms + + * Fix PAG object memory leak which can degrade performance (15506) + + * Improve kernel memory reclamation after accessing a large number of + files (15536) + + * Improve cache corruption detection and refetch cache entries + when cache entry size mismatches are detected (15532 15533 15535) + + * Fix panic in user-space client (libuafs, Fuse client) (15539) + + Linux clients + + * Add support for Linux 6.7 (15600) + + * Add support for Linux 6.6 (15575 15589 15590) + + * Add support for Linux 6.5 (15520 15521 15522 15523 15558) + + * Fix BUG when directory entry names are longer than 16 characters. + Affects Linux 6.5 or higher built with GCC 13 or higher (15599) + + * Invalidate Linux VFS dentry caches in the AFS filesystem when running + "fs flush*" commands. This reduces the need to drop Linux VFS caches + by writing to the "/proc/sys/vm/drop_caches" file when + troubleshooting (15515) + + * Fix build failures (15507 15508 15596 15542 15549) + + macOS + + * Add support for MacOS 14 ("Sonoma") (15602) + diff --git a/RELNOTES-1.8.11pre1 b/RELNOTES-1.8.11pre1 deleted file mode 100644 index 0f2e28a..0000000 --- a/RELNOTES-1.8.11pre1 +++ /dev/null @@ -1 +0,0 @@ - User-Visible OpenAFS Changes diff --git a/a14a9ad.diff b/a14a9ad.diff new file mode 100644 index 0000000..70eb450 --- /dev/null +++ b/a14a9ad.diff @@ -0,0 +1,177 @@ +From a14a9add73341bc3c355250bc43282e022bff95c Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Wed, 07 Feb 2024 15:25:10 -0700 +Subject: [PATCH] Linux 6.8: Add function prototypes for krb5 + +The external files for heimdal/krb5 do not provide function prototypes +in a header file that is used when building files that we use from +heimdal/krb5 (e.g. crypto.c). + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +We cannot modify the external source files, however there is the local +OpenAFS include file, krb5_locl.h, that does contain OpenAFS specific +changes. + +Add declarations to krb5_locl.h for the functions defined in the +heimdal/krb5 source. + +There are no functional changes with this commit. + +Reviewed-on: https://gerrit.openafs.org/15621 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 612927dd1dd44bbd08eda790de12b24213583156) + +Change-Id: Iaae28186a24c3c5ca4407de9563c8cfed9644921 +--- + +diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h +index 6e70673..04292ee 100644 +--- a/src/crypto/rfc3961/krb5_locl.h ++++ b/src/crypto/rfc3961/krb5_locl.h +@@ -287,6 +287,138 @@ + krb5_enctype etype, + char **string); + ++/* ++ * Unused prototypes from heimdal/krb5. These are functions that are not used ++ * outside of their compilation unit at all, but we may need to declare them to ++ * avoid compiler warnings. ++ */ ++struct _krb5_key_data; ++struct _krb5_encryption_type; ++/* heimdal/krb5/crypto.c */ ++KRB5_LIB_FUNCTION krb5_error_code _krb5_derive_key(krb5_context context, ++ struct _krb5_encryption_type *et, ++ struct _krb5_key_data *key, ++ const void *constant, ++ size_t len); ++KRB5_LIB_FUNCTION krb5_error_code krb5_allow_weak_crypto(krb5_context context, ++ krb5_boolean enable); ++KRB5_LIB_FUNCTION krb5_error_code krb5_checksum_disable(krb5_context context, ++ krb5_cksumtype type); ++KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_keyed(krb5_context context, ++ krb5_cksumtype type); ++KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_valid(krb5_context context, ++ krb5_cksumtype ctype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_create_checksum_iov(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ krb5_crypto_iov *data, ++ unsigned int num_data, ++ krb5_cksumtype *type); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getblocksize(krb5_context context, ++ krb5_crypto crypto, ++ size_t *blocksize); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getenctype(krb5_context context, ++ krb5_crypto crypto, ++ krb5_enctype *enctype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getpadsize(krb5_context context, ++ krb5_crypto crypto, ++ size_t *padsize); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length(krb5_context context, ++ krb5_crypto crypto, ++ int type, ++ size_t *len); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length_iov(krb5_context context, ++ krb5_crypto crypto, ++ krb5_crypto_iov *data, ++ unsigned int num_data); ++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_iov_ivec(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ krb5_crypto_iov *data, ++ unsigned int num_data, ++ void *ivec); ++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_ivec(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ void *data, ++ size_t len, ++ krb5_data *result, ++ void *ivec); ++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_iov_ivec(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ krb5_crypto_iov *data, ++ int num_data, ++ void *ivec); ++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_ivec(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ const void *data, ++ size_t len, ++ krb5_data *result, ++ void *ivec); ++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_disable(krb5_context context, ++ krb5_enctype enctype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_enable(krb5_context context, ++ krb5_enctype enctype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_to_keytype(krb5_context context, ++ krb5_enctype etype, ++ krb5_keytype *keytype); ++KRB5_LIB_FUNCTION size_t krb5_get_wrapped_length (krb5_context context, ++ krb5_crypto crypto, ++ size_t data_len); ++KRB5_LIB_FUNCTION krb5_error_code krb5_hmac(krb5_context context, ++ krb5_cksumtype cktype, ++ const void *data, ++ size_t len, ++ unsigned usage, ++ krb5_keyblock *key, ++ Checksum *result); ++KRB5_LIB_FUNCTION krb5_boolean krb5_is_enctype_weak(krb5_context context, ++ krb5_enctype enctype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_string_to_enctype(krb5_context context, ++ const char *string, ++ krb5_enctype *etype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_verify_checksum_iov(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ krb5_crypto_iov *data, ++ unsigned int num_data, ++ krb5_cksumtype *type); ++KRB5_LIB_FUNCTION krb5_error_code krb5_generate_random_keyblock(krb5_context context, ++ krb5_enctype type, ++ krb5_keyblock *key); ++KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_collision_proof(krb5_context context, ++ krb5_cksumtype type); ++ ++KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_to_enctype(krb5_context context, ++ krb5_cksumtype ctype, ++ krb5_enctype *etype); ++KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_EncryptedData(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ void *data, ++ size_t len, ++ int kvno, ++ EncryptedData *result); ++KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getconfoundersize(krb5_context context, ++ krb5_crypto crypto, ++ size_t *confoundersize); ++ ++KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_EncryptedData(krb5_context context, ++ krb5_crypto crypto, ++ unsigned usage, ++ const EncryptedData *e, ++ krb5_data *result); ++/* heimdal/krb5/data.c */ ++KRB5_LIB_FUNCTION krb5_error_code krb5_data_realloc(krb5_data *p, int len); ++KRB5_LIB_FUNCTION krb5_error_code krb5_copy_data(krb5_context context, ++ const krb5_data *indata, ++ krb5_data **outdata); ++KRB5_LIB_FUNCTION int krb5_data_cmp(const krb5_data *data1, const krb5_data *data2); ++/* heimdal/krb5/store-int.c */ ++KRB5_LIB_FUNCTION krb5_ssize_t _krb5_get_int(void *buffer, unsigned long *value, size_t size); ++ + #include "crypto.h" + + struct _krb5_checksum_type * _krb5_find_checksum (krb5_cksumtype); diff --git a/a87845d.diff b/a87845d.diff new file mode 100644 index 0000000..dd92852 --- /dev/null +++ b/a87845d.diff @@ -0,0 +1,99 @@ +From a87845d40aac04ff12dde369753c9472a8e4808d Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Mon, 12 Feb 2024 09:43:29 -0700 +Subject: [PATCH] afs: Remove SRXAFSCB* protos from afs_prototypes.h + +The prototypes for the afscbint RPC functions (SRXAFSCB_*) implemented +in afs_callback.c are defined in 2 locations, afs_protypes.h and +afscbint.h (which is generated by rxgen). + +Remove the protoypes for the SRXAFSCB_* functions from afs_prototypes.h +as they are redundant and are currently out of sync (the prototypes +for SRXAFSCB_GetCellByNum() and SRXAFSCB_TellMeAboutYourself() are +not present in afs_prototypes.h). Also remove a redundant prototype for +afs_RXCallBackServer() which was prototyped both before and in the +middle of the SRXAFSCB* prototypes. + +Since afs_callback.c only pulled in afs_prototypes.h and not afscbint.h, +add an include for afscbint.h to ensure that the all the prototypes for +the SRXAFSCB_* functions are present. + +The 2 functions listed above are flagged due to missing prototypes when +building against a Linux 6.8 kernel (which sets the +-Wmissing-declarations and -Wmissing-prototypes compiler flags as +default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15644 +Reviewed-by: Mark Vitale +Tested-by: Benjamin Kaduk +Reviewed-by: Benjamin Kaduk +(cherry picked from commit fae4003b403420d0b548920c7837a2d2b6e432ae) + +Change-Id: I7d435455fc60cc10200ee91d0d76534367ab5883 +--- + +diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c +index 56e8cd2..1fe990e 100644 +--- a/src/afs/afs_callback.c ++++ b/src/afs/afs_callback.c +@@ -19,6 +19,8 @@ + + #include "afs/sysincludes.h" /*Standard vendor system headers */ + #include "afsincludes.h" /*AFS-based standard headers */ ++#define FSINT_COMMON_XG ++#include "afs/afscbint.h" + #include "afs/afs_stats.h" /*Cache Manager stats */ + #include "afs/opr.h" + #include "afs/afs_args.h" +diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h +index d7894dd..b9811f8 100644 +--- a/src/afs/afs_prototypes.h ++++ b/src/afs/afs_prototypes.h +@@ -65,44 +65,7 @@ + extern struct interfaceAddr afs_cb_interface; + + extern int afs_RXCallBackServer(void); +-extern int SRXAFSCB_GetCE(struct rx_call *a_call, afs_int32 a_index, +- struct AFSDBCacheEntry *a_result); +-extern int SRXAFSCB_GetCE64(struct rx_call *a_call, afs_int32 a_index, +- struct AFSDBCacheEntry64 *a_result); +-extern int SRXAFSCB_GetLock(struct rx_call *a_call, afs_int32 a_index, +- struct AFSDBLock *a_result); +-extern int SRXAFSCB_CallBack(struct rx_call *a_call, +- struct AFSCBFids *a_fids, +- struct AFSCBs *a_callbacks); +-extern int SRXAFSCB_Probe(struct rx_call *a_call); +-extern int SRXAFSCB_InitCallBackState(struct rx_call *a_call); +-extern int SRXAFSCB_XStatsVersion(struct rx_call *a_call, +- afs_int32 * a_versionP); +-extern int SRXAFSCB_GetXStats(struct rx_call *a_call, +- afs_int32 a_clientVersionNum, +- afs_int32 a_collectionNumber, +- afs_int32 * a_srvVersionNumP, +- afs_int32 * a_timeP, AFSCB_CollData * a_dataP); +-extern int afs_RXCallBackServer(void); + extern int shutdown_CB(void); +-extern int SRXAFSCB_InitCallBackState2(struct rx_call *a_call, +- struct interfaceAddr *addr); +-extern int SRXAFSCB_WhoAreYou(struct rx_call *a_call, +- struct interfaceAddr *addr); +-extern int SRXAFSCB_InitCallBackState3(struct rx_call *a_call, +- afsUUID * a_uuid); +-extern int SRXAFSCB_ProbeUuid(struct rx_call *a_call, afsUUID * a_uuid); +-extern int SRXAFSCB_GetServerPrefs(struct rx_call *a_call, afs_int32 a_index, +- afs_int32 * a_srvr_addr, +- afs_int32 * a_srvr_rank); +-extern int SRXAFSCB_GetCellServDB(struct rx_call *a_call, afs_int32 a_index, +- char **a_name, serverList * a_hosts); +-extern int SRXAFSCB_GetLocalCell(struct rx_call *a_call, char **a_name); +-extern int SRXAFSCB_GetCacheConfig(struct rx_call *a_call, +- afs_uint32 callerVersion, +- afs_uint32 * serverVersion, +- afs_uint32 * configCount, +- cacheConfig * config); + + /* afs_cbqueue.c */ + extern afs_rwlock_t afs_xcbhash; diff --git a/aae8b00.diff b/aae8b00.diff new file mode 100644 index 0000000..b2f445c --- /dev/null +++ b/aae8b00.diff @@ -0,0 +1,53 @@ +From aae8b00d97585b60702151c6f28ff7ec4d65c2d9 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 09:09:39 -0700 +Subject: [PATCH] afs: Remove afs_MemExtendEntry() + +The function afs_MemExtendEntry() is not referenced anywhere within +the source tree. + +Remove the function afs_MemExtendEntry(). + +The commit: 'memcache: add extend-entry function' (f821c7e5c8) +introduced the function, but afs_MemExtendEntry() has never been +referenced or defined within a header file. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Note, afsMemExtendedEntry() was a wrapper for the function +_afs_MemExtendedEntry(), which is still used. + +Reviewed-on: https://gerrit.openafs.org/15616 +Tested-by: Benjamin Kaduk +Reviewed-by: Benjamin Kaduk +(cherry picked from commit eab2a4ae758876bb7547d289f936f9cfc4227cf5) + +Change-Id: I37f241a6df33ab15249c6708d5ca820353c8b413 +--- + +diff --git a/src/afs/afs_memcache.c b/src/afs/afs_memcache.c +index 936cbe9..419083d 100644 +--- a/src/afs/afs_memcache.c ++++ b/src/afs/afs_memcache.c +@@ -302,16 +302,6 @@ + return 0; + } + +-int +-afs_MemExtendEntry(struct memCacheEntry *mceP, afs_uint32 size) +-{ +- int code = 0; +- ObtainWriteLock(&mceP->afs_memLock, 560); +- code = _afs_MemExtendEntry(mceP, size); +- ReleaseWriteLock(&mceP->afs_memLock); +- return code; +-} +- + void + shutdown_memcache(void) + { diff --git a/b77b304.diff b/b77b304.diff new file mode 100644 index 0000000..5bfe7d2 --- /dev/null +++ b/b77b304.diff @@ -0,0 +1,47 @@ +From b77b304bb58f472e8a9d2f3b6d47fffd38d0c905 Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Tue, 07 Dec 2021 15:43:35 -0600 +Subject: [PATCH] rxgen: Declare generated PKG_TranslateOpCode() + +Ever since commit 5c77a6ca (rxgen: add *TranslateOpcode functions to +XDR code), rxgen generates a PKG_TranslateOpCode function in the +relevant .xdr.c source, which can translate an RPC opcode into the RPC +name. But we never declare this function in a header file, making it +impossible to use without compiler warnings (unless the caller +declares the function itself). + +To make it possible to actually use this function, declare this +function in the generated header file. + +Reviewed-on: https://gerrit.openafs.org/14871 +Reviewed-by: Cheyenne Wills +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 9b2c27fc6d299cb0b23eca3e8cb25b7e0c41b11a) + +Change-Id: I2479ff7f6579769b3319b2939ffde60fe570c880 +--- + +diff --git a/src/rxgen/rpc_parse.c b/src/rxgen/rpc_parse.c +index 768e42f..59854f4 100644 +--- a/src/rxgen/rpc_parse.c ++++ b/src/rxgen/rpc_parse.c +@@ -2150,6 +2150,8 @@ + { + f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", + prefix, PackagePrefix[PackageIndex]); ++ f_print(fout,"extern char * %s%sTranslateOpCode(int op);\n", prefix, ++ PackagePrefix[PackageIndex]); + } + + static void +@@ -2161,6 +2163,8 @@ + f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", + prefix, pprefix); + f_print(fout,"\nextern int %sOpCodeIndex(int op);\n", PackagePrefix[PackageIndex]); ++ f_print(fout, "extern char * %s%sTranslateOpCode(int op);\n", ++ prefix, pprefix); + } + + void diff --git a/d1c89ac.diff b/d1c89ac.diff new file mode 100644 index 0000000..d51f8ce --- /dev/null +++ b/d1c89ac.diff @@ -0,0 +1,89 @@ +From d1c89acf70a794b78c5daaff206d734e36bbec6d Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Tue, 30 Jan 2024 20:44:48 -0600 +Subject: [PATCH] roken: Declare ct_memcmp in hcrypto kernel roken.h + +Currently, we build roken's ct.c for our kernel module to provide +ct_memcmp(). We declare a prototype for ct_memcmp() in krb5_locl.h, +and all of our kernel callers of ct_memcmp() include krb5_locl.h, so +all callers get a prototype and avoid "implicit declaration" compiler +warnings. + +However, roken's ct.c itself does not include krb5_locl.h, so it +doesn't get a prototype for ct_memcmp(). This is dangerous, since if +the prototype ever slightly differs from the implementation for any +reason, it could cause a variety of issues. + +This also causes warnings when building against a Linux 6.8 kernel +(which sets the -Wmissing-declarations and -Wmissing-prototypes +compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +We cannot change ct.c, since it is an external source file. To fix +this, instead move the prototype of ct_memcmp() to our stub +kernel-only roken.h header, which is included by ct.c. Make +krb5_locl.h also include roken.h when building kernel code, so all of +the ct_memcmp() callers also get the prototype. + +While we're here, add some informative comments and an include guard +to our previously-blank roken.h stub. + +Written in collaboration with cwills@sinenomine.net. + +Reviewed-on: https://gerrit.openafs.org/15620 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit be236069e9d26339ed5f9939965bca0dd3f8bf4e) + +Change-Id: I1112881938b0585263871f8f83d63b8909b12f0d +--- + +diff --git a/src/crypto/hcrypto/kernel/roken.h b/src/crypto/hcrypto/kernel/roken.h +index e69de29..f8c2334 100644 +--- a/src/crypto/hcrypto/kernel/roken.h ++++ b/src/crypto/hcrypto/kernel/roken.h +@@ -0,0 +1,17 @@ ++#ifndef OPENAFS_HCRYPTO_KERNEL_ROKEN_H ++#define OPENAFS_HCRYPTO_KERNEL_ROKEN_H ++ ++/* ++ * This is a stub roken.h used for building roken code (or roken-using code) in ++ * the kernel. For userspace code, use a real roken.h. This just contains a few ++ * prototypes of roken functions we actually use in kernel code. ++ */ ++ ++#ifndef KERNEL ++# error "This header is for kernel code only" ++#endif ++ ++/* ct.c */ ++int ct_memcmp(const void *p1, const void *p2, size_t len); ++ ++#endif /* OPENAFS_HCRYPTO_KERNEL_ROKEN_H */ +diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h +index eb279a9..6e70673 100644 +--- a/src/crypto/rfc3961/krb5_locl.h ++++ b/src/crypto/rfc3961/krb5_locl.h +@@ -5,6 +5,7 @@ + #ifdef KERNEL + + #include "config.h" ++#include + + #else + #include +@@ -285,11 +286,6 @@ + krb5_error_code krb5_enctype_to_string(krb5_context context, + krb5_enctype etype, + char **string); +-#ifdef KERNEL +-/* Roken provides this in userspace, but we're on our own in the kernel. */ +-int ct_memcmp(const void *p1, const void *p2, size_t len); +-#endif +- + + #include "crypto.h" + diff --git a/d9f3a2c.diff b/d9f3a2c.diff new file mode 100644 index 0000000..e1a7d9a --- /dev/null +++ b/d9f3a2c.diff @@ -0,0 +1,147 @@ +From d9f3a2c6639e694c8d6fc4ad00d6a37d6e1f9bf6 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Mon, 11 Mar 2024 09:05:33 -0600 +Subject: [PATCH] Linux 6.8: Use roken's strlcpy() in kernel module + +The Linux 6.8 commit 'string: Remove strlcpy()' (d26270061a) removed the +the strlcpy function from the Linux kernel. The replacement function, +strscpy(), cannot be used as a drop-in replacement as its currently a +Linux kernel specific function and there are differences in the returned +value. + +We can use roken's strlcpy() (provided in roken/strlcpy.c). + +Create a configure test to that defines its own strlcpy() to test +if the kernel doesn't provide one itself. Note, we need to use a +different function signature for strlcpy() from what the kernel might +have otherwise the test build succeeds when the kernel does provide a +strlcpy(). + +Update the OpenAFS kernel specific roken.h to define the prototype for +strlcpy when it's not present in the Linux kernel. We need to match the +defines used in the 'real' roken.h so the roken/strlcpy.c can build +properly. Add defines for ROKEN_LIB_FUNCTION, ROKEN_LIB_CALL and +ROKEN_LIB_VARIABLE to the kernel roken.h + +Update Linux's osi_machdep.h to include roken.h so the strlcpy protoype +is available. + +Update the Linux MakefileProto to include the strcpy-kernel object +when building the kernel module. + +Reviewed-on: https://gerrit.openafs.org/15646 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 30b18c165752e6d0ce7b6daa6a90453f5e5e6d17) + +Change-Id: I8013623e8f735d15bb7d4ac84ed0867f12b77783 +--- + +diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h +index 916a1df..263c863 100644 +--- a/src/afs/LINUX/osi_machdep.h ++++ b/src/afs/LINUX/osi_machdep.h +@@ -77,6 +77,7 @@ + #endif + + #include "afs/sysincludes.h" ++#include "roken.h" + + #if !defined(HAVE_LINUX_TIME_T) + typedef time64_t time_t; +diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 +index 7f3000f..6f9d350 100644 +--- a/src/cf/linux-kernel-func.m4 ++++ b/src/cf/linux-kernel-func.m4 +@@ -252,6 +252,17 @@ + [inode_set_atime(NULL, 0, 0); + inode_set_mtime(NULL, 0, 0);]) + ++dnl Linux 6.8 removed the strlcpy() function. We test to see if we can redefine ++dnl a strlcpy() function. We use a totally different function signature to ++dnl to ensure that this fails when the kernel does provide strlcpy(). ++AC_CHECK_LINUX_FUNC([no_strlcpy], ++ [[#include ++ size_t strlcpy(char *d); ++ size_t strlcpy(char *d) { return strlen(d); }]], ++ [[static char buff[10]; ++ size_t s; ++ s = strlcpy(buff);]]) ++ + 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/crypto/hcrypto/kernel/roken.h b/src/crypto/hcrypto/kernel/roken.h +index f8c2334..6cb0601 100644 +--- a/src/crypto/hcrypto/kernel/roken.h ++++ b/src/crypto/hcrypto/kernel/roken.h +@@ -11,6 +11,35 @@ + # error "This header is for kernel code only" + #endif + ++/* ++ * The following function annotations are not needed when building for kernel ++ * space ++ */ ++#define ROKEN_LIB_FUNCTION ++#define ROKEN_LIB_CALL ++#define ROKEN_LIB_VARIABLE ++ ++/* ++ * Our HAVE_STRLCPY from autoconf refers to whether strlcpy() is available in ++ * userspace. Whether it's available in the kernel is another question, so ++ * override HAVE_STRLCPY here. Usually it is available (only a few cases lack ++ * it), so turn it on by default, and turn it off for a few cases below. ++ */ ++#undef HAVE_STRLCPY ++#define HAVE_STRLCPY 1 ++ ++#ifdef AFS_AIX_ENV ++# undef HAVE_STRLCPY ++#elif defined(AFS_LINUX_ENV) && defined(HAVE_LINUX_NO_STRLCPY) ++# undef HAVE_STRLCPY ++#endif ++ ++/* strlcpy.c */ ++#if defined (AFS_LINUX_ENV) && !defined(HAVE_STRLCPY) ++# define strlcpy rk_strlcpy ++ROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL strlcpy (char *, const char *, size_t); ++#endif ++ + /* ct.c */ + int ct_memcmp(const void *p1, const void *p2, size_t len); + +diff --git a/src/external/libafsdep b/src/external/libafsdep +index fb365df..9d36a30 100644 +--- a/src/external/libafsdep ++++ b/src/external/libafsdep +@@ -24,3 +24,4 @@ + heimdal/krb5/keyblock.c + heimdal/krb5/store-int.c + heimdal/roken/ct.c ++heimdal/roken/strlcpy.c +\ No newline at end of file +diff --git a/src/libafs/MakefileProto.LINUX.in b/src/libafs/MakefileProto.LINUX.in +index 8744ab8..6e62c8c 100644 +--- a/src/libafs/MakefileProto.LINUX.in ++++ b/src/libafs/MakefileProto.LINUX.in +@@ -42,7 +42,8 @@ + osi_ioctl.o \ + osi_proc.o \ + osi_vnodeops.o \ +- osi_pagecopy.o ++ osi_pagecopy.o \ ++ strlcpy-kernel.o + + AFS_OS_PAGOBJS = \ + osi_alloc.o \ +@@ -59,7 +60,8 @@ + osi_flush.o \ + + osi_ioctl.o \ +- osi_pag_module.o ++ osi_pag_module.o \ ++ strlcpy-kernel.o + + AFS_OS_NFSOBJS = + diff --git a/db91384.diff b/db91384.diff new file mode 100644 index 0000000..86dd034 --- /dev/null +++ b/db91384.diff @@ -0,0 +1,71 @@ +From db913849047d0ec77e735f14dbbce63652209cc1 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Thu, 08 Feb 2024 16:10:57 -0700 +Subject: [PATCH] afs: Remove afs_DbgDisconFiles() + +The function afs_DbgDisconFiles() is not referenced anywhere within the +source tree. + +Remove the function afs_DbgDisconFiles(). + +The commit: 'disconnected-rw-20080922' (433afd4779) introduced +afs_DbgDisconFiles(), but the function was never used. + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15640 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 32bb90047782f41df521bba5ab4aba8b4ed34203) + +Change-Id: I61d06515845dbb18a370f7856285596514242e99 +--- + +diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c +index 3b88585..1aaabd9 100644 +--- a/src/afs/afs_disconnected.c ++++ b/src/afs/afs_disconnected.c +@@ -1335,37 +1335,6 @@ + } + + /*! +- * Print list of disconnected files. +- * +- * \note Call with afs_DDirtyVCListLock read locked. +- */ +-void +-afs_DbgDisconFiles(void) +-{ +- struct vcache *tvc; +- struct afs_q *q; +- int i = 0; +- +- afs_warn("List of dirty files: \n"); +- +- ObtainReadLock(&afs_disconDirtyLock); +- for (q = QPrev(&afs_disconDirty); q != &afs_disconDirty; q = QPrev(q)) { +- tvc = QEntry(q, struct vcache, dirtyq); +- +- afs_warn("Cell=%u Volume=%u VNode=%u Unique=%u\n", +- tvc->f.fid.Cell, +- tvc->f.fid.Fid.Volume, +- tvc->f.fid.Fid.Vnode, +- tvc->f.fid.Fid.Unique); +- +- i++; +- if (i >= 30) +- osi_Panic("afs_DbgDisconFiles: loop in dirty list\n"); +- } +- ReleaseReadLock(&afs_disconDirtyLock); +-} +- +-/*! + * Generate a fake fid for a disconnected shadow dir. + * Similar to afs_GenFakeFid, only that it uses the dhash + * to search for a uniquifier because a shadow dir lives only diff --git a/dffd0e1.diff b/dffd0e1.diff new file mode 100644 index 0000000..8c33471 --- /dev/null +++ b/dffd0e1.diff @@ -0,0 +1,150 @@ +From dffd0e1475f9fb346a146607335c9f9d847d4429 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Mon, 12 Feb 2024 08:59:32 -0700 +Subject: [PATCH] afs: Add afs_xioctl prototyes to afs_prototypes.h + +Several .c files have external function prototypes for the afs_xioctl +function, while the implementing files do not have the prototype. + +Move these prototypes into afs_prototypes.h so that the prototypes are +available to both the caller and the implementation. + +Because the file holding the implementation does not have a prototypes, +afs_xioctl() is being flagged when building against a Linux 6.8 kernel +(which sets the -Wmissing-declarations and -Wmissing-prototypes compiler +flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a Linux kernel with CONFIG_WERROR=y, the build +fails. + +Note that the function afs_xioctl() has platform specific +implementations. + +Reviewed-on: https://gerrit.openafs.org/15643 +Reviewed-by: Andrew Deason +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 575d986aa6c18ac27ea42fb66ae8b8cb0e27fe6c) + +Change-Id: If746111fdcf6a00459f524711623d322d5fc7942 +--- + +diff --git a/src/afs/FBSD/osi_vfsops.c b/src/afs/FBSD/osi_vfsops.c +index 6044bbe..8a979db 100644 +--- a/src/afs/FBSD/osi_vfsops.c ++++ b/src/afs/FBSD/osi_vfsops.c +@@ -18,7 +18,6 @@ + int afs_pbuf_freecnt = -1; + + extern int Afs_xsetgroups(); +-extern int afs_xioctl(); + + static struct syscall_helper_data afs_syscalls[] = { + { +diff --git a/src/afs/HPUX/osi_vfsops.c b/src/afs/HPUX/osi_vfsops.c +index 0ddc227..46faca7 100644 +--- a/src/afs/HPUX/osi_vfsops.c ++++ b/src/afs/HPUX/osi_vfsops.c +@@ -290,7 +290,7 @@ + + afsc_link() + { +- extern int Afs_syscall(), afs_xioctl(), Afs_xsetgroups(); ++ extern int Afs_syscall(), Afs_xsetgroups(); + + /* For now nothing special is required during AFS initialization. */ + AFS_STATCNT(afsc_link); +diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c +index 08fccb1..8aeeafa 100644 +--- a/src/afs/LINUX/osi_vnodeops.c ++++ b/src/afs/LINUX/osi_vnodeops.c +@@ -613,10 +613,6 @@ + } + + +-/* in afs_pioctl.c */ +-extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com, +- unsigned long arg); +- + static long afs_unlocked_xioctl(struct file *fp, unsigned int com, + unsigned long arg) { + return afs_xioctl(FILE_INODE(fp), fp, com, arg); +diff --git a/src/afs/NBSD/osi_kmod.c b/src/afs/NBSD/osi_kmod.c +index f658565..eefaf56 100644 +--- a/src/afs/NBSD/osi_kmod.c ++++ b/src/afs/NBSD/osi_kmod.c +@@ -44,7 +44,6 @@ + #include "afs/afsincludes.h" /* Afs-based standard headers */ + + extern int afs3_syscall(struct lwp *, const void *, register_t *); +-extern int afs_xioctl(struct lwp *, const void *, register_t *); + extern int Afs_xsetgroups(struct lwp *, const void *, register_t *); + + #if !defined(AFS_NBSD60_ENV) +diff --git a/src/afs/NBSD/osi_vfsops.c b/src/afs/NBSD/osi_vfsops.c +index 7679ff1..5032a1d 100644 +--- a/src/afs/NBSD/osi_vfsops.c ++++ b/src/afs/NBSD/osi_vfsops.c +@@ -110,7 +110,6 @@ + #ifndef AFS_NBSD60_ENV + extern int sys_lkmnosys(struct lwp *, const void *, register_t *); + extern int afs3_syscall(struct lwp *, const void *, register_t *); +-extern int afs_xioctl(struct lwp *, const void *, register_t *); + extern int Afs_xsetgroups(struct lwp *, const void *, register_t *); + static int afs_badcall(struct lwp *, const void *, register_t *); + +diff --git a/src/afs/OBSD/osi_vfsops.c b/src/afs/OBSD/osi_vfsops.c +index 830906c..e772926 100644 +--- a/src/afs/OBSD/osi_vfsops.c ++++ b/src/afs/OBSD/osi_vfsops.c +@@ -108,7 +108,7 @@ + /* from /usr/src/sys/kern/vfs_subr.c */ + extern void insmntque(struct vnode *, struct mount *); + +-extern int sys_lkmnosys(), afs_xioctl(), Afs_xsetgroups(); ++extern int sys_lkmnosys(), Afs_xsetgroups(); + + static int lkmid = -1; + static int afs_badcall(struct proc *p, void *xx, register_t * yy); +diff --git a/src/afs/SOLARIS/osi_vfsops.c b/src/afs/SOLARIS/osi_vfsops.c +index c6c9ddf..f3f9bd3 100644 +--- a/src/afs/SOLARIS/osi_vfsops.c ++++ b/src/afs/SOLARIS/osi_vfsops.c +@@ -389,7 +389,6 @@ + afsinit(struct vfssw *vfsswp, int fstype) + #endif + { +- extern int afs_xioctl(); + extern int afs_xsetgroups(); + + AFS_STATCNT(afsinit); +diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h +index 9b3b1af..d7894dd 100644 +--- a/src/afs/afs_prototypes.h ++++ b/src/afs/afs_prototypes.h +@@ -812,6 +812,23 @@ + extern int HandleIoctl(struct vcache *avc, afs_int32 acom, + struct afs_ioctl *adata); + ++#if defined(AFS_SUN5_ENV) ++struct afs_ioctl_sys; ++extern int afs_xioctl(struct afs_ioctl_sys *uap, rval_t *rvp); ++#elif defined(AFS_LINUX_ENV) ++extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com, unsigned long arg); ++#elif defined(AFS_DAWRIN_ENV) & !defined(AFS_DARWIN80) ++extern int afs_xioctl(afs_proc_t *p, struct ioctl_args *uap, register_t *retval); ++#elif defined(AFS_FBSD_ENV) ++extern int afs_xioctl(struct thread *td, struct ioctl_args *uap, register_t *retval); ++#elif defined(AFS_NBSD_ENV) ++extern int afs_xioctl(afs_proc_t *p, const struct sys_ioctl_args *uap, register_t *retval); ++#elif defined(AFS_XBSD_ENV) ++extern int afs_xioctl(afs_proc_t *p, const struct ioctl_args *uap, register_t *retval); ++#elif defined(UKERNEL) ++extern int afs_xioctl(void); ++#endif ++ + + /* afs_segments.c */ + extern int afs_StoreAllSegments(struct vcache *avc, diff --git a/e0f425a.diff b/e0f425a.diff new file mode 100644 index 0000000..a769c71 --- /dev/null +++ b/e0f425a.diff @@ -0,0 +1,67 @@ +From e0f425a3d8bccb48a69f27dff209e32cf05f4305 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Fri, 12 Jan 2024 08:56:31 -0700 +Subject: [PATCH] afs: Remove DFlushDCache() + +The function DFlushDcache() is not referenced anywhere within the +source tree. + +Remove the function DFlushDCache(). + +The commit: 'disconnected-shadow-directory-fixes-20090121' (4045f3d535) +removed the code reference to DFlushDCache() and the commit: +"dir: Prototype and function name cleanup" (5ad1e6cb90) removed the +function prototype. The function was introduced in the commit: +"disconnected-flush-before-shadowing-20090119" (e1cc987ea5). + +This function is flagged due to a missing prototype when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + "Makefile.extrawarn: turn on missing-prototypes globally" (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15615 +Tested-by: Benjamin Kaduk +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39) + +Change-Id: Ib8ab79c76c633632215e02235f47fdb1d744e721 +--- + +diff --git a/src/afs/afs_buffer.c b/src/afs/afs_buffer.c +index 5552d1c..9538c68 100644 +--- a/src/afs/afs_buffer.c ++++ b/src/afs/afs_buffer.c +@@ -516,31 +516,6 @@ + afs_CFileClose(tfile); + } + +-void +-DFlushDCache(struct dcache *adc) +-{ +- int i; +- struct buffer *tb; +- +- ObtainReadLock(&afs_bufferLock); +- +- for (i = 0; i <= PHPAGEMASK; i++) +- for (tb = phTable[pHash(adc->index, i)]; tb; tb = tb->hashNext) +- if (tb->fid == adc->index) { +- ObtainWriteLock(&tb->lock, 701); +- tb->lockers++; +- ReleaseReadLock(&afs_bufferLock); +- if (tb->dirty) { +- DFlushBuffer(tb); +- } +- tb->lockers--; +- ReleaseWriteLock(&tb->lock); +- ObtainReadLock(&afs_bufferLock); +- } +- +- ReleaseReadLock(&afs_bufferLock); +-} +- + int + DFlush(void) + { diff --git a/e157f8f.diff b/e157f8f.diff new file mode 100644 index 0000000..5ef0a16 --- /dev/null +++ b/e157f8f.diff @@ -0,0 +1,473 @@ +From e157f8f39bd367151f5a9264c7d4ce8bcbed08fb Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Thu, 29 Feb 2024 17:53:31 -0700 +Subject: [PATCH] afs: Add static attribute to internal functions + +When building against a Linux 6.8 kernel, functions that are missing +prototypes or declarations are flagged. + +We can add the static attribute to functions that are not referenced +outside of the file that implements them to avoid having these functions +flagged by the compiler. + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +There are no functional changes in this commit. + +Reviewed-on: https://gerrit.openafs.org/15625 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit efee796f28b53bf3ffc03186f81790c36c23c94c) + +Change-Id: I0d923a65731f825d6c190056b0ccc3d362236706 +--- + +diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c +index e8c2980..cb91ecb 100644 +--- a/src/afs/LINUX/osi_file.c ++++ b/src/afs/LINUX/osi_file.c +@@ -47,7 +47,7 @@ + #endif + + /* Old export ops: decode_fh will call back here. Accept any dentry it suggests */ +-int ++static int + afs_fh_acceptable(void *context, struct dentry *dp) + { + return 1; +diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c +index fdc347d..30ac048 100644 +--- a/src/afs/LINUX/osi_module.c ++++ b/src/afs/LINUX/osi_module.c +@@ -64,7 +64,7 @@ + } + #endif + +-int __init ++static int __init + afs_init(void) + { + int err; +@@ -114,7 +114,7 @@ + return 0; + } + +-void __exit ++static void __exit + afs_cleanup(void) + { + afs_shutdown_pagecopy(); +diff --git a/src/afs/LINUX/osi_pag_module.c b/src/afs/LINUX/osi_pag_module.c +index e832c5a..24b938f 100644 +--- a/src/afs/LINUX/osi_pag_module.c ++++ b/src/afs/LINUX/osi_pag_module.c +@@ -58,7 +58,7 @@ + struct user_namespace *afs_ns; + #endif + +-int __init ++static int __init + afspag_init(void) + { + #if !defined(EXPORTED_PROC_ROOT_FS) +@@ -90,7 +90,7 @@ + return 0; + } + +-void __exit ++static void __exit + afspag_cleanup(void) + { + #if !defined(EXPORTED_PROC_ROOT_FS) +diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c +index ba78bce..4ac63b1 100644 +--- a/src/afs/afs_call.c ++++ b/src/afs/afs_call.c +@@ -267,7 +267,7 @@ + } + } + +-void ++static void + afs_DaemonOp(long parm, long parm2, long parm3, long parm4, long parm5, + long parm6) + { +@@ -436,7 +436,7 @@ + return 0; + } + +-void ++static void + # if defined(AFS_LINUX_ENV) && !defined(INIT_WORK_HAS_DATA) + afsd_launcher(struct work_struct *work) + # else +@@ -457,7 +457,7 @@ + # endif /* !HAVE_LINUX_KTHREAD_RUN */ + } + +-void ++static void + afs_DaemonOp(long parm, long parm2, long parm3, long parm4, long parm5, + long parm6) + { +diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c +index 1aaabd9..03ff90f 100644 +--- a/src/afs/afs_disconnected.c ++++ b/src/afs/afs_disconnected.c +@@ -102,7 +102,7 @@ + * + * \return Mask of operations. + */ +-int ++static int + afs_GenStoreStatus(struct vcache *avc, struct AFSStoreStatus *astat) + { + if (!avc || !astat || !avc->f.ddirty_flags) +@@ -157,7 +157,7 @@ + * + * \return 0 on success, -1 on failure + */ +-int ++static int + afs_GetParentDirFid(struct vcache *avc, struct VenusFid *afid) + { + struct dcache *tdc; +@@ -234,7 +234,7 @@ + * \param deleted Has this file been deleted? If yes, use the shadow + * dir for looking up the name. + */ +-int ++static int + afs_GetVnodeName(struct vcache *avc, struct VenusFid *afid, char *aname, + int deleted) + { +@@ -358,7 +358,7 @@ + * + * \note afs_DDirtyVCListLock must be write locked. + */ +-int ++static int + afs_CheckDeletedChildren(struct vcache *avc) + { + struct dcache *tdc; +@@ -452,7 +452,7 @@ + * \param old_fid The current dir's fid. + * \param new_fid The new dir's fid. + */ +-void ++static void + afs_FixChildrenFids(struct VenusFid *old_fid, struct VenusFid *new_fid) + { + struct dcache *tdc; +@@ -499,7 +499,7 @@ + * be deferred to later in the resync process + */ + +-int ++static int + afs_GetParentVCache(struct vcache *avc, int deleted, struct VenusFid *afid, + char *aname, struct vcache **adp) + { +@@ -548,7 +548,7 @@ + * - Get the new name from the current dir. + * - Old dir fid and new dir fid are collected along the way. + * */ +-int ++static int + afs_ProcessOpRename(struct vcache *avc, struct vrequest *areq) + { + struct VenusFid old_pdir_fid, new_pdir_fid; +@@ -651,7 +651,7 @@ + * - Handle errors. + * - Reorder vhash and dcaches in their hashes, using the newly acquired fid. + */ +-int ++static int + afs_ProcessOpCreate(struct vcache *avc, struct vrequest *areq, + afs_ucred_t *acred) + { +@@ -921,7 +921,7 @@ + * + * \note avc must be write locked. + */ +-int ++static int + afs_ProcessOpRemove(struct vcache *avc, struct vrequest *areq) + { + char *tname = NULL; +@@ -1022,7 +1022,7 @@ + * + * \return 0 for success. On failure, other error codes. + */ +-int ++static int + afs_SendChanges(struct vcache *avc, struct vrequest *areq) + { + struct afs_conn *tc; +diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c +index 63b370d..97d0671 100644 +--- a/src/afs/afs_fetchstore.c ++++ b/src/afs/afs_fetchstore.c +@@ -77,14 +77,14 @@ + + + +-afs_int32 ++static afs_int32 + rxfs_storeUfsPrepare(void *r, afs_uint32 size, afs_uint32 *tlen) + { + *tlen = (size > AFS_LRALLOCSIZ ? AFS_LRALLOCSIZ : size); + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storeMemPrepare(void *r, afs_uint32 size, afs_uint32 *tlen) + { + afs_int32 code; +@@ -105,7 +105,7 @@ + return code; + } + +-afs_int32 ++static afs_int32 + rxfs_storeUfsRead(void *r, struct osi_file *tfile, afs_uint32 offset, + afs_uint32 tlen, afs_uint32 *bytesread) + { +@@ -126,7 +126,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storeMemRead(void *r, struct osi_file *tfile, afs_uint32 offset, + afs_uint32 tlen, afs_uint32 *bytesread) + { +@@ -142,7 +142,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storeMemWrite(void *r, afs_uint32 l, afs_uint32 *byteswritten) + { + afs_int32 code; +@@ -159,7 +159,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storeUfsWrite(void *r, afs_uint32 l, afs_uint32 *byteswritten) + { + afs_int32 code; +@@ -179,7 +179,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storePadd(void *rock, afs_uint32 size) + { + afs_int32 code = 0; +@@ -203,7 +203,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_storeStatus(void *rock) + { + struct rxfs_storeVariables *v = (struct rxfs_storeVariables *)rock; +@@ -213,7 +213,7 @@ + return 1; + } + +-afs_int32 ++static afs_int32 + rxfs_storeClose(void *r, struct AFSFetchStatus *OutStatus, int *doProcessFS) + { + afs_int32 code; +@@ -236,7 +236,7 @@ + return code; + } + +-afs_int32 ++static afs_int32 + rxfs_storeDestroy(void **r, afs_int32 code) + { + struct rxfs_storeVariables *v = (struct rxfs_storeVariables *)*r; +@@ -255,7 +255,7 @@ + return code; + } + +-afs_int32 ++static afs_int32 + afs_GenericStoreProc(struct storeOps *ops, void *rock, + struct dcache *tdc, int *shouldwake, + afs_size_t *bytesXferred) +@@ -353,7 +353,7 @@ + #endif + }; + +-afs_int32 ++static afs_int32 + rxfs_storeInit(struct vcache *avc, struct afs_conn *tc, + struct rx_connection *rxconn, afs_size_t base, + afs_size_t bytes, afs_size_t length, +@@ -437,7 +437,7 @@ + * \param ops pointer to the block of storeOps to be used for this operation + * \param rock pointer to the opaque protocol-specific data of this operation + */ +-afs_int32 ++static afs_int32 + afs_CacheStoreDCaches(struct vcache *avc, struct dcache **dclist, + afs_size_t bytes, afs_hyper_t *anewDV, int *doProcessFS, + struct AFSFetchStatus *OutStatus, afs_uint32 nchunks, +@@ -720,7 +720,7 @@ + afs_int32 iovmax; + }; + +-afs_int32 ++static afs_int32 + rxfs_fetchUfsRead(void *r, afs_uint32 size, afs_uint32 *bytesread) + { + afs_int32 code; +@@ -738,7 +738,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_fetchMemRead(void *r, afs_uint32 tlen, afs_uint32 *bytesread) + { + afs_int32 code; +@@ -755,7 +755,7 @@ + } + + +-afs_int32 ++static afs_int32 + rxfs_fetchMemWrite(void *r, struct osi_file *fP, afs_uint32 offset, + afs_uint32 tlen, afs_uint32 *byteswritten) + { +@@ -771,7 +771,7 @@ + return 0; + } + +-afs_int32 ++static afs_int32 + rxfs_fetchUfsWrite(void *r, struct osi_file *fP, afs_uint32 offset, + afs_uint32 tlen, afs_uint32 *byteswritten) + { +@@ -787,7 +787,7 @@ + } + + +-afs_int32 ++static afs_int32 + rxfs_fetchClose(void *r, struct vcache *avc, struct dcache * adc, + struct afs_FetchOutput *o) + { +@@ -814,7 +814,7 @@ + return code; + } + +-afs_int32 ++static afs_int32 + rxfs_fetchDestroy(void **r, afs_int32 code) + { + struct rxfs_fetchVariables *v = (struct rxfs_fetchVariables *)*r; +@@ -833,7 +833,7 @@ + return code; + } + +-afs_int32 ++static afs_int32 + rxfs_fetchMore(void *r, afs_int32 *length, afs_uint32 *moredata) + { + afs_int32 code; +@@ -882,7 +882,7 @@ + rxfs_fetchDestroy + }; + +-afs_int32 ++static afs_int32 + rxfs_fetchInit(struct afs_conn *tc, struct rx_connection *rxconn, + struct vcache *avc, afs_offs_t base, + afs_uint32 size, afs_int32 *alength, struct dcache *adc, +diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c +index 42b4a0c..08a1660 100644 +--- a/src/afs/afs_icl.c ++++ b/src/afs/afs_icl.c +@@ -34,7 +34,7 @@ + int afs_icl_inited = 0; + + /* init function, called once, under afs_icl_lock */ +-int ++static int + afs_icl_Init(void) + { + afs_icl_inited = 1; +@@ -539,7 +539,7 @@ + #endif + + +-void ++static void + afs_icl_AppendOne(struct afs_icl_log *logp, int type, long parm) + { + if (type) { +diff --git a/src/afs/afs_pag_cred.c b/src/afs/afs_pag_cred.c +index 3dce854..e77cf8a 100644 +--- a/src/afs/afs_pag_cred.c ++++ b/src/afs/afs_pag_cred.c +@@ -32,7 +32,7 @@ + static struct afspag_cell *primary_cell = 0; + + +-struct afspag_cell * ++static struct afspag_cell * + afspag_GetCell(char *acell) + { + struct afspag_cell *tcell; +@@ -66,7 +66,7 @@ + } + + +-struct afspag_cell * ++static struct afspag_cell * + afspag_GetPrimaryCell(void) + { + struct afspag_cell *tcell; +diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c +index 3674eff..9d2d93c 100644 +--- a/src/afs/afs_server.c ++++ b/src/afs/afs_server.c +@@ -556,7 +556,7 @@ + } + } + +-void ++static void + CkSrv_GetCaps(int nconns, struct rx_connection **rxconns, + struct afs_conn **conns) + { +diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c +index e72b45e..f500b65 100644 +--- a/src/afs/afs_vcache.c ++++ b/src/afs/afs_vcache.c +@@ -727,7 +727,7 @@ + #endif + } + +-void ++static void + afs_PostPopulateVCache(struct vcache *avc, struct VenusFid *afid, int seq) + { + /* diff --git a/e428053.diff b/e428053.diff new file mode 100644 index 0000000..6161fb6 --- /dev/null +++ b/e428053.diff @@ -0,0 +1,65 @@ +From e428053b5bc1250fdcc3ed8ac52ee798d96ad284 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Tue, 05 Mar 2024 07:40:08 -0700 +Subject: [PATCH] rxgen: Declare generated PKG_OpCodeStats() + +The function {PKG}_OpCodeStats() is generated by rxgen, however a +prototype for the function is not generated. + +The functions h_ProcMainBody_setup() and h_HeadofOldStyleProc_setup() +in rpc_parse.c emit prototypes for {PKG}_ExecuteRequest() and +{PKG}_TranslateOpCode(), but do not emit a prototype for +{PKG}_OpCodeStats(). + +Update rxgen to emit a function prototype for {PKG}_OpCodeStats() in the +generated header file. + +Use a variable to point to "PackagePrefix[PackageIndex]" in +h_ProcMainBody_setup to improve readability. + +{PKG}_OpCodeStats(), specifically RXSTATS_OpCodeStats(), is flagged due +to a missing prototype when building against a Linux 6.8 kernel (which +sets the -Wmissing-declarations and -Wmissing-prototypes compiler flags +as default). Linux 6.8 commit: 'Makefile.extrawarn: turn on +missing-prototypes globally' (0fcb70851f). When building against a +kernel with CONFIG_WERROR=y, the build fails. + +Reviewed-on: https://gerrit.openafs.org/15631 +Tested-by: BuildBot +Reviewed-by: Mark Vitale +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 26bb4d143b31ba027cf2721ac731df67a174c43b) + +Change-Id: I9072d22d142b5b7a2f59b0cfc4026066ef1d9501 +--- + +diff --git a/src/rxgen/rpc_parse.c b/src/rxgen/rpc_parse.c +index 59854f4..e648a66 100644 +--- a/src/rxgen/rpc_parse.c ++++ b/src/rxgen/rpc_parse.c +@@ -2148,10 +2148,14 @@ + static void + h_ProcMainBody_setup(void) + { ++ char *pprefix = PackagePrefix[PackageIndex]; + f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", +- prefix, PackagePrefix[PackageIndex]); ++ prefix, pprefix); + f_print(fout,"extern char * %s%sTranslateOpCode(int op);\n", prefix, +- PackagePrefix[PackageIndex]); ++ pprefix); ++ f_print(fout,"extern struct %s%sstats *%s%sOpCodeStats(int op);\n", ++ prefix, pprefix, ++ prefix, pprefix); + } + + static void +@@ -2165,6 +2169,8 @@ + f_print(fout,"\nextern int %sOpCodeIndex(int op);\n", PackagePrefix[PackageIndex]); + f_print(fout, "extern char * %s%sTranslateOpCode(int op);\n", + prefix, pprefix); ++ f_print(fout, "extern struct %s%sstats *%s%sOpCodeStats(int op);\n", ++ prefix, pprefix, prefix, pprefix); + } + + void diff --git a/ef7b8c5.diff b/ef7b8c5.diff new file mode 100644 index 0000000..209a4e5 --- /dev/null +++ b/ef7b8c5.diff @@ -0,0 +1,107 @@ +From ef7b8c578790d84c89f09c3236f1718725770e75 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Wed, 07 Feb 2024 14:51:23 -0700 +Subject: [PATCH] cf: Add function prototypes for linux conftest + +The Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f) + +added the compiler flags -Wmissing-declarations and -Wmissing-prototypes +as defaults for all kernel modules builds. This change causes configure +to fail for various Linux kernel tests. + +Update the template used to create the conftest.c file to provide a +function declaration for conftest(). + +Use a 'static' attribute when defining functions used within tests. + +Note: 2 configure tests (LINUX_INIT_WORK_AS_DATA and +LINUX_IOP_CREATE_TAKES_MODE_T) defined nested functions. Relocate the +nested functions to outside the body of conftest() to avoid compiler +errors due to nested function definitions. + +Reviewed-on: https://gerrit.openafs.org/15614 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 1440843b80e28db908bd8c264b8adbfb2c95b4d9) + +Change-Id: I38acb7b0cb08dec8e9bca5f3792fbf981884a74c +Reviewed-on: https://gerrit.openafs.org/15683 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Michael Meffie +Reviewed-by: Benjamin Kaduk +--- + +diff --git a/src/cf/linux-test1.m4 b/src/cf/linux-test1.m4 +index 7bb5a67..010a446 100644 +--- a/src/cf/linux-test1.m4 ++++ b/src/cf/linux-test1.m4 +@@ -16,7 +16,7 @@ + /* end confdefs.h */ + #include + $1 +- ++void conftest(void); + void conftest(void) + { + $2 +@@ -201,7 +201,7 @@ + CPPFLAGS="$CPPFLAGS -Werror" + AC_TRY_KBUILD( + [$4 +- $5 op($6) { return ($5)0; };], ++ static $5 op($6) { return ($5)0; };], + [static struct $1 ops; ops.$2 = op;], + AS_VAR_SET([ac_linux_operation], [yes]), + AS_VAR_SET([ac_linux_operation], [no])) +diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 +index 3596b6a..7889c90 100644 +--- a/src/cf/linux-test4.m4 ++++ b/src/cf/linux-test4.m4 +@@ -400,9 +400,9 @@ + AC_CHECK_LINUX_BUILD([whether INIT_WORK has a _data argument], + [ac_cv_linux_init_work_has_data], + [#include +-#include ], +-[ +-void f(struct work_struct *w) {} ++#include ++static void f(struct work_struct *w) {}], ++[ + struct work_struct *w; + int *i; + INIT_WORK(w,f,i);], +@@ -493,7 +493,7 @@ + AC_CHECK_LINUX_BUILD([whether kmem_cache_create constructor takes a void pointer], + [ac_cv_linux_kmem_cache_create_ctor_takes_void], + [#include +- void _ctor(void *v) { };], ++ static void _ctor(void *v) { };], + [kmem_cache_create(NULL, 0, 0, 0, _ctor);], + [KMEM_CACHE_CTOR_TAKES_VOID], + [define if kmem_cache_create constructor takes a single void ptr], +@@ -667,7 +667,7 @@ + AC_CHECK_LINUX_BUILD([whether 4.11+ inode.i_op->getattr takes a struct path argument], + [ac_cv_linux_iop_getattr_takes_path_struct], + [#include +- int _getattr(const struct path *path, struct kstat *stat, u32 request_mask, ++ static int _getattr(const struct path *path, struct kstat *stat, u32 request_mask, + unsigned int sync_mode) {return 0;}; + struct inode_operations _i_ops;], + [_i_ops.getattr = _getattr;], +@@ -692,10 +692,10 @@ + AC_DEFUN([LINUX_IOP_CREATE_TAKES_UMODE_T], [ + AC_CHECK_LINUX_BUILD([whether inode.i_op->create takes a umode_t argument], + [ac_cv_linux_iop_create_takes_umode_t], +- [#include ], ++ [#include ++ static int _create(struct inode *i, struct dentry *d, umode_t m, struct nameidata *n) ++ {return 0;};], + [static struct inode_operations _i_ops; +- int _create(struct inode *i, struct dentry *d, umode_t m, struct nameidata *n) +- {return 0;}; + _i_ops.create = _create;], + [IOP_CREATE_TAKES_UMODE_T], + [define if inode.i_op->create takes a umode_t argument], diff --git a/f5bafb0.diff b/f5bafb0.diff new file mode 100644 index 0000000..2a794a4 --- /dev/null +++ b/f5bafb0.diff @@ -0,0 +1,78 @@ +From f5bafb0680a063d710b6e5e8ccf833f1dd371896 Mon Sep 17 00:00:00 2001 +From: Cheyenne Wills +Date: Wed, 07 Feb 2024 19:34:29 -0700 +Subject: [PATCH] rx: Add function prototypes to rx_prototypes.h + +The prototype for rxk_NewSocketHost() is not in a header file, but is +defined in the referencing .c file. The ARCH/rx_knet.c files that +implement rxk_NewSocketHost() do not have a prototype (but when the +rx_kcommon.c implementation is used it does have a prototype, since +rx_kcommon.c is the "referencing .c file"). + +Add the prototype for rxk_NewSocketHost() to rx_prototypes.h and +remove the prototype from rx_kcommon.c + +The prototypes for the functions rx_DebugOnOff() and rx_StatsOnOff() +are defined within rx_prototypes.h, but are within a preprocessor +conditional for AFS_NT40_ENV, however the implementation for these +2 functions do not have the preprocessor conditional. + +Rearrange the prototypes for rx_DebugOnOff() and rx_StatsOnOff() so they +are outside the AFS_NT40_ENV preprocessor conditional. + +These functions are flagged due to missing prototypes when building +against a Linux 6.8 kernel (which sets the -Wmissing-declarations and +-Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + +When building against a kernel with CONFIG_WERROR=y, the build fails. + +There are no functional changes in this commit. + +Reviewed-on: https://gerrit.openafs.org/15624 +Reviewed-by: Mark Vitale +Reviewed-by: Cheyenne Wills +Tested-by: Benjamin Kaduk +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 8528c36b96fe2935f42188caabf4feed0d5dbcbd) + +Change-Id: Ieae8be7f89f5c675c6580d8cfb02ea77ce4088f7 +--- + +diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c +index b6a069c..c90df3d 100644 +--- a/src/rx/rx_kcommon.c ++++ b/src/rx/rx_kcommon.c +@@ -33,7 +33,6 @@ + int (*rxk_GetPacketProc) (struct rx_packet **ahandle, int asize); + #endif + +-osi_socket *rxk_NewSocketHost(afs_uint32 ahost, short aport); + extern struct interfaceAddr afs_cb_interface; + + rxk_ports_t rxk_ports; +diff --git a/src/rx/rx_prototypes.h b/src/rx/rx_prototypes.h +index 87a1049..6e1ae56 100644 +--- a/src/rx/rx_prototypes.h ++++ b/src/rx/rx_prototypes.h +@@ -24,9 +24,10 @@ + + extern int rx_Init(u_int port); + extern int rx_InitHost(u_int host, u_int port); +-#ifdef AFS_NT40_ENV ++ + extern void rx_DebugOnOff(int on); + extern void rx_StatsOnOff(int on); ++#ifdef AFS_NT40_ENV + extern void rx_StartClientThread(void); + #endif + extern void rx_StartServer(int donateMe); +@@ -332,6 +333,8 @@ + extern void rxk_init(void); + # endif + ++extern osi_socket *rxk_NewSocketHost(afs_uint32 ahost, short aport); ++ + /* UKERNEL/rx_knet.c */ + # ifdef UKERNEL + extern void afs_rxevent_daemon(void); diff --git a/fca6fd9.diff b/fca6fd9.diff new file mode 100644 index 0000000..1e79724 --- /dev/null +++ b/fca6fd9.diff @@ -0,0 +1,35 @@ +From fca6fd911e493a344c040a95ea4ab820e2828802 Mon Sep 17 00:00:00 2001 +From: Andrew Deason +Date: Thu, 28 Jun 2018 12:50:52 -0500 +Subject: [PATCH] afs: Make afs_AllocDCache static + +Nothing using afs_AllocDCache outside of afs_dcache.c. Declare the +function static, to ensure that nobody else uses it, and to maybe +allow for more compiler optimization. + +Reviewed-on: https://gerrit.openafs.org/13226 +Tested-by: BuildBot +Reviewed-by: Benjamin Kaduk +(cherry picked from commit 4ab70de9641807bd06056f0c1ac79550453b9574) + +Change-Id: I6fd9e31c4b2e862174402f731a77c91599893223 +Reviewed-on: https://gerrit.openafs.org/15679 +Tested-by: BuildBot +Reviewed-by: Andrew Deason +Reviewed-by: Michael Meffie +Reviewed-by: Benjamin Kaduk +--- + +diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c +index 3572f2f..46d0bdb 100644 +--- a/src/afs/afs_dcache.c ++++ b/src/afs/afs_dcache.c +@@ -1674,7 +1674,7 @@ + * + * \return The new dcache. + */ +-struct dcache * ++static struct dcache * + afs_AllocDCache(struct vcache *avc, afs_int32 chunk, afs_int32 lock, + struct VenusFid *ashFid) + { diff --git a/openafs-1.8.11-doc.tar.bz2 b/openafs-1.8.11-doc.tar.bz2 new file mode 100644 index 0000000..d3b140c --- /dev/null +++ b/openafs-1.8.11-doc.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ac6ab3f9d93d55de17757903b0493fc9020f1e0402ea319e61208b3900b607c +size 3779721 diff --git a/openafs-1.8.11-doc.tar.bz2.md5 b/openafs-1.8.11-doc.tar.bz2.md5 new file mode 100644 index 0000000..083699e --- /dev/null +++ b/openafs-1.8.11-doc.tar.bz2.md5 @@ -0,0 +1 @@ +174eef8826e76cc5cc952185659e59d3 ../1.8.11/openafs-1.8.11-doc.tar.bz2 diff --git a/openafs-1.8.11-doc.tar.bz2.sha256 b/openafs-1.8.11-doc.tar.bz2.sha256 new file mode 100644 index 0000000..715fbaf --- /dev/null +++ b/openafs-1.8.11-doc.tar.bz2.sha256 @@ -0,0 +1 @@ +3ac6ab3f9d93d55de17757903b0493fc9020f1e0402ea319e61208b3900b607c openafs-1.8.11-doc.tar.bz2 diff --git a/openafs-1.8.11-src.tar.bz2 b/openafs-1.8.11-src.tar.bz2 new file mode 100644 index 0000000..c5597a6 --- /dev/null +++ b/openafs-1.8.11-src.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2efb4710996b7d23198b53c56295a8f9e24e8a555317c5fc63b8125a3714ecd +size 15042304 diff --git a/openafs-1.8.11-src.tar.bz2.md5 b/openafs-1.8.11-src.tar.bz2.md5 new file mode 100644 index 0000000..71a9c11 --- /dev/null +++ b/openafs-1.8.11-src.tar.bz2.md5 @@ -0,0 +1 @@ +0739265979a6a9ea4309c610222cff35 ../1.8.11/openafs-1.8.11-src.tar.bz2 diff --git a/openafs-1.8.11-src.tar.bz2.sha256 b/openafs-1.8.11-src.tar.bz2.sha256 new file mode 100644 index 0000000..0f4c078 --- /dev/null +++ b/openafs-1.8.11-src.tar.bz2.sha256 @@ -0,0 +1 @@ +e2efb4710996b7d23198b53c56295a8f9e24e8a555317c5fc63b8125a3714ecd openafs-1.8.11-src.tar.bz2 diff --git a/openafs-1.8.11pre1-doc.tar.bz2 b/openafs-1.8.11pre1-doc.tar.bz2 deleted file mode 100644 index e44ce78..0000000 --- a/openafs-1.8.11pre1-doc.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db72ffc092f562d3c3d500b0d9f8541df5c3f83a4d80b32a242773cbfda5b040 -size 3807798 diff --git a/openafs-1.8.11pre1-doc.tar.bz2.md5 b/openafs-1.8.11pre1-doc.tar.bz2.md5 deleted file mode 100644 index 68d1874..0000000 --- a/openafs-1.8.11pre1-doc.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -fbb93c3e4e580271d7f134ced201576e ../1.8.11pre1/openafs-1.8.11pre1-doc.tar.bz2 diff --git a/openafs-1.8.11pre1-doc.tar.bz2.sha256 b/openafs-1.8.11pre1-doc.tar.bz2.sha256 deleted file mode 100644 index 76f62e2..0000000 --- a/openafs-1.8.11pre1-doc.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -db72ffc092f562d3c3d500b0d9f8541df5c3f83a4d80b32a242773cbfda5b040 openafs-1.8.11pre1-doc.tar.bz2 diff --git a/openafs-1.8.11pre1-src.tar.bz2 b/openafs-1.8.11pre1-src.tar.bz2 deleted file mode 100644 index 8a6a418..0000000 --- a/openafs-1.8.11pre1-src.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfdb4bcd79e060180ebfd127d0447eceb716be0fbe07712ee7f9ac1904b42c82 -size 15042093 diff --git a/openafs-1.8.11pre1-src.tar.bz2.md5 b/openafs-1.8.11pre1-src.tar.bz2.md5 deleted file mode 100644 index f6fd060..0000000 --- a/openafs-1.8.11pre1-src.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -89602a759c60b491863c0e4c8545b2ea ../1.8.11pre1/openafs-1.8.11pre1-src.tar.bz2 diff --git a/openafs-1.8.11pre1-src.tar.bz2.sha256 b/openafs-1.8.11pre1-src.tar.bz2.sha256 deleted file mode 100644 index 3317200..0000000 --- a/openafs-1.8.11pre1-src.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -dfdb4bcd79e060180ebfd127d0447eceb716be0fbe07712ee7f9ac1904b42c82 openafs-1.8.11pre1-src.tar.bz2 diff --git a/openafs-client.service.allow_unsupported b/openafs-client.service.allow_unsupported index 7fa7951..f68bdab 100644 --- a/openafs-client.service.allow_unsupported +++ b/openafs-client.service.allow_unsupported @@ -15,7 +15,6 @@ ExecStartPost=/usr/bin/fs setcrypt $CRYPT ExecStop=/usr/bin/umount /afs ExecStop=/usr/sbin/afsd -shutdown ExecStop=/sbin/rmmod libafs -KillMode=none [Install] WantedBy=multi-user.target remote-fs.target diff --git a/openafs.changes b/openafs.changes index cf94f09..8c916c5 100644 --- a/openafs.changes +++ b/openafs.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +Thu Apr 18 09:16:44 UTC 2024 - Christof Hanke + +- update to openafs-1.8.11 +- apply upstream patches for kernel 6.8 + * 056a7a8.diff + * 05ac614.diff + * 073adec.diff + * 0d9f6cf.diff + * 0e983a9.diff + * 112fb94.diff + * 1e1bf8e.diff + * 2056ce8.diff + * 5312d06.diff + * 67e48c8.diff + * 6b20756.diff + * 743d72f.diff + * 7cae97b.diff + * 81b910a.diff + * 87ab04a.diff + * 9f052c1.diff + * a14a9ad.diff + * a87845d.diff + * aae8b00.diff + * b77b304.diff + * d1c89ac.diff + * d9f3a2c.diff + * db91384.diff + * dffd0e1.diff + * e0f425a.diff + * e157f8f.diff + * e428053.diff + * ef7b8c5.diff + * f5bafb0.diff + * fca6fd9.diff + ------------------------------------------------------------------- Mon Feb 26 12:45:02 UTC 2024 - Dominique Leuenberger diff --git a/openafs.spec b/openafs.spec index 755eeaa..4451c5b 100644 --- a/openafs.spec +++ b/openafs.spec @@ -57,11 +57,11 @@ # used for %setup only # leave upstream tar-balls untouched for integrity checks. -%define upstream_version 1.8.11pre1 +%define upstream_version 1.8.11 Name: openafs -Version: 1.8.11~pre1 +Version: 1.8.11 Release: 0 Summary: OpenAFS Distributed File System License: IPL-1.0 @@ -103,7 +103,37 @@ Source58: openafs.cacheinfo Source98: kmp_only.files Source99: openafs.changes -# PATCH-FIX-UPSTREAM fix build with kernel 6.5 +# PATCH-FIX-UPSTREAM fix build with kernel 6.8 +Patch1: ef7b8c5.diff +Patch2: e0f425a.diff +Patch3: 9f052c1.diff +Patch4: 073adec.diff +Patch5: a87845d.diff +Patch6: aae8b00.diff +Patch7: 5312d06.diff +Patch8: 056a7a8.diff +Patch9: db91384.diff +Patch10: 67e48c8.diff +Patch11: 112fb94.diff +Patch12: 87ab04a.diff +Patch13: 0d9f6cf.diff +Patch14: dffd0e1.diff +Patch15: f5bafb0.diff +Patch16: 6b20756.diff +Patch17: 05ac614.diff +Patch18: 743d72f.diff +Patch19: e157f8f.diff +Patch20: 2056ce8.diff +Patch21: d1c89ac.diff +Patch22: d9f3a2c.diff +Patch23: 7cae97b.diff +Patch24: 81b910a.diff +Patch25: 1e1bf8e.diff +Patch26: a14a9ad.diff +Patch27: b77b304.diff +Patch28: fca6fd9.diff +Patch29: e428053.diff + # PATCH-HANDLE-BACKPORTS # some kernel-features from 6.5 are apparently in 6.4 Patch99: handle_backports.diff @@ -321,6 +351,36 @@ done %patch -P 99 -p1 %endif +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 +%patch -P 7 -p1 +%patch -P 8 -p1 +%patch -P 9 -p1 +%patch -P 10 -p1 +%patch -P 11 -p1 +%patch -P 12 -p1 +%patch -P 13 -p1 +%patch -P 14 -p1 +%patch -P 15 -p1 +%patch -P 16 -p1 +%patch -P 17 -p1 +%patch -P 18 -p1 +%patch -P 19 -p1 +%patch -P 20 -p1 +%patch -P 21 -p1 +%patch -P 22 -p1 +%patch -P 23 -p1 +%patch -P 24 -p1 +%patch -P 25 -p1 +%patch -P 26 -p1 +%patch -P 27 -p1 +%patch -P 28 -p1 +%patch -P 29 -p1 + ./regen.sh %build diff --git a/sysconfig.openafs-fuse-client b/sysconfig.openafs-fuse-client index 06ff3d3..761671b 100644 --- a/sysconfig.openafs-fuse-client +++ b/sysconfig.openafs-fuse-client @@ -1,5 +1,5 @@ # -# startup options for the openAFS client. +# startup options for the openAFS FUSE client. # see man afsd for details AFSD_ARGS="-fakestat -memcache -blocks 102400 -dynroot -afsdb" From ceb61284885bc20485e826915614dcbb42d522c0cf6ba2e68b6ea30dd0e72a39 Mon Sep 17 00:00:00 2001 From: Christof Hanke Date: Fri, 26 Apr 2024 04:40:06 +0000 Subject: [PATCH 2/3] Accepting request 1170222 from home:hauky:branches:filesystems remove superfluous patch OBS-URL: https://build.opensuse.org/request/show/1170222 OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=124 --- 0e983a9.diff | 347 --------------------------------------------------- 1 file changed, 347 deletions(-) delete mode 100644 0e983a9.diff diff --git a/0e983a9.diff b/0e983a9.diff deleted file mode 100644 index 9e4a8e4..0000000 --- a/0e983a9.diff +++ /dev/null @@ -1,347 +0,0 @@ -From 0e983a9a7e010a4e7c8a4c60cf313e566323bbf1 Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Sun, 03 May 2020 10:33:28 -0500 -Subject: [PATCH] afs: Drop GLOCK for various Rx calls - -Most calls into Rx from libafs do so without the AFS_GLOCK, but a few -pieces of code still hold AFS_GLOCK while making some Rx calls. A few -calls into Rx also currently require AFS_GLOCK, but drop AFS_GLOCK -internally, which is somewhat confusing/inconsistent. Calling Rx -functions with AFS_GLOCK held can potentially cause locking/allocation -problems on various platforms, such as FreeBSD where we get WITNESS -warnings about acquiring sleepable Rx locks while holding the -non-sleepable AFS_GLOCK. - -Fix a variety of Rx calls from libafs to drop AFS_GLOCK before calling -into Rx. Specifically, this commit handles calls to rxi_GetIFInfo, -rx_InitHost, rx_StartServer, rx_ServerProc, rx_GetConnection, -rx_DestroyConnection/rx_PutConnection, and -rx_SetConnSecondsUntilNatPing. - -For calls made via afs_start_thread, adjust afs_start_thread to accept -a new argument that says whether to acquire AFS_GLOCK for the relevant -function or not. - -For a call to rx_InitHost inside afs_InitSetup, dropping GLOCK makes -it possible for another thread to also enter afs_InitSetup while we're -running, before afs_InitSetup_done is set. To prevent two threads from -running afs_InitSetup in parallel, introduce afs_InitSetup_running -(which is set while afs_InitSetup is running), and simply wait for it -to be cleared if it is set when we enter afs_InitSetup. - -This commit does not handle strictly all calls into Rx from libafs, -since many Rx calls don't do anything interesting besides set some -internal variables, and so AFS_GLOCK doesn't really matter for them, -and dropping/reacquiring it around those calls may have performance -impact. - -Reviewed-on: https://gerrit.openafs.org/14184 -Reviewed-by: Benjamin Kaduk -Tested-by: BuildBot -(cherry picked from commit d5e1428a3bd4a7fbb4401cf17176474f0c1825d3) - - Conflicts: - src/afs/afs_call.c - context only due to not having commit: - 'Log binding ip address and port during startup' (02dede5d40) - -Change-Id: I0d14105d5dc8bfd4740c7a9adfc61c36f8a2318c ---- - -diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c -index aa5d5fc..be69846 100644 ---- a/src/afs/LINUX/osi_misc.c -+++ b/src/afs/LINUX/osi_misc.c -@@ -155,7 +155,18 @@ - - - /* This could use some work, and support on more platforms. */ --int afs_thread_wrapper(void *rock) -+static int -+afs_thread_wrapper(void *rock) -+{ -+ void (*proc)(void) = rock; -+ __module_get(THIS_MODULE); -+ (*proc)(); -+ module_put(THIS_MODULE); -+ return 0; -+} -+ -+static int -+afs_thread_wrapper_glock(void *rock) - { - void (*proc)(void) = rock; - __module_get(THIS_MODULE); -@@ -166,7 +177,12 @@ - return 0; - } - --void afs_start_thread(void (*proc)(void), char *name) -+void -+afs_start_thread(void (*proc)(void), char *name, int needs_glock) - { -- kthread_run(afs_thread_wrapper, proc, "%s", name); -+ if (needs_glock) { -+ kthread_run(afs_thread_wrapper_glock, proc, "%s", name); -+ } else { -+ kthread_run(afs_thread_wrapper, proc, "%s", name); -+ } - } -diff --git a/src/afs/LINUX/osi_prototypes.h b/src/afs/LINUX/osi_prototypes.h -index 130b566..2ed0543 100644 ---- a/src/afs/LINUX/osi_prototypes.h -+++ b/src/afs/LINUX/osi_prototypes.h -@@ -50,7 +50,7 @@ - struct dentry **dpp); - extern int osi_abspath(char *aname, char *buf, int buflen, - int followlink, char **pathp); --extern void afs_start_thread(void (*proc)(void), char *name); -+extern void afs_start_thread(void (*proc)(void), char *name, int needs_glock); - - /* osi_probe.c */ - extern void *osi_find_syscall_table(int which); -diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c -index 4ac63b1..7fb323c 100644 ---- a/src/afs/afs_call.c -+++ b/src/afs/afs_call.c -@@ -104,10 +104,18 @@ - static int - afs_InitSetup(int preallocs) - { -+ static int afs_InitSetup_running; -+ - int code; -+ -+ while (afs_InitSetup_running) { -+ afs_osi_Sleep(&afs_InitSetup_running); -+ } - - if (afs_InitSetup_done) - return EAGAIN; -+ -+ afs_InitSetup_running = 1; - - #ifdef AFS_SUN510_ENV - /* Initialize a RW lock for the ifinfo global array */ -@@ -133,10 +141,12 @@ - /* start RX */ - if(!afscall_set_rxpck_received) - rx_extraPackets = AFS_NRXPACKETS; /* smaller # of packets */ -+ AFS_GUNLOCK(); - code = rx_InitHost(rx_bindhost, htons(7001)); -+ AFS_GLOCK(); - if (code) { - afs_warn("AFS: RX failed to initialize %d).\n", code); -- return code; -+ goto done; - } - rx_SetRxDeadTime(afs_rx_deadtime); - /* resource init creates the services */ -@@ -145,6 +155,9 @@ - afs_InitSetup_done = 1; - afs_osi_Wakeup(&afs_InitSetup_done); - -+ done: -+ afs_InitSetup_running = 0; -+ afs_osi_Wakeup(&afs_InitSetup_running); - return code; - } - -@@ -1703,7 +1716,9 @@ - afs_warn("CB... "); - - afs_termState = AFSOP_STOP_RXCALLBACK; -+ AFS_GUNLOCK(); - rx_WakeupServerProcs(); -+ AFS_GLOCK(); - #ifdef AFS_AIX51_ENV - shutdown_rxkernel(); - #endif -@@ -1756,7 +1771,9 @@ - afs_warn("NetIfPoller... "); - osi_StopNetIfPoller(); - #endif -+ AFS_GUNLOCK(); - rxi_FreeAllPackets(); -+ AFS_GLOCK(); - - afs_termState = AFSOP_STOP_COMPLETE; - -diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c -index 1fe990e..7cffef6 100644 ---- a/src/afs/afs_callback.c -+++ b/src/afs/afs_callback.c -@@ -985,7 +985,9 @@ - /* - * Donate this process to Rx. - */ -+ AFS_GUNLOCK(); - rx_ServerProc(NULL); -+ AFS_GLOCK(); - return (0); - - } /*afs_RXCallBackServer */ -diff --git a/src/afs/afs_conn.c b/src/afs/afs_conn.c -index 2a3a513..8728ce5 100644 ---- a/src/afs/afs_conn.c -+++ b/src/afs/afs_conn.c -@@ -532,7 +532,9 @@ - */ - if ((service != 52) && (sap->natping == NULL)) { - sap->natping = tc; -+ AFS_GUNLOCK(); - rx_SetConnSecondsUntilNatPing(tc->id, 20); -+ AFS_GLOCK(); - } - - tc->forceConnectFS = 0; /* apparently we're appropriately connected now */ -@@ -542,7 +544,9 @@ - } /* end of if (tc->forceConnectFS)*/ - - *rxconn = tc->id; -+ AFS_GUNLOCK(); - rx_GetConnection(*rxconn); -+ AFS_GLOCK(); - - ReleaseSharedLock(&afs_xconn); - return tc; -@@ -672,7 +676,9 @@ - (unsigned long)(uintptrsz)ac, (int)ac->refCount); - } - ac->parent->refCount--; -+ AFS_GUNLOCK(); - rx_PutConnection(rxconn); -+ AFS_GLOCK(); - } /*afs_PutConn */ - - -diff --git a/src/afs/afs_daemons.c b/src/afs/afs_daemons.c -index 1879772..632aa84 100644 ---- a/src/afs/afs_daemons.c -+++ b/src/afs/afs_daemons.c -@@ -223,19 +223,21 @@ - } - } - if (last10MinCheck + 600 < now) { -+ int addrs_changed; - #ifdef AFS_USERSPACE_IP_ADDR - extern int rxi_GetcbiInfo(void); - #endif - afs_Trace1(afs_iclSetp, CM_TRACE_PROBEUP, ICL_TYPE_INT32, 600); - #ifdef AFS_USERSPACE_IP_ADDR -- if (rxi_GetcbiInfo()) { /* addresses changed from last time */ -+ addrs_changed = rxi_GetcbiInfo(); -+#else -+ AFS_GUNLOCK(); -+ addrs_changed = rxi_GetIFInfo(); -+ AFS_GLOCK(); -+#endif -+ if (addrs_changed) { /* addresses changed from last time */ - afs_FlushCBs(); - } --#else /* AFS_USERSPACE_IP_ADDR */ -- if (rxi_GetIFInfo()) { /* addresses changed from last time */ -- afs_FlushCBs(); -- } --#endif /* else AFS_USERSPACE_IP_ADDR */ - if (!afs_CheckServerDaemonStarted) - afs_CheckServers(0, NULL); - afs_GCUserData(); /* gc old conns */ -diff --git a/src/afs/afs_init.c b/src/afs/afs_init.c -index bdb791c..efa5132 100644 ---- a/src/afs/afs_init.c -+++ b/src/afs/afs_init.c -@@ -554,7 +554,9 @@ - afs_server = - rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", &secobj, 1, - RXSTATS_ExecuteRequest); -+ AFS_GUNLOCK(); - rx_StartServer(0); -+ AFS_GLOCK(); - afs_osi_Wakeup(&afs_server); /* wakeup anyone waiting for it */ - return 0; - -diff --git a/src/afs/afs_pag_call.c b/src/afs/afs_pag_call.c -index 610cfb3..9b7a906 100644 ---- a/src/afs/afs_pag_call.c -+++ b/src/afs/afs_pag_call.c -@@ -91,9 +91,12 @@ - afs_uuid_create(&afs_cb_interface.uuid); - - AFS_GLOCK(); -- - afs_InitStats(); -+ AFS_GUNLOCK(); -+ - rx_Init(htons(7001)); -+ -+ AFS_GLOCK(); - - AFS_STATCNT(afs_ResourceInit); - AFS_RWLOCK_INIT(&afs_xuser, "afs_xuser"); -@@ -117,18 +120,20 @@ - 1, RXSTATS_ExecuteRequest); - pagcb_svc = rx_NewService(0, PAGCB_SERVICEID, "pagcb", &srv_secobj, - 1, PAGCB_ExecuteRequest); -+ AFS_GUNLOCK(); - rx_StartServer(0); -+ AFS_GLOCK(); - - clt_secobj = rxnull_NewClientSecurityObject(); - rmtsys_conn = rx_NewConnection(nfs_server_addr, htons(7009), - RMTSYS_SERVICEID, clt_secobj, 0); - - #ifdef RXK_LISTENER_ENV -- afs_start_thread(rxk_Listener, "Rx Listener"); -+ afs_start_thread(rxk_Listener, "Rx Listener", 1); - #endif -- afs_start_thread((void *)(void *)rx_ServerProc, "Rx Server Thread"); -- afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon"); -- afs_start_thread(afs_Daemon, "AFS PAG Daemon"); -+ afs_start_thread((void *)(void *)rx_ServerProc, "Rx Server Thread", 0); -+ afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon", 1); -+ afs_start_thread(afs_Daemon, "AFS PAG Daemon", 1); - - afs_icl_InitLogs(); - -diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c -index c90df3d..239cf16 100644 ---- a/src/rx/rx_kcommon.c -+++ b/src/rx/rx_kcommon.c -@@ -267,13 +267,7 @@ - threadID = rxi_availProcs++; - MUTEX_EXIT(&rx_quota_mutex); - --# ifdef RX_ENABLE_LOCKS -- AFS_GUNLOCK(); --# endif /* RX_ENABLE_LOCKS */ - rxi_ServerProc(threadID, NULL, NULL); --# ifdef RX_ENABLE_LOCKS -- AFS_GLOCK(); --# endif /* RX_ENABLE_LOCKS */ - - return NULL; - } -@@ -856,8 +850,6 @@ - # if (defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)) && defined(KERNEL_FUNNEL) - thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL); - # endif -- AFS_ASSERT_GLOCK(); -- AFS_GUNLOCK(); - # if defined(AFS_HPUX102_ENV) - # if defined(AFS_HPUX110_ENV) - /* we need a file associated with the socket so sosend in NetSend -@@ -997,14 +989,12 @@ - # endif /* else defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) */ - # endif /* else AFS_HPUX110_ENV */ - -- AFS_GLOCK(); - # if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL) - thread_funnel_switch(NETWORK_FUNNEL, KERNEL_FUNNEL); - # endif - return (osi_socket *)newSocket; - - bad: -- AFS_GLOCK(); - # if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL) - thread_funnel_switch(NETWORK_FUNNEL, KERNEL_FUNNEL); - # endif From 53290b76cef984fc02600b1bae903b981c54ccb06133cc71ddc076f95608d0bc Mon Sep 17 00:00:00 2001 From: Christof Hanke Date: Fri, 14 Jun 2024 11:35:14 +0000 Subject: [PATCH 3/3] - change source-code base to git branch stable-1_8_x * required for keeping up with Linux kernel development. - new versioning scheme: openafs-$LAST_OFFICIAL_RELEASE.git$DATE_OF_NEWEST_COMMIT - add note in RELNOTES about this change - update ChangeLog from git OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=125 --- 056a7a8.diff | 46 - 05ac614.diff | 264 -- 073adec.diff | 126 - 0d9f6cf.diff | 134 - 112fb94.diff | 57 - 1e1bf8e.diff | 80 - 2056ce8.diff | 71 - 5312d06.diff | 49 - 67e48c8.diff | 43 - 6b20756.diff | 75 - 743d72f.diff | 48 - 7cae97b.diff | 66 - 81b910a.diff | 81 - 87ab04a.diff | 112 - 9f052c1.diff | 52 - ChangeLog | 3007 +++++++++------------- RELNOTES-1.8.11 => RELNOTES-stable-1_8_x | 14 + a14a9ad.diff | 177 -- a87845d.diff | 99 - aae8b00.diff | 53 - b77b304.diff | 47 - d1c89ac.diff | 89 - d9f3a2c.diff | 147 -- db91384.diff | 71 - dffd0e1.diff | 150 -- e0f425a.diff | 67 - e157f8f.diff | 473 ---- e428053.diff | 65 - ef7b8c5.diff | 107 - f5bafb0.diff | 78 - fca6fd9.diff | 35 - openafs-1.8.11-doc.tar.bz2 | 3 - openafs-1.8.11-doc.tar.bz2.md5 | 1 - openafs-1.8.11-doc.tar.bz2.sha256 | 1 - openafs-1.8.11-src.tar.bz2 | 3 - openafs-1.8.11-src.tar.bz2.md5 | 1 - openafs-1.8.11-src.tar.bz2.sha256 | 1 - openafs-stable-1_8_x-doc.tar.bz2 | 3 + openafs-stable-1_8_x-doc.tar.bz2.md5 | 1 + openafs-stable-1_8_x-doc.tar.bz2.sha256 | 1 + openafs-stable-1_8_x-src.tar.bz2 | 3 + openafs-stable-1_8_x-src.tar.bz2.md5 | 1 + openafs-stable-1_8_x-src.tar.bz2.sha256 | 1 + openafs.changes | 39 +- openafs.spec | 65 +- 45 files changed, 1202 insertions(+), 4905 deletions(-) delete mode 100644 056a7a8.diff delete mode 100644 05ac614.diff delete mode 100644 073adec.diff delete mode 100644 0d9f6cf.diff delete mode 100644 112fb94.diff delete mode 100644 1e1bf8e.diff delete mode 100644 2056ce8.diff delete mode 100644 5312d06.diff delete mode 100644 67e48c8.diff delete mode 100644 6b20756.diff delete mode 100644 743d72f.diff delete mode 100644 7cae97b.diff delete mode 100644 81b910a.diff delete mode 100644 87ab04a.diff delete mode 100644 9f052c1.diff rename RELNOTES-1.8.11 => RELNOTES-stable-1_8_x (87%) delete mode 100644 a14a9ad.diff delete mode 100644 a87845d.diff delete mode 100644 aae8b00.diff delete mode 100644 b77b304.diff delete mode 100644 d1c89ac.diff delete mode 100644 d9f3a2c.diff delete mode 100644 db91384.diff delete mode 100644 dffd0e1.diff delete mode 100644 e0f425a.diff delete mode 100644 e157f8f.diff delete mode 100644 e428053.diff delete mode 100644 ef7b8c5.diff delete mode 100644 f5bafb0.diff delete mode 100644 fca6fd9.diff delete mode 100644 openafs-1.8.11-doc.tar.bz2 delete mode 100644 openafs-1.8.11-doc.tar.bz2.md5 delete mode 100644 openafs-1.8.11-doc.tar.bz2.sha256 delete mode 100644 openafs-1.8.11-src.tar.bz2 delete mode 100644 openafs-1.8.11-src.tar.bz2.md5 delete mode 100644 openafs-1.8.11-src.tar.bz2.sha256 create mode 100644 openafs-stable-1_8_x-doc.tar.bz2 create mode 100644 openafs-stable-1_8_x-doc.tar.bz2.md5 create mode 100644 openafs-stable-1_8_x-doc.tar.bz2.sha256 create mode 100644 openafs-stable-1_8_x-src.tar.bz2 create mode 100644 openafs-stable-1_8_x-src.tar.bz2.md5 create mode 100644 openafs-stable-1_8_x-src.tar.bz2.sha256 diff --git a/056a7a8.diff b/056a7a8.diff deleted file mode 100644 index 77bc313..0000000 --- a/056a7a8.diff +++ /dev/null @@ -1,46 +0,0 @@ -From 056a7a8005a68cf2fb8be80668b139aa87a0de0b Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 09:28:02 -0700 -Subject: [PATCH] afs: Remove dummy_PSetAcl() - -The function dummy_PSetAcl() is not referenced anywhere within the -source tree. - -Remove the function dummy_PSetAcl(). - -The commit: 'doxygen-comments-20081010' (4b72f8765c) -introduced the function, but dummy_PSetAcl() has never been referenced -or defined within a header file. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15618 -Reviewed-by: Benjamin Kaduk -Tested-by: Benjamin Kaduk -(cherry picked from commit 05ca98687d882c72915e91430e29a4f2a36c502c) - -Change-Id: Ie4420a365e07d2d8564530e004df75330e86bea5 ---- - -diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c -index 9182a4b..7ddb5ad 100644 ---- a/src/afs/afs_pioctl.c -+++ b/src/afs/afs_pioctl.c -@@ -1426,12 +1426,6 @@ - * - * \post Changed ACL, via direct writing to the wire - */ --int --dummy_PSetAcl(char *ain, char *aout) --{ -- return 0; --} -- - DECL_PIOCTL(PSetAcl) - { - afs_int32 code; diff --git a/05ac614.diff b/05ac614.diff deleted file mode 100644 index fe4a85c..0000000 --- a/05ac614.diff +++ /dev/null @@ -1,264 +0,0 @@ -From 05ac6149f2f7998b6110c403d26757151b8e8ffe Mon Sep 17 00:00:00 2001 -From: Mark Vitale -Date: Thu, 11 Mar 2021 15:36:54 -0500 -Subject: [PATCH] afs: remove dead ICL (fstrace) code - -The ICL code (afs/afs_icl.c) which supports fstrace includes a number of -functions that have been dead code since the original IBM code import. -Some of these seem to have been intended to support fine-grained event -tracing, but the implementation was never completed. - -Remove the dead code. No functional change is incurred by this commit. - -Reviewed-on: https://gerrit.openafs.org/14555 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit ba58d9912cff07a6f2af7275017cf70115f1a88d) - -Change-Id: Ic0a6d5dac200e7e130fa8df66005bdaf291cf088 -Reviewed-on: https://gerrit.openafs.org/15682 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Benjamin Kaduk ---- - -diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c -index 8d09113..42b4a0c 100644 ---- a/src/afs/afs_icl.c -+++ b/src/afs/afs_icl.c -@@ -538,18 +538,6 @@ - #define ICL_APPENDLONG(lp, x) ICL_APPENDINT32((lp), (x)) - #endif - --/* routine to tell whether we're dealing with the address or the -- * object itself -- */ --int --afs_icl_UseAddr(int type) --{ -- if (type == ICL_TYPE_HYPER || type == ICL_TYPE_STRING -- || type == ICL_TYPE_FID || type == ICL_TYPE_INT64) -- return 1; -- else -- return 0; --} - - void - afs_icl_AppendOne(struct afs_icl_log *logp, int type, long parm) -@@ -884,19 +872,6 @@ - return code; - } - --/* return basic parameter information about a log */ --int --afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, -- afs_int32 * curSizep) --{ -- ObtainReadLock(&logp->lock); -- *maxSizep = logp->logSize; -- *curSizep = logp->logElements; -- ReleaseReadLock(&logp->lock); -- return 0; --} -- -- - /* hold and release logs */ - int - afs_icl_LogHold(struct afs_icl_log *logp) -@@ -904,14 +879,6 @@ - ObtainWriteLock(&afs_icl_lock, 187); - logp->refCount++; - ReleaseWriteLock(&afs_icl_lock); -- return 0; --} -- --/* hold and release logs, called with lock already held */ --int --afs_icl_LogHoldNL(struct afs_icl_log *logp) --{ -- logp->refCount++; - return 0; - } - -@@ -1070,32 +1037,6 @@ - return tp; - } - --int --afs_icl_EnumerateLogs(int (*aproc) -- (char *name, char *arock, struct afs_icl_log * tp), -- char *arock) --{ -- struct afs_icl_log *tp; -- afs_int32 code; -- -- code = 0; -- ObtainWriteLock(&afs_icl_lock, 195); -- for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { -- tp->refCount++; /* hold this guy */ -- ReleaseWriteLock(&afs_icl_lock); -- ObtainReadLock(&tp->lock); -- code = (*aproc) (tp->name, arock, tp); -- ReleaseReadLock(&tp->lock); -- ObtainWriteLock(&afs_icl_lock, 196); -- if (--tp->refCount == 0) -- afs_icl_ZapLog(tp); -- if (code) -- break; -- } -- ReleaseWriteLock(&afs_icl_lock); -- return code; --} -- - struct afs_icl_set *afs_icl_allSets = 0; - - int -@@ -1198,46 +1139,6 @@ - return 0; - } - --/* function to change event enabling information for a particular set */ --int --afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, int setValue) --{ -- char *tp; -- -- ObtainWriteLock(&setp->lock, 200); -- if (!ICL_EVENTOK(setp, eventID)) { -- ReleaseWriteLock(&setp->lock); -- return -1; -- } -- tp = &setp->eventFlags[ICL_EVENTBYTE(eventID)]; -- if (setValue) -- *tp |= ICL_EVENTMASK(eventID); -- else -- *tp &= ~(ICL_EVENTMASK(eventID)); -- ReleaseWriteLock(&setp->lock); -- return 0; --} -- --/* return indication of whether a particular event ID is enabled -- * for tracing. If *getValuep is set to 0, the event is disabled, -- * otherwise it is enabled. All events start out enabled by default. -- */ --int --afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, int *getValuep) --{ -- ObtainReadLock(&setp->lock); -- if (!ICL_EVENTOK(setp, eventID)) { -- ReleaseWriteLock(&setp->lock); -- return -1; -- } -- if (setp->eventFlags[ICL_EVENTBYTE(eventID)] & ICL_EVENTMASK(eventID)) -- *getValuep = 1; -- else -- *getValuep = 0; -- ReleaseReadLock(&setp->lock); -- return 0; --} -- - /* hold and release event sets */ - int - afs_icl_SetHold(struct afs_icl_set *setp) -@@ -1337,54 +1238,6 @@ - } - } - ReleaseReadLock(&setp->lock); -- return code; --} -- --int --afs_icl_EnumerateSets(int (*aproc) -- (char *name, char *arock, struct afs_icl_log * tp), -- char *arock) --{ -- struct afs_icl_set *tp, *np; -- afs_int32 code; -- -- code = 0; -- ObtainWriteLock(&afs_icl_lock, 205); -- for (tp = afs_icl_allSets; tp; tp = np) { -- tp->refCount++; /* hold this guy */ -- ReleaseWriteLock(&afs_icl_lock); -- code = (*aproc) (tp->name, arock, (struct afs_icl_log *)tp); -- ObtainWriteLock(&afs_icl_lock, 206); -- np = tp->nextp; /* tp may disappear next, but not np */ -- if (--tp->refCount == 0 && (tp->states & ICL_SETF_DELETED)) -- afs_icl_ZapSet(tp); -- if (code) -- break; -- } -- ReleaseWriteLock(&afs_icl_lock); -- return code; --} -- --int --afs_icl_AddLogToSet(struct afs_icl_set *setp, struct afs_icl_log *newlogp) --{ -- int i; -- int code = -1; -- -- ObtainWriteLock(&setp->lock, 207); -- for (i = 0; i < ICL_LOGSPERSET; i++) { -- if (!setp->logs[i]) { -- setp->logs[i] = newlogp; -- code = i; -- afs_icl_LogHold(newlogp); -- if (!(setp->states & ICL_SETF_FREED)) { -- /* bump up the number of sets using the log */ -- afs_icl_LogUse(newlogp); -- } -- break; -- } -- } -- ReleaseWriteLock(&setp->lock); - return code; - } - -diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h -index e9a655e..ed43635 100644 ---- a/src/afs/afs_prototypes.h -+++ b/src/afs/afs_prototypes.h -@@ -364,10 +364,7 @@ - extern int afs_icl_CopyOut(struct afs_icl_log *logp, - afs_int32 * bufferp, afs_int32 * bufSizep, - afs_uint32 * cookiep, afs_int32 * flagsp); --extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, -- afs_int32 * curSizep); - extern int afs_icl_LogHold(struct afs_icl_log *logp); --extern int afs_icl_LogHoldNL(struct afs_icl_log *logp); - extern int afs_icl_LogUse(struct afs_icl_log *logp); - extern int afs_icl_LogFreeUse(struct afs_icl_log *logp); - extern int afs_icl_LogSetSize(struct afs_icl_log *logp, -@@ -378,11 +375,6 @@ - extern int afs_icl_ZeroLog(struct afs_icl_log *logp); - extern int afs_icl_LogFree(struct afs_icl_log *logp); - extern struct afs_icl_log *afs_icl_FindLog(char *name); --extern int -- afs_icl_EnumerateLogs(int (*aproc) -- -- (char *name, char *arock, struct afs_icl_log * tp), -- char *arock); - extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, - struct afs_icl_log *fatalLogp, - struct afs_icl_set **outSetpp); -@@ -391,18 +383,7 @@ - struct afs_icl_log *fatalLogp, - afs_uint32 flags, - struct afs_icl_set **outSetpp); --extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, -- int setValue); --extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, -- int *getValuep); - extern int afs_icl_ZeroSet(struct afs_icl_set *setp); --extern int -- afs_icl_EnumerateSets(int (*aproc) -- -- (char *name, char *arock, struct afs_icl_log * tp), -- char *arock); --extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, -- struct afs_icl_log *newlogp); - extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); - extern int afs_icl_SetHold(struct afs_icl_set *setp); - extern int afs_icl_ZapSet(struct afs_icl_set *setp); diff --git a/073adec.diff b/073adec.diff deleted file mode 100644 index ebf2a52..0000000 --- a/073adec.diff +++ /dev/null @@ -1,126 +0,0 @@ -From 073adec17a9b7b55d3672b17f7faa4a122ce6e9d Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 08 Feb 2024 12:22:13 -0700 -Subject: [PATCH] afs: Remove SRXAFSCB_FetchData/StoreData - -Commit 'client-64bit-file-size-support-20011031' (971b18bc42) introduced -the RPC functions SRXAFSCB_FetchData() and SRXAFSCB_StoreData with RPC -numbers of 65536 and 65537 respectively. - -Commit 'more-64bit-file-size-support-20011031' (c5b1a3775f) removed the -references from afscbint.xg, but did not remove the actual code. The -65536 RPC number was reassigned to SRXAFSCB_GetCE64, and the commit: -'This is mostly a rewrite of src/afs/afs_cell.c, and associated changes' -(629d08065) assigned the 65537 RPC to SRXAFSCB_GetCellByNum. - -Remove the 2 functions since there are no references other than the -prototype in afs_prototypes.h. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -Reviewed-on: https://gerrit.openafs.org/15639 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 379f7fc51d411990189ec28e48c91edc87d76120) - -Change-Id: I1a3539227d22e6df89d78245634dfeb14943035a ---- - -diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c -index 22edefb..56e8cd2 100644 ---- a/src/afs/afs_callback.c -+++ b/src/afs/afs_callback.c -@@ -1473,71 +1473,6 @@ - } - - /*------------------------------------------------------------------------ -- * EXPORTED SRXAFSCB_FetchData -- * -- * Description: -- * Routine to do third party move from a remioserver to the original -- * issuer of an ArchiveData request. Presently supported only by the -- * "fs" command, not by the AFS client. -- * -- * Arguments: -- * rxcall: Ptr to Rx call on which this request came in. -- * Fid: pointer to AFSFid structure. -- * Fd: File descriptor inside fs command. -- * Position: Offset in the file. -- * Length: Data length to transfer. -- * TotalLength: Pointer to total file length field -- * -- * Returns: -- * 0 on success -- * -- * Environment: -- * Nothing interesting. -- * -- * Side Effects: -- *------------------------------------------------------------------------*/ --int --SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, afs_int32 Fd, -- afs_int64 Position, afs_int64 Length, -- afs_int64 * TotalLength) --{ -- return ENOSYS; --} -- --/*------------------------------------------------------------------------ -- * EXPORTED SRXAFSCB_StoreData -- * -- * Description: -- * Routine to do third party move from a remioserver to the original -- * issuer of a RetrieveData request. Presently supported only by the -- * "fs" command, not by the AFS client. -- * -- * Arguments: -- * rxcall: Ptr to Rx call on which this request came in. -- * Fid: pointer to AFSFid structure. -- * Fd: File descriptor inside fs command. -- * Position: Offset in the file. -- * Length: Data length to transfer. -- * TotalLength: Pointer to total file length field -- * -- * Returns: -- * 0 on success -- * -- * Environment: -- * Nothing interesting. -- * -- * Side Effects: -- * As advertised. -- *------------------------------------------------------------------------*/ --int --SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, afs_int32 Fd, -- afs_int64 Position, afs_int64 Length, -- afs_int64 * TotalLength) --{ -- return ENOSYS; --} -- --/*------------------------------------------------------------------------ - * EXPORTED SRXAFSCB_GetCellByNum - * - * Description: -diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h -index ed43635..208bd03 100644 ---- a/src/afs/afs_prototypes.h -+++ b/src/afs/afs_prototypes.h -@@ -103,13 +103,6 @@ - afs_uint32 * serverVersion, - afs_uint32 * configCount, - cacheConfig * config); --extern int SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, -- afs_int32 Fd, afs_int64 Position, -- afs_int64 Length, afs_int64 * TotalLength); --extern int SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, -- afs_int32 Fd, afs_int64 Position, -- afs_int64 Length, afs_int64 * TotalLength); -- - - /* afs_cbqueue.c */ - extern afs_rwlock_t afs_xcbhash; diff --git a/0d9f6cf.diff b/0d9f6cf.diff deleted file mode 100644 index a6b428c..0000000 --- a/0d9f6cf.diff +++ /dev/null @@ -1,134 +0,0 @@ -From 0d9f6cf121e49cfe1a2047b98d4c30b82a1898bd Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 15 Feb 2024 09:00:05 -0700 -Subject: [PATCH] afs: Move function prototypes into headers - -Several .c files contain external function prototypes, while the -implementing files do not have these prototypes. - -Move these prototypes into header files so that the prototypes are -available to both the caller and the implementation. - -Because the file holding the implementation does not have prototypes, -these functions are flagged when building against a Linux 6.8 kernel -(which sets the -Wmissing-declarations and -Wmissing-prototypes compiler -flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Add the prototypes for the following to afs_prototypes.h: - exporter_add - afs_syscall (AFS_LINUX_ENV) - BlobScan - -Remove the prototypes from the .c files where they are referenced. - -Reviewed-on: https://gerrit.openafs.org/15642 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 85781d7e83ae4501d8ab267bf55ef63f90f63101) - -Change-Id: I74333e99e08af88bebdcbff4767d79397acac358 ---- - -diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c -index fbdee29..3e79774 100644 ---- a/src/afs/LINUX/osi_ioctl.c -+++ b/src/afs/LINUX/osi_ioctl.c -@@ -34,9 +34,6 @@ - - extern struct proc_dir_entry *openafs_procfs; - --extern asmlinkage long --afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); -- - static int - afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long arg) -diff --git a/src/afs/LINUX/osi_syscall.c b/src/afs/LINUX/osi_syscall.c -index 5e9e519..dc78da8 100644 ---- a/src/afs/LINUX/osi_syscall.c -+++ b/src/afs/LINUX/osi_syscall.c -@@ -91,9 +91,6 @@ - - - /***** ALL PLATFORMS *****/ --extern asmlinkage long --afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); -- - static SYSCALLTYPE *afs_sys_call_table; - static SYSCALLTYPE afs_ni_syscall = 0; - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 7e85aa5..08fccb1 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -407,8 +407,6 @@ - } - #endif - --extern int BlobScan(struct dcache * afile, afs_int32 ablob, afs_int32 *ablobOut); -- - /* This is a complete rewrite of afs_readdir, since we can make use of - * filldir instead of afs_readdir_move. Note that changes to vcache/dcache - * handling and use of bulkstats will need to be reflected here as well. -diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c -index e1796c5..0fbe4e8 100644 ---- a/src/afs/VNOPS/afs_vnop_lookup.c -+++ b/src/afs/VNOPS/afs_vnop_lookup.c -@@ -667,8 +667,6 @@ - return 0; - } - --extern int BlobScan(struct dcache * afile, afs_int32 ablob, afs_int32 *ablobOut); -- - /* called with an unlocked directory and directory cookie. Areqp - * describes who is making the call. - * Scans the next N (about 30, typically) directory entries, and does -diff --git a/src/afs/afs_nfsclnt.c b/src/afs/afs_nfsclnt.c -index fbb5006..4c7806d 100644 ---- a/src/afs/afs_nfsclnt.c -+++ b/src/afs/afs_nfsclnt.c -@@ -160,7 +160,6 @@ - osi_Assert(ISAFS_GLOCK()); - #endif - if (!init_nfsexporter) { -- extern struct afs_exporter *exporter_add(); - - init_nfsexporter = 1; - LOCK_INIT(&afs_xnfspag, "afs_xnfspag"); -diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h -index 208bd03..9b3b1af 100644 ---- a/src/afs/afs_prototypes.h -+++ b/src/afs/afs_prototypes.h -@@ -331,6 +331,8 @@ - - /* afs_exporter.c */ - extern struct afs_exporter *root_exported; -+extern struct afs_exporter * exporter_add(afs_int32 size, struct exporterops *ops, -+ afs_int32 state, afs_int32 type, char *data); - extern struct afs_exporter *exporter_find(int type); - extern void shutdown_exporter(void); - -@@ -923,6 +925,10 @@ - extern int Afs_syscall(void); - #endif - -+#if defined(AFS_LINUX_ENV) -+extern asmlinkage long afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); -+#endif -+ - /* afs_tokens.c */ - struct ktc_tokenUnion; - struct ktc_setTokenData; -@@ -1292,6 +1298,7 @@ - - /* VNOPS/afs_vnop_readdir.c */ - extern int afs_rd_stash_i; -+extern int BlobScan(struct dcache * afile, afs_int32 ablob, int *ablobOut); - #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, - afs_ucred_t *acred, int *eofp); diff --git a/112fb94.diff b/112fb94.diff deleted file mode 100644 index 44e0348..0000000 --- a/112fb94.diff +++ /dev/null @@ -1,57 +0,0 @@ -From 112fb94a608a9a810cc9b43fdf762f15277d9eaa Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 08 Feb 2024 11:50:16 -0700 -Subject: [PATCH] afs: Declare init_hckernel_mutex() - -The function init_hckernel_mutex() (in rand.c) is flagged due to a -missing prototype when building against a Linux 6.8 kernel (which sets -the -Wmissing-declarations and -Wmissing-prototypes compiler flags as -default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Add a function prototype for init_hckernel_mutex() to afs_osi.h and -remove the prototype from afs_osi.c - -There are no functional changes with this commit. - -Reviewed-on: https://gerrit.openafs.org/15622 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit ccc2af429710104793fb4659b10697cceab182b3) - -Change-Id: Ic5eb4584a980657a01a1cb4411c0c1f03b1f3560 ---- - -diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c -index 6f54c63..e8f852e 100644 ---- a/src/afs/afs_osi.c -+++ b/src/afs/afs_osi.c -@@ -25,11 +25,6 @@ - * -- On HP called from afsc_link. - * -- On SGI called from afs_init. */ - --/* No hckernel-specific header for this prototype. */ --#ifndef UKERNEL --extern void init_hckernel_mutex(void); --#endif -- - afs_lock_t afs_ftf; /* flush text lock */ - - #ifdef AFS_SGI_ENV -diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h -index 79c44a9..e3f0e0c 100644 ---- a/src/afs/afs_osi.h -+++ b/src/afs/afs_osi.h -@@ -458,4 +458,9 @@ - # define osi_ShouldDeferRemunlink(avc) 0 - #endif - -+/* No hckernel-specific header for this prototype. */ -+#ifndef UKERNEL -+extern void init_hckernel_mutex(void); -+#endif -+ - #endif /* _AFS_OSI_ */ diff --git a/1e1bf8e.diff b/1e1bf8e.diff deleted file mode 100644 index b1b2d1d..0000000 --- a/1e1bf8e.diff +++ /dev/null @@ -1,80 +0,0 @@ -From 1e1bf8ebcd3c18b05326cd7b26a471db804aeaeb Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Tue, 24 Jul 2018 23:22:01 -0500 -Subject: [PATCH] LINUX: Minor osi_vfsop.c cleanup - -- Fix the formatting on afs_mount/afs_get_sb definitions - -- Declare a couple of functions static that are not referenced outside - of this file - -Reviewed-on: https://gerrit.openafs.org/13282 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit fa15fbda0aa0c3810695d9b867d3258b60e76b7c) - -Change-Id: I8a32475bf2ddb9c7206aef679947021925697c5a -Reviewed-on: https://gerrit.openafs.org/15680 -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Tested-by: Benjamin Kaduk -Reviewed-by: Benjamin Kaduk ---- - -diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c -index b85ab3f..bb49a5c 100644 ---- a/src/afs/LINUX/osi_vfsops.c -+++ b/src/afs/LINUX/osi_vfsops.c -@@ -40,7 +40,7 @@ - - /* Forward declarations */ - static int afs_root(struct super_block *afsp); --int afs_fill_super(struct super_block *sb, void *data, int silent); -+static int afs_fill_super(struct super_block *sb, void *data, int silent); - - - /* -@@ -52,19 +52,22 @@ - #if defined(STRUCT_FILE_SYSTEM_TYPE_HAS_MOUNT) - static struct dentry * - afs_mount(struct file_system_type *fs_type, int flags, -- const char *dev_name, void *data) { -+ const char *dev_name, void *data) -+{ - return mount_nodev(fs_type, flags, data, afs_fill_super); - } - #elif defined(GET_SB_HAS_STRUCT_VFSMOUNT) - static int - afs_get_sb(struct file_system_type *fs_type, int flags, -- const char *dev_name, void *data, struct vfsmount *mnt) { -+ const char *dev_name, void *data, struct vfsmount *mnt) -+{ - return get_sb_nodev(fs_type, flags, data, afs_fill_super, mnt); - } - #else - static struct super_block * - afs_get_sb(struct file_system_type *fs_type, int flags, -- const char *dev_name, void *data) { -+ const char *dev_name, void *data) -+{ - return get_sb_nodev(fs_type, flags, data, afs_fill_super); - } - #endif -@@ -83,7 +86,7 @@ - - struct backing_dev_info *afs_backing_dev_info; - --int -+static int - afs_fill_super(struct super_block *sb, void *data, int silent) - { - int code = 0; -@@ -372,7 +375,7 @@ - * statp is in user space, so we need to cobble together a statfs, then - * copy it. - */ --int -+static int - #if defined(STATFS_TAKES_DENTRY) - afs_statfs(struct dentry *dentry, struct kstatfs *statp) - #else diff --git a/2056ce8.diff b/2056ce8.diff deleted file mode 100644 index 69080a5..0000000 --- a/2056ce8.diff +++ /dev/null @@ -1,71 +0,0 @@ -From 2056ce8ae0d617d663e6181573c982994a1836db Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 15:30:23 -0700 -Subject: [PATCH] rx: Add static attribute to internal functions - -When building against a Linux 6.8 kernel, functions that are missing -prototypes or declarations are flagged. - -We can add the static attribute to functions that are not referenced -outside of the file that implements them to avoid having these functions -flagged by the compiler. - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -There are no functional changes in this commit. - -Reviewed-on: https://gerrit.openafs.org/15626 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 55adceba2d561ec4e89235de329782a68e603a11) - -Change-Id: I1b2a6e1c07bd4b75b7b83e177f17865eb903e488 ---- - -diff --git a/src/rx/rx.c b/src/rx/rx.c -index aaec609..d6c52c3 100644 ---- a/src/rx/rx.c -+++ b/src/rx/rx.c -@@ -6513,7 +6513,7 @@ - return -1; - } - --void -+static void - rxi_NatKeepAliveEvent(struct rxevent *event, void *arg1, - void *dummy, int dummy2) - { -@@ -6615,7 +6615,7 @@ - * declared dead; if nothing has been sent for a while, we send a - * keep-alive packet (if we're actually trying to keep the call alive) - */ --void -+static void - rxi_KeepAliveEvent(struct rxevent *event, void *arg1, void *dummy, - int dummy2) - { -@@ -6656,7 +6656,7 @@ - } - - /* Does what's on the nameplate. */ --void -+static void - rxi_GrowMTUEvent(struct rxevent *event, void *arg1, void *dummy, int dummy2) - { - struct rx_call *call = arg1; -@@ -8266,7 +8266,7 @@ - static int rxi_monitor_peerStats = 0; - - --void -+static void - rxi_ClearRPCOpStat(rx_function_entry_v1_p rpc_stat) - { - rpc_stat->invocations = 0; diff --git a/5312d06.diff b/5312d06.diff deleted file mode 100644 index ede79c5..0000000 --- a/5312d06.diff +++ /dev/null @@ -1,49 +0,0 @@ -From 5312d069bc57d200ff65bf968c9bdff0f38fe653 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 09:13:27 -0700 -Subject: [PATCH] afs: Remove afs_osi_UnmaskUserLoop() - -The function afs_osi_UnmaskUserLoop() is not referenced anywhere within -the source tree. - -Remove the function afs_osi_UnmaskUserLoop(). - -The commit: 'darwin-afsdb-handler-signal-mask-20040728' (9728182c00) -introduced the function, but afs_osi_UnmaskUserLoop() has never been -referenced or defined within a header file. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15617 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 587cfce29cb4e014e5b8d96e0433c5e7d2c6729a) - -Change-Id: I0fe91a41e8f00773cb1d5976a8c3e39e4415f6bc ---- - -diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c -index 18732d1..6f54c63 100644 ---- a/src/afs/afs_osi.c -+++ b/src/afs/afs_osi.c -@@ -152,14 +152,6 @@ - #endif - } - --void --afs_osi_UnmaskUserLoop(void) --{ --#ifdef AFS_DARWIN_ENV -- afs_osi_fullSigRestore(); --#endif --} -- - /* register rxk listener proc info */ - void - afs_osi_RxkRegister(void) diff --git a/67e48c8.diff b/67e48c8.diff deleted file mode 100644 index 67dddb7..0000000 --- a/67e48c8.diff +++ /dev/null @@ -1,43 +0,0 @@ -From 67e48c84b9971e6b865274408080fbf5ec7ba1ac Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 15:52:57 -0700 -Subject: [PATCH] afs: Add declaration for RXAFS_ResidencyCmd() - -The function RXAFS_ResidencyCmd() is 'manually' defined within the -afsint.xg, so a prototype for the function is not defined. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Add a prototype for RXAFS_ResidencyCmd - -There are no functional changes with this commit - -The function RXAFS_ResidencyCmd() was introduced with commit: -'rename-residency-from-mrafs-to-osd-20090427' (8655541d1e) - -Reviewed-on: https://gerrit.openafs.org/15619 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 1d6cfbc5f627abf3808aae97afb72662301483b5) - -Change-Id: I42d0868b83e119b0c3348a3af8aaf5961c040bb2 ---- - -diff --git a/src/fsint/afsint.xg b/src/fsint/afsint.xg -index 9fe4980..cdcd07a 100644 ---- a/src/fsint/afsint.xg -+++ b/src/fsint/afsint.xg -@@ -664,6 +664,7 @@ - ) = 220; - - #ifdef RPC_CLIENT -+%int RXAFS_ResidencyCmd(struct rx_connection *z_conn, AFSFid *Fid, struct FsCmdInputs *Inputs, struct FsCmdOutputs *Outputs); - %int RXAFS_ResidencyCmd(struct rx_connection *z_conn, AFSFid *Fid, struct FsCmdInputs *Inputs, struct FsCmdOutputs *Outputs) - %{ - % return RXAFS_FsCmd(z_conn, Fid, Inputs, Outputs); diff --git a/6b20756.diff b/6b20756.diff deleted file mode 100644 index 5f248bf..0000000 --- a/6b20756.diff +++ /dev/null @@ -1,75 +0,0 @@ -From 6b207567af7244a4fc6c314fdc815aa14c4eae09 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 09 Feb 2024 09:01:33 -0700 -Subject: [PATCH] afs: fix 'ops' variable may be used uninitialized - -When the function rxfs_storeInit() has the static attribute, gcc flags -the variable 'ops' as possibly uninitialized. - -In function 'afs_CacheStoreDCaches', - inlined from 'afs_CacheStoreVCache' at - .../src/afs/afs_fetchstore.c:630:14: - .../afs/afs_fetchstore.c:535:17: error: 'ops' may be used - uninitialized [-Werror=maybe-uninitialized] - 535 | code = (*ops->destroy)(&rock, code); - | ~^~~~~~~~~~~~~~ - ...src/afs/afs_fetchstore.c: In function 'afs_CacheStoreVCache': - ...src/afs/afs_fetchstore.c:567:22: note: 'ops' was declared here - 567 | struct storeOps *ops; - | ^~~ - cc1: all warnings being treated as errors - -This is a false positive report by the gcc compiler. - -The function rxfs_storeInit() returns a 0 only when it has successfully -assigned a value to the ops variable, and afs_CacheStoreDcaches() is -only called if the return value from rxfs_storeInit() is 0. - -The ops variable is only used within a block that is within a for loop, -which could leave a stray value if the variable isn't initialized within -that loop. - -Assigning a NULL to ops is sufficient to avoid the compiler error, and -relocating the declaration of the ops variable into the block where it -is actually used ensures that it's always initialized before its use -within the loop. - -Clean up whitespace in the statement that follows the new location for -the ops variable. - -Note, this commit is being added before a commit that adds the static -attribute to the rxfs_storeInit() function which also "fixes" the -compiler error (see: afs: Add static attribute to internal functions). - -Reviewed-on: https://gerrit.openafs.org/15630 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 36e4c02ff27b9d66755b9544778896b9b1e5c391) - -Change-Id: I9d8a07e576c6bf889f8f182c6fc0d34dc997c004 ---- - -diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c -index 7b35b8f..63b370d 100644 ---- a/src/afs/afs_fetchstore.c -+++ b/src/afs/afs_fetchstore.c -@@ -564,7 +564,6 @@ - afs_hyper_t *anewDV, afs_size_t *amaxStoredLength) - { - afs_int32 code = 0; -- struct storeOps *ops; - void * rock = NULL; - unsigned int i, j; - -@@ -619,7 +618,8 @@ - ICL_HANDLE_OFFSET(length)); - - do { -- tc = afs_Conn(&avc->f.fid, areq, 0, &rxconn); -+ struct storeOps *ops = NULL; -+ tc = afs_Conn(&avc->f.fid, areq, 0, &rxconn); - - #ifdef AFS_64BIT_CLIENT - restart: diff --git a/743d72f.diff b/743d72f.diff deleted file mode 100644 index cc50e6a..0000000 --- a/743d72f.diff +++ /dev/null @@ -1,48 +0,0 @@ -From 743d72f6b6aba44599099c7cbc879435f9005e3a Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Wed, 03 Apr 2024 11:36:54 -0600 -Subject: [PATCH] Linux: Define afs_thread_wrapper() as static - -When building against a Linux 6.8 kernel, functions that are missing -prototypes or declarations are flagged. - -We can add the static attribute to functions that are not referenced -outside of the file that implements them to avoid having these functions -flagged by the compiler. - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -This is an openafs-1.8.x specific commit. - -The function afs_thread_wrapper() in LINUX/osi_misc.c on the master -branch was changed to a static function with commit: - 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) -However this is a larger change than needed to fix the build problem and -the commit could have a significant impact for 1.8.x since it is -changing rx locking. To avoid introducing such a change, just change -the afs_thread_wrapper() to static as a 1.8.x specific commit. - -There are no functional changes in this commit. - -Change-Id: I4edc61e6a4989c16ccf41b935e205dbf209bf2a5 ---- - -diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c -index aa5d5fc..27f73cd 100644 ---- a/src/afs/LINUX/osi_misc.c -+++ b/src/afs/LINUX/osi_misc.c -@@ -155,7 +155,8 @@ - - - /* This could use some work, and support on more platforms. */ --int afs_thread_wrapper(void *rock) -+static int -+afs_thread_wrapper(void *rock) - { - void (*proc)(void) = rock; - __module_get(THIS_MODULE); diff --git a/7cae97b.diff b/7cae97b.diff deleted file mode 100644 index e4e8251..0000000 --- a/7cae97b.diff +++ /dev/null @@ -1,66 +0,0 @@ -From 7cae97b86fbcc4a53967927d6c2cae9dcbc6ac4d Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 12 Feb 2024 12:31:30 -0700 -Subject: [PATCH] Linux 6.8: use hlist iteration for dentry children - -Linux 6.8 commit 'dentry: switch the lists of children to hlist' -(da549bdd15) replaces the dentry lists d_subdirs/d_child with the hlist -d_children/d_sib. - -Add an autoconf test for a d_children member in the dentry structure. - -Define a macro that uses the applicable Linux function for iterating -over a dentry's children. - -Reviewed-on: https://gerrit.openafs.org/15632 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 8e0bbe6a07523dd2e7efb3c9d1b4ad9e19fc9bb7) - -Change-Id: Ief4c334c4ef3e54822e068dcdf654541e86b9176 ---- - -diff --git a/src/afs/LINUX/osi_vcache.c b/src/afs/LINUX/osi_vcache.c -index 897fd37..43644f4 100644 ---- a/src/afs/LINUX/osi_vcache.c -+++ b/src/afs/LINUX/osi_vcache.c -@@ -15,6 +15,14 @@ - - #include "osi_compat.h" - -+#if defined(STRUCT_DENTRY_HAS_D_CHILDREN) -+# define afs_for_each_child(child, parent) \ -+ hlist_for_each_entry((child), &(parent)->d_children, d_sib) -+#else -+# define afs_for_each_child(child, parent) \ -+ list_for_each_entry((child), &(parent)->d_subdirs, d_child) -+#endif -+ - static void - TryEvictDirDentries(struct inode *inode) - { -@@ -312,7 +320,7 @@ - * because 'dp' is an ancestor of 'child'. - */ - struct dentry *child; -- list_for_each_entry(child, &dp->d_subdirs, d_child) { -+ afs_for_each_child(child, dp) { - spin_lock(&child->d_lock); - child->d_time = 0; - spin_unlock(&child->d_lock); -diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4 -index 2824ec1..5cd346f 100644 ---- a/src/cf/linux-kernel-struct.m4 -+++ b/src/cf/linux-kernel-struct.m4 -@@ -17,6 +17,9 @@ - dnl linux 2.6.16 moved dentry->d_child to dentry->d_u.d_child - dnl linux 3.19 moved it back to dentry->d_child - AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_child], [dcache.h]) -+dnl linux 6.8 uses hlist for dentry children and renamed -+dnl d_subdirs/d_child to d_childern/d_sib -+AC_CHECK_LINUX_STRUCT([dentry], [d_children], [dcache.h]) - AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h]) - AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h]) diff --git a/81b910a.diff b/81b910a.diff deleted file mode 100644 index c46a241..0000000 --- a/81b910a.diff +++ /dev/null @@ -1,81 +0,0 @@ -From 81b910ab4a0ef0d0b6cd3a1a636fcbcd050c0245 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Tue, 05 Mar 2024 08:37:47 -0700 -Subject: [PATCH] Linux 6.8: Remove ctl_table sentinels - -The Linux 6.8 commit 'sysctl: Remove the now superfluous sentinel -elements from ctl_table array' (c8a65501d3) was a clean up commit -that removed the sentinel entry in the ctl_table array (e.g. the -"null" entry at the end of the table). - -As of Linux 6.8, including the sentinel entry (.procname =) in the -ctl_table is unnecessary, but doesn't yet break anything. But it is -likely that including the sentinel will start to cause runtime errors in -future Linux versions very soon, so avoid the sentinel when we can, to -avoid possible problems in the future. - -Define a new macro that can be used as the last entry of a ctl_table -that will either add a "null" entry, or nothing. - -There is not a specific build test we can use within configure, so we -must explicitly test the Linux version to decide if we need to use a -sentinel or not when defining the macro. We are selecting 6.8 to match -the version where the Linux kernel is removing the sentinels from the in -kernel filesystems. - -Note: See the Linux merge commits 'Merge tag 'sysctl-6.8-rc1' of -git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux' (a05aea98d4) -for more details behind the staged removal of the sentinels in the -ctl_table structures and the potential future change for removing the -actual check for the sentinel within the Linux kernel. - -Reviewed-on: https://gerrit.openafs.org/15645 -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 35c8c1bf0b1cb48178f676ba5bcf16ad59c5a33b) - -Change-Id: I34cb7586003e10a6c7438d7205123d57af30585e ---- - -diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c -index a0a0398..c1116fc 100644 ---- a/src/afs/LINUX/osi_sysctl.c -+++ b/src/afs/LINUX/osi_sysctl.c -@@ -54,6 +54,14 @@ - # define AFS_SYSCTL_INT(num, perms, var) \ - AFS_SYSCTL_INT2(num, perms, #var, var) - -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,8,0) -+/* end of list sentinel not needed */ -+# define AFS_SYSCTL_SENTINEL -+# else -+/* NULL entry to mark the end of the list */ -+# define AFS_SYSCTL_SENTINEL { .procname = NULL } -+# endif -+ - static struct ctl_table_header *afs_sysctl = NULL; - - static struct ctl_table afs_sysctl_table[] = { -@@ -75,9 +83,7 @@ - AFS_SYSCTL_INT( 13, 0644, afs_cacheBlocks), - AFS_SYSCTL_INT2(14, 0644, "md5inum", afs_md5inum), - -- { -- .procname = 0 -- } -+ AFS_SYSCTL_SENTINEL - }; - # if !defined(HAVE_LINUX_REGISTER_SYSCTL) - static struct ctl_table fs_sysctl_table[] = { -@@ -87,9 +93,7 @@ - .mode = 0555, - .child = afs_sysctl_table - }, -- { -- .procname = 0 -- } -+ AFS_SYSCTL_SENTINEL - }; - # endif - int diff --git a/87ab04a.diff b/87ab04a.diff deleted file mode 100644 index a3d687d..0000000 --- a/87ab04a.diff +++ /dev/null @@ -1,112 +0,0 @@ -From 87ab04acc921794f49084548cf5fc94f6f37f10e Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 12 Feb 2024 08:25:47 -0700 -Subject: [PATCH] afs: Add includes to pick up function prototypes - -The functions defined in LINUX/osi_crypto.c, osi_pagecopy.c, -osi_probe.c, and osi_syscall.c have function prototypes defined in -existing header files, however either due to missing includes or -preprocessor conditionals that skip the includes, these function -prototypes are not being pulled in. - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Add the necessary includes to osi_crypto.c and osi_pagecopy.c and -re-arrange the includes in osi_probe.c and osi_syscall.c to ensure that -the function prototypes are present when building the Linux kernel -module. - -Reviewed-on: https://gerrit.openafs.org/15641 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 3683f15278e34e13d7272928eaf666f0acc4e1e9) - -Change-Id: Iac704fc98d0d685358224049f383d68aa7a105f8 ---- - -diff --git a/src/afs/LINUX/osi_crypto.c b/src/afs/LINUX/osi_crypto.c -index ead1916..7f8435c 100644 ---- a/src/afs/LINUX/osi_crypto.c -+++ b/src/afs/LINUX/osi_crypto.c -@@ -25,6 +25,9 @@ - #include - #include "afs/param.h" - -+#include "afs/sysincludes.h" -+#include "afsincludes.h" -+ - #include - - int -diff --git a/src/afs/LINUX/osi_pagecopy.c b/src/afs/LINUX/osi_pagecopy.c -index 7142a1b..42f5e38 100644 ---- a/src/afs/LINUX/osi_pagecopy.c -+++ b/src/afs/LINUX/osi_pagecopy.c -@@ -61,6 +61,7 @@ - #include - #include - #include -+#include "osi_pagecopy.h" - - static DECLARE_WAIT_QUEUE_HEAD (afs_pagecopy_wq); - static spinlock_t afs_pagecopy_lock; -diff --git a/src/afs/LINUX/osi_probe.c b/src/afs/LINUX/osi_probe.c -index 9b06fa7..be42ecf 100644 ---- a/src/afs/LINUX/osi_probe.c -+++ b/src/afs/LINUX/osi_probe.c -@@ -48,9 +48,13 @@ - #ifdef OSI_PROBE_STANDALONE - # define OSI_PROBE_DEBUG - #endif -+ - #ifndef OSI_PROBE_STANDALONE - # include - # include "afs/param.h" -+ -+# include "afs/sysincludes.h" -+# include "afsincludes.h" - #endif - - #include -@@ -60,10 +64,6 @@ - #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,26) - /* Slightly kludgy, but too bad */ - #define scsi_command_size scsi_command_size_tbl --#endif --#ifndef OSI_PROBE_STANDALONE --# include "afs/sysincludes.h" --# include "afsincludes.h" - #endif - #include - #ifdef HAVE_LINUX_CONFIG_H -diff --git a/src/afs/LINUX/osi_syscall.c b/src/afs/LINUX/osi_syscall.c -index 836491c..5e9e519 100644 ---- a/src/afs/LINUX/osi_syscall.c -+++ b/src/afs/LINUX/osi_syscall.c -@@ -14,6 +14,10 @@ - #include - #include "afs/param.h" - -+#include /* early to avoid printf->printk mapping */ -+#include "afs/sysincludes.h" -+#include "afsincludes.h" -+ - #ifdef LINUX_KEYRING_SUPPORT - /* The syscall probing stuff is unnecessary (and is never called) if we have - * keyrings support; we rely on keyrings instead of group ids to track PAGs. -@@ -31,9 +35,6 @@ - - #else /* LINUX_KEYRING_SUPPORT */ - --#include /* early to avoid printf->printk mapping */ --#include "afs/sysincludes.h" --#include "afsincludes.h" - #include /* For syscall numbers. */ - #include - diff --git a/9f052c1.diff b/9f052c1.diff deleted file mode 100644 index 1a45dba..0000000 --- a/9f052c1.diff +++ /dev/null @@ -1,52 +0,0 @@ -From 9f052c137d1184a783c8ac3182c3544b275484f5 Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Sat, 09 Jan 2021 12:50:03 -0600 -Subject: [PATCH] afs: Remove SRXAFSCB_GetDE - -The GetDE RPC has been commented out from afscbint.xg effectively -since it was introduced, but we still define the SRXAFSCB_GetDE server -stub for it. - -This is useless, but also potentially dangerous, since the stub -routine just returns success, without populating the output arguments. -One of the output arguments is a string, and so if this RPC is -actually run, the rxgen-generated server code will try to xdr_string() -that string. Since we never set it to anything, this will result in -xdr_string trying to dereference a NULL pointer. - -None of this actually happens currently, since the GetDE RPC is -commented out. But to avoid the above situation if it's ever -uncommented, remove the useless SRXAFSCB_GetDE function. - -Reviewed-on: https://gerrit.openafs.org/14488 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 444a971edc47c34efbefed6e332ee6e843ae072b) - -Change-Id: I83846d79ce3143571923cb6023075620091f093d -Reviewed-on: https://gerrit.openafs.org/15681 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Benjamin Kaduk ---- - -diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c -index e7d8ab5..22edefb 100644 ---- a/src/afs/afs_callback.c -+++ b/src/afs/afs_callback.c -@@ -1636,14 +1636,3 @@ - - return code; - } -- -- --int --SRXAFSCB_GetDE(struct rx_call *a_call, afs_int32 a_index, afs_int32 *addr, -- afs_int32 *inode, afs_int32 *flags, afs_int32 *time, -- char ** fileName) --{ /*SRXAFSCB_GetDE*/ -- int code = 0; /*Return code*/ -- return(code); -- --} /*SRXAFSCB_GetDE*/ diff --git a/ChangeLog b/ChangeLog index 20fc239..3f98394 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,2086 +1,1419 @@ -commit 1a36b929773ea369a5b14a48759949fe6acbe3b7 -Author: Mark Vitale -Date: Thu Mar 7 12:48:22 2024 -0500 +commit d8eab602c3279378f344cdde2f14fe05707ac71d +Author: Michael Meffie +Date: Thu May 30 16:56:18 2024 -0400 - Make OpenAFS 1.8.11 + Make OpenAFS 1.8.12pre1 - Update version strings for the 1.8.11 release. - Add final updates to NEWS. + Update version strings for the first 1.8.12 prerelease. - Change-Id: Id66da29a5001f18e8816bcb214f70544474bfaef - Reviewed-on: https://gerrit.openafs.org/15671 - Tested-by: Mark Vitale - Reviewed-by: Michael Meffie + Change-Id: I0a314eb7d96183c40c995b9415aaf1c679defee5 + Reviewed-on: https://gerrit.openafs.org/15759 + Tested-by: BuildBot Reviewed-by: Benjamin Kaduk -commit 33fabe9e0b3c8b608bff82f3fda9ba2f8b3775a7 -Author: Andrew Deason -Date: Tue Nov 13 11:09:52 2018 -0600 +commit 1ccee780e109c06917612390c54978bb13fce767 +Author: Michael Meffie +Date: Thu May 23 20:20:11 2024 -0400 - roken: Use srcdir for roken-post.h + Update NEWS for OpenAFS 1.8.12pre1 - roken-post.h is a source file, not a generated file in the objdir. - Specify $(srcdir) so we can work with objdir builds. + Add news items for the upcoming 1.8.12 pre-release. - Reviewed-on: https://gerrit.openafs.org/13387 + Change-Id: Iab9167e93526f7f5b83a7bc47341a76c8ad54c52 + Reviewed-on: https://gerrit.openafs.org/15753 + Reviewed-by: Cheyenne Wills Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + +commit 308ee38a30549afd38ad1f83bb537fd6b43513a8 +Author: Mark Vitale +Date: Thu May 30 12:54:57 2024 -0400 + + afs: Correct comment typo in DNew() + + Commit aed4a0c4b91c5ce185547e83bfff443f3d3831f9 "afs: avoid panic in + DNew when afs_WriteDCache fails" introduced Doxygen comments for DNew(). + However, due to a cut-and-paste error, the name of the second parameter + is incorrect. + + Correct the Doxygen comments. + + No functional change is incurred by this commit; it is just + documentation. + + Reviewed-on: https://gerrit.openafs.org/15757 Reviewed-by: Michael Meffie + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit abb15d449ca6792d9145c13c01d573ce32545916) + + Change-Id: Ie540b13a040ac47bbaa2f753a9bbd21c046d4b49 + Reviewed-on: https://gerrit.openafs.org/15758 + Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 345a739b7bb6c9c142a2b0fe584fed6c44d6c655) + +commit 4022359253fb6a645b01f99b820b7331c019115a +Author: Mark Vitale +Date: Fri Jul 19 14:41:55 2019 -0400 + + afs: avoid panic in DNew when afs_WriteDCache fails - Change-Id: Ie02f0aaf373bebe74b0eaf8969b712c146a462f8 - Reviewed-on: https://gerrit.openafs.org/15638 + afs_WriteDCache may fail for an IO error, or if interrupted (EINTR). + Unfortunately, DNew will panic in this case, crashing the entire + machine. + + In order to avoid an outage in this case, don't panic. Instead, reflect + the error back to the caller of DNew. + + While here, add Doxygen comments to DNew. + + Reviewed-on: https://gerrit.openafs.org/13804 + Reviewed-by: Benjamin Kaduk Tested-by: BuildBot + (cherry picked from commit aed4a0c4b91c5ce185547e83bfff443f3d3831f9) + + Change-Id: I634ce4b3c7c8b6029c5236b51f6ab8c0a5463ce9 + Reviewed-on: https://gerrit.openafs.org/15744 + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Michael Meffie + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + +commit 837e6a4ad28588f22b4e9ace9bfa4bb4f412485c +Author: Mark Vitale +Date: Wed Feb 5 17:49:03 2020 -0500 + + dir: check DNew return code + + Commit 0284e65f97861e888d95576f22a93cd681813c39 'dir: Explicitly state + buffer locations for data' changed DNew and DRead to return a return + code. However, the callers of DNew were not modified to check the new + return code. (This commit applied only to the implementations dealing + with AFS directories, in afs/afs_buffer.c and dir/dir.c. The ubik + implmentations of DNew and DRead, dealing with ubik databases, were not + modified.) + + Modify all (non-ubik) callers of DNew to check the return code. In + addition, modify code as needed so return codes are properly propagated + to the callers. + + While here, add Doxygen comments for AddPage and FindBlobs. + + Reviewed-on: https://gerrit.openafs.org/13801 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 6bd94fe29d1aa6ce61ba02e681defea79770ccdd) + + Change-Id: I8d036748fa18365b843a69f2f0710eab31aa723d + Reviewed-on: https://gerrit.openafs.org/15743 + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Michael Meffie + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + +commit db39f77f0ec931816ba5cc265e87954173b435e2 +Author: Mark Vitale +Date: Sun Mar 3 20:20:58 2019 -0500 + + dir: check afs_dir_Create return code in afs_dir_MakeDir + + afs_dir_MakeDir() ignores the return code from afs_dir_Create() for the + '.' and '..' ("dot" and "dotdot") directories. This has been the case + from the earliest implementation (MakeDir() calling Create()) in the + original IBM import. + + Instead, check the return codes to prevent the possibility of creating + malformed directories. + + Reviewed-on: https://gerrit.openafs.org/13800 + Reviewed-by: Benjamin Kaduk + Reviewed-by: Mark Vitale + Tested-by: BuildBot + (cherry picked from commit dcce956df4fc8d368962cb36d8b3c801be69a85a) + + Change-Id: Ib7066ab307fe6ab0e78407566d0fd32bd6827859 + Reviewed-on: https://gerrit.openafs.org/15742 + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Michael Meffie + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + +commit 3ff310182926ab783f0f07fa8667d1ebaabbc5de +Author: Andrew Deason +Date: Thu Apr 25 15:58:49 2024 -0500 + + afs: Reintroduce and use DFlushDCache() + + This reverts commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39 (afs: + Remove DFlushDCache()). This also re-adds the caller of DFlushDCache() + removed by commit 4045f3d5350955de91e019b09ad2ed7941f6dadb + (disconnected-shadow-directory-fixes-20090121), and the prototype + removed by commit 5ad1e6cb904b953fbb04603f3ce1466dcc38cd48 (dir: + Prototype and function name cleanup). + + The removal of the DFlushDCache() call in commit 4045f3d535 seems like + a mistake. If the directory in question has dirty pages in memory, we + need to flush those to the cache before making a copy of the + directory's data, because we read the existing dir's data from the + cache. If we don't flush, afs_MakeShadowDir() might make a copy of the + dcache that is missing updates to the directory blob. + + Reviewed-on: https://gerrit.openafs.org/15740 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + Reviewed-by: Cheyenne Wills + (cherry picked from commit 799d789fbaefc8c4dbcb803b885deb35f4947d26) + + Change-Id: I3bffab4bae4214503591ac102aba59c7072b39af + Reviewed-on: https://gerrit.openafs.org/15741 + Tested-by: BuildBot + Reviewed-by: Michael Meffie + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + +commit de7bc4890e4368b88f20e15a7d795fc1c54cef29 +Author: Cheyenne Wills +Date: Mon Apr 15 08:22:37 2024 -0600 + + Linux-6.9: file_lock mbrs moved to file_lock_core + + In the Linux 6.9 commit: + 'filelock: split common fields into struct file_lock_core' (a69ce85ec9) + several fields were relocated into a new structure, file_lock_core, + which was added as a member the file_lock structure. The names where + changed (fl_x to flc_x). + + Add a configure test to determine if the new members (flc_type, flc_pid, + and flc_flags) are available as part of the file_lock_core structure. + + Add static inline getter/setter routines to handle accessing the + flc_type or flc_pid members in the file_lock_core structure, or the + fl_type, fl_pid members in the file_lock structure as appropriate. Add + static inline function to clear FL_SLEEP in the flc_flag in the + file_lock_core structure or the fl_flag in the file_lock structure as + appropriate. + + Minor surrounding white space cleanup. + + Reviewed-on: https://gerrit.openafs.org/15708 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 9937cce3f35f4e3aad0802189457bf16b84d7ab4) + + Change-Id: I51343e1c2e360b68eabe2cc4069c25948b6c0729 + Reviewed-on: https://gerrit.openafs.org/15739 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 95e67f9c3e6e605da07081b9521ed2eaa2add648 +Author: Cheyenne Wills +Date: Fri Mar 15 16:24:05 2024 -0600 + + tests: rx/perf wait for server init before client + + The rx/perf test can occasionally fail due to the rxperf server not + being fully initialized before the client started. This can cause test + errors, even without changes to the rx code. + + C_TAP_VERBOSE=1 make check TESTS="rx/perf" + ... + rx/perf + + 1..4 + ok 1 - Started rxperf server + not ok 2 - single threaded client ran successfully + RPC: threads 30, times 1, write bytes 1048576, read bytes... + ok 3 - multi threaded client ran succesfully + ok 4 - Server exited succesfully + FAILED 2 (exit status 1) + + Add a routine that waits for the rx_perf server to become available. + Loop several times trying the connection via the rx_perf client, with + a short delay between retries. If the connection cannot be established, + fail the test. + + Clean up trailing whitespace on a couple of lines. + + Note: This failure was observed in an OpenAFS buildbot worker that + included a make tests, and which would occasionally fail when there was + no rx related code changes. The intermittent failure could be duplicated + on a slower virtual test system, but would not fail on a faster system. + + Thanks to mmeffie@sinenomine.net for the 'wait_for_server' contribution. + + Reviewed-on: https://gerrit.openafs.org/15676 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + Reviewed-by: Andrew Deason + (cherry picked from commit 6ace773fdcff0486663a0cc4381d7b6ce2352c04) + + Change-Id: I75c6cd1e4e724d4803b62e2f74e5307cb8fcb14d + Reviewed-on: https://gerrit.openafs.org/15736 + Reviewed-by: Michael Meffie + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + +commit 4fc27548be88947ef58e2a3a3654a08ec6c334d9 +Author: Michael Meffie +Date: Tue Apr 9 10:57:26 2024 -0400 + + rxperf: Add -o option to rxperf client + + Add the -o (output) option to the rxperf client specify the output file. + + If not specified, the output is written to stdout, as before. + + Reviewed-on: https://gerrit.openafs.org/15731 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit e6bc50524e1bde199f6643d9784fe331577bee90) + + Change-Id: I94a2f43c70f9cb5236c3ab4c5d2de66906eb68b3 + Reviewed-on: https://gerrit.openafs.org/15735 + Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk -commit 47c4fb427a02809a73a8f7024e49ff5f58d2be06 -Author: Stephan Wiesand -Date: Thu Aug 3 17:35:02 2023 +0200 - - Make OpenAFS 1.8.11pre1 - - Update version strings for the first 1.8.11 prerelease. - - Change-Id: I161717ae5670a3261ebbc1fe8fe9c13c18868e74 - Reviewed-on: https://gerrit.openafs.org/15527 - Reviewed-by: Mark Vitale - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Benjamin Kaduk - -commit 85d4e2dce876d4bf8b7ebbdafb8b5d357badca2f -Author: Michael Meffie -Date: Mon Aug 21 13:23:10 2023 -0400 - - Update NEWS for 1.8.11 pre-release - - Add NEWS items for the upcoming 1.8.11 release. - - Change-Id: I0b690b0aa273c05f33e68e1ba086863703266b3b - Reviewed-on: https://gerrit.openafs.org/15551 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Laß - Reviewed-by: Benjamin Kaduk - -commit 1f63ffef477d63984dbd65bc83955c0e36f9fc44 -Author: Indira Sawant -Date: Wed Dec 20 18:20:53 2023 -0800 - - util: Clear owner when unlocking recursive mutex - - A race condition where the pthread_recursive_mutex_t::owner that is maintained - by AFS doesn’t match with the thread that is trying to unlock. - - This leads to AFS file server and ptserver crash due to assertion failure - where it was trying to unlock the grmutex. - - We saw the race more often when our customer migrated their machines from - Power8 to Power9 systems and increased the SMT value from 2 to 4. - - fileserver Assertion failed! file keys.c, line 911. - ptserver Assertion failed! file userok.c, line 78. - - File: keys.c - - 889 int - 890 afsconf_GetKeyByTypes(struct afsconf_dir *dir, afsconf_keyType type, - 891 int kvno, int subType,struct afsconf_typedKey **key) - 892 { - 893 int code = 0; - 894 struct subTypeList *subTypeEntry; - 895 - 896 LOCK_GLOBAL_MUTEX; - 897 - … - 910 out: - 911 UNLOCK_GLOBAL_MUTEX; <<<< - 912 return code; - 913 } - - Consider a following situation, - cpu0 , cpu1 and T0, T1 and T2 are the cpus and timestamps respectively, - - T0: thread1 locks grmutex performs some operations and unlocks the same, - thus has itself set as pthread_recursive_mutex_t::owner. Since presently we do - not reset it, thus, pthread_recursive_mutex_t::owner = thread0. - T1: thread0 starts on cpu0. - T2: thread1 starts on cpu1. - T3: thread0 tries to lock AFS grmutex and acquires corresponding pthread_mutex, - now before thread0 updates pthread_recursive_mutex_t::owner, a context switch - happens. - T3: thread1 on cpu1 tries to acquire grmutex and sees itself as the - pthread_recursive_mutex_t::owner, possibly as it was not reset and updated yet. - So thread1 thinks itself as the owner and proceeds. - T4: thread0 updates the pthread_recursive_mutex_t::owner this time it is also - synced across the cpu caches. - T5: thread1 tries to unlock the grmutex and crashes because now it’s not the - owner of the mutex. - - Debugging: - - We implemented a circular log to store certain values related to grmutex which - helped in debugging us this further. - - ({ \ - time_t t; \ - time(&t); \ - LOG_EVENT("%s: Unlocking TID %u: %s:%d owner %lu " \ - "locked %d pthread_self %u times_inside %d\n", \ - ctime(&t), (unsigned)grmutex.mut.__data.__owner,\ - __func__ , __LINE__, \ - grmutex.owner, grmutex.locked, (unsigned)pthread_self(), \ - grmutex.times_inside); \ - opr_Verify(pthread_recursive_mutex_unlock(&grmutex)==0); \ - }) - - $614 = "Mon Sep 11 19:35:34 2023\n: Locking TID 136896: - afsconf_GetKeyByTypes:896 owner 140735030161776 locked 1 - pthread_self 2305880432 times_inside 1\n\000 2\n", - - $615 = "Mon Sep 11 19:35:34 2023\n: Unlocking TID 136896: - afsconf_IsLocalRealmMatch:602 owner 140735030161776 locked 1 - pthread_self 1836773744 times_inside 2\n", - - $617 = "Mon Sep 11 19:35:34 2023\n: Unlocking TID 136896: - afsconf_GetKeyByTypes:911 owner 140735030161776 locked 1 - pthread_self 2305880432 times_inside 1\n\000\061\n", - - Solution: - - This problem was resolved after resetting thread_recursive_mutex_t::owner in - global mutex unlock function. - - Thanks to Todd DeSantis for helping with debugging, review and verification of - this problem. - - Signed-off-by: Indira Sawant - Reviewed-on: https://gerrit.openafs.org/15604 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e4fda3481dc9ec651377493afbc95bd40f4f1fb2) - - Change-Id: I400892121d1b1f63adcd6848e774ede1c4ec5da9 - Reviewed-on: https://gerrit.openafs.org/15609 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - -commit 6edf9d350c6ffd9d5e51fb8106701c1bc2f6a4d9 +commit dfb6b53a6802e90f6bc2cd3cd39da467ce8e4488 Author: Cheyenne Wills -Date: Thu Nov 9 10:38:29 2023 -0700 +Date: Wed Apr 3 11:36:54 2024 -0600 - Linux 6.7: convert to inode a/mtime accessor funcs + Linux: Define afs_thread_wrapper() as static - 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) + When building against a Linux 6.8 kernel, functions that are missing + prototypes or declarations are flagged. - 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. + We can add the static attribute to functions that are not referenced + outside of the file that implements them to avoid having these functions + flagged by the compiler. - This commit is similar to the OpenAFS commit "Linux 6.6: convert to - ctime accessor functions" (072c7934cd1) + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - 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. + When building against a kernel with CONFIG_WERROR=y, the build fails. - 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. + This is an openafs-1.8.x specific commit. - Reviewed-on: https://gerrit.openafs.org/15597 - Tested-by: BuildBot + The function afs_thread_wrapper() in LINUX/osi_misc.c on the master + branch was changed to a static function with commit: + 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) + However this is a larger change than needed to fix the build problem and + the commit could have a significant impact for 1.8.x since it is + changing rx locking. To avoid introducing such a change, just change + the afs_thread_wrapper() to static as a 1.8.x specific commit. + + There are no functional changes in this commit. + + Change-Id: I4edc61e6a4989c16ccf41b935e205dbf209bf2a5 + Reviewed-on: https://gerrit.openafs.org/15727 Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 8962767a7e27f8db9dc9001999edf573be706d66) - - Change-Id: If5f58df74f37749b7dfdc52172a8e9573d849ecd - Reviewed-on: https://gerrit.openafs.org/15600 - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Benjamin Kaduk -commit fd527549c2d2b29a955f8c0427ac67c5d49ef38c -Author: Mark Vitale -Date: Fri Sep 15 15:01:56 2023 -0400 - - dir: Introduce struct DirEntryFlex - - 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 ".".) - - 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 - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Reviewed-by: Michael Meffie - (cherry picked from commit e2ec16cf941b0aadfbd54fc2f52edd58b62e232d) - - Change-Id: Ibf6d3549ba1e941c957e98ef4875152d865c9358 - Reviewed-on: https://gerrit.openafs.org/15599 - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Michael Laß - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - -commit 9ff262312619f25ca4b36e853e6f79782108f21b -Author: Mark Vitale -Date: Mon Sep 18 18:41:23 2023 -0400 - - dir: Allow 256-byte directory entry names in salvager - - Since the original IBM code import, the DirOK test for directory entry - names has been off-by-1; it says that directory names of length MAXENAME - 256 are "too-long". - - Modify DirOK to properly validate directory entry names during salvage. - While here, remove MAXENAME in favor of AFSNAMEMAX. - - Reviewed-on: https://gerrit.openafs.org/15574 - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - Reviewed-by: Andrew Deason - (cherry picked from commit 319c1ca87af66425048e498e300e7d8e714fc98a) - - Change-Id: Ie4355f9867372f99e4cb283a209953fcda949397 - Reviewed-on: https://gerrit.openafs.org/15598 - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Michael Laß - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - -commit 56763a199f92101c35d6b9b733302cb08fe0cdbe +commit d1a42401fddc51bd2f16da39dfebe0f60fc670ad Author: Cheyenne Wills -Date: Thu Nov 2 09:46:34 2023 -0600 +Date: Thu Feb 29 17:58:17 2024 -0700 - Linux: Fix to use time_t instead of time64_t + Linux: Remove weak attribute for key_type_keyring - In commit 'Linux 6.6: convert to ctime accessor functions' (072c7934cd) - the functiom afs_inode_set_ctime was defined to use time64_t when it - should have used a time_t as the data type for the sec parameter. - See the commit 'LINUX 5.6: define time_t and use timespec/timespec64' - (78049987aa). + The reference to the Linux symbol key_type_keyring uses a weak + attribute to assist in determining if the symbol is exported. This + method was introduced in commit: 'keyring-updated-20080310' (b7fb842b1c) + as a way to detect if the symbol was exported by the Linux kernel. A + later commit: 'linux-keyring-export-check-20090701' (4ca66112c2) + introduced an autoconf test that eliminated the need for using the weak + attribute, but the commit did not remove the attribute. - The time64_t data type was introduced in Linux 3.17. A build failure - will occur when building on kernels prior to Linux 3.17. + On a Debian-12 system on ARM64 the use of the weak attribute in this + case causes an error when loading the kernel module: + "ERROR: could not insert 'openafs': Exec format error". + The error is due to the Linux module loader not supporting the + relocation entry type in the openafs kernel module for the + key_type_keyring. Further investigation showed that this problem could + occur with gcc-12 on a ARM64 system (see below for additional + information). - Reviewed-on: https://gerrit.openafs.org/15595 - Reviewed-by: Benjamin Kaduk + The code in osi_groups.c uses a pointer, __key_type_keyring, to the + key_type_keyring. When this symbol is exported by the Linux kernel, the + loader would resolve the address and __key_type_keyring would contain + the address. If the key_type_keyring symbol was not exported, + __key_type_keyring would be set to NULL (due to the weak attribute + associated with key_type_keyring). + + Remove the weak attribute for key_type_keyring when the configure + test, introduced in the 4ca66112c2 commit, determines that the symbol + is exported (EXPORTED_KEY_TYPE_KEYRING is defined). When the symbol + isn't exported (pre Linux 2.6.22), just set the pointer, + __key_type_keyring to NULL. + + NOTE: + + The load error was reported on the openafs IRC channel by "clarkb" + + The problem of loading the openafs kernel module was also observed + on a NixOS system as well, and is described in the NixOS ticket + + https://github.com/NixOS/nixpkgs/issues/284501 + + A Debian-11 system did not have a problem loading the openafs kernel + module. Investigation of the differences between Debian-11 and Debian-12 + showed that the problem is due to a series of fixes in the toolchain + (in particular gcc-12) to address 'Cortex-A53 erratum #843419', which + deals with how the ARM64 ADRP instruction is used. With gcc-12, the + code generated uses a R_AARCH64_ADR_GOT for this particular case (which + isn't supported by the Linux kernel module loader). Gcc-11 created a + R_AARCH64_ABS64 relocation entry type for the symbol. + + Reviewed-on: https://gerrit.openafs.org/15668 Tested-by: BuildBot - (cherry picked from commit a2f77c53073b3999887eb689f396a414b191aba7) - - Change-Id: Ie14d9ebbcce6a5d2db0fc38eb4d97aa30f574da9 - Reviewed-on: https://gerrit.openafs.org/15596 - Reviewed-by: Mark Vitale Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - -commit 519918dfed42fd3dc338facdb88f8be205a00383 -Author: Ganesh Chaudhari -Date: Fri Oct 20 16:16:16 2023 +0530 - - macos: Add support for MacOS 14.X (Sonoma) - - This commit introduces the new set of changes/ files required - to successfully build and package the OpenAFS source code on - MacOS 14.X "Sonoma". - - Signed-off-by: GANESH CHAUDHARI - Reviewed-on: https://gerrit.openafs.org/15591 - Reviewed-by: Andrew Deason - Reviewed-by: Marcio Brito Barbosa - Tested-by: Marcio Brito Barbosa - Reviewed-by: Benjamin Kaduk - (cherry picked from commit f379e1b255ebb5094c5acc11a9234d5a321818c2) - - Change-Id: I913bf9ae5eda0ae571c727e95f9f3ac113df9f64 - Reviewed-on: https://gerrit.openafs.org/15602 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Ganesh G. Chaudhari Reviewed-by: Mark Vitale - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Andrew Deason - Reviewed-by: Stephan Wiesand - -commit 88d3cbbf7e86cc628011c0ba414225400136d57a -Author: Michael Meffie -Date: Thu Jan 26 19:30:04 2023 +0100 - - CellServDB update 31 October 2023 - - Update all three copies in the tree, and the rpm specfile. - - Reviewed-on: https://gerrit.openafs.org/15601 Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 26fdb47dba4852f3525db00c6eb72863d92d74fa) + (cherry picked from commit 2f260825b96b76556aba82fc364c841357a23a7d) - Change-Id: I4468ff651da06236543e0c7ac7aee247ed03cfa3 - Reviewed-on: https://gerrit.openafs.org/15603 + Change-Id: Ifce08cb01f0b642ee9c2d90480b8a1766dfc52ff + Reviewed-on: https://gerrit.openafs.org/15728 Tested-by: BuildBot Reviewed-by: Michael Meffie - Reviewed-by: Ralf Brunckhorst - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk -commit 4f1d8104d17d2b4e95c7abaf5498db6b80aefa8f +commit 7b4802efaf29ef76969c8b931a31e93dd4fbb000 Author: Cheyenne Wills -Date: Mon Sep 18 12:23:01 2023 -0600 +Date: Mon Mar 11 09:05:33 2024 -0600 - Linux 6.6: Pass request_mask to generic_fillattr + Linux 6.8: Use roken's strlcpy() in kernel module - The Linux 6.6 commit: "fs: pass the request_mask to generic_fillattr" - (0d72b92883) added an additional parameter to Linux's - generic_fillattr() function. + The Linux 6.8 commit 'string: Remove strlcpy()' (d26270061a) removed the + the strlcpy function from the Linux kernel. The replacement function, + strscpy(), cannot be used as a drop-in replacement as its currently a + Linux kernel specific function and there are differences in the returned + value. - 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. + We can use roken's strlcpy() (provided in roken/strlcpy.c). - 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(). + Create a configure test to that defines its own strlcpy() to test + if the kernel doesn't provide one itself. Note, we need to use a + different function signature for strlcpy() from what the kernel might + have otherwise the test build succeeds when the kernel does provide a + strlcpy(). - Reviewed-on: https://gerrit.openafs.org/15561 + Update the OpenAFS kernel specific roken.h to define the prototype for + strlcpy when it's not present in the Linux kernel. We need to match the + defines used in the 'real' roken.h so the roken/strlcpy.c can build + properly. Add defines for ROKEN_LIB_FUNCTION, ROKEN_LIB_CALL and + ROKEN_LIB_VARIABLE to the kernel roken.h + + Update Linux's osi_machdep.h to include roken.h so the strlcpy protoype + is available. + + Update the Linux MakefileProto to include the strcpy-kernel object + when building the kernel module. + + Reviewed-on: https://gerrit.openafs.org/15646 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 30b18c165752e6d0ce7b6daa6a90453f5e5e6d17) + + Change-Id: I8013623e8f735d15bb7d4ac84ed0867f12b77783 + Reviewed-on: https://gerrit.openafs.org/15706 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 6333fae573f8a7b7656e9c1b05d445a37b951b88 +Author: Cheyenne Wills +Date: Tue Mar 5 08:37:47 2024 -0700 + + Linux 6.8: Remove ctl_table sentinels + + The Linux 6.8 commit 'sysctl: Remove the now superfluous sentinel + elements from ctl_table array' (c8a65501d3) was a clean up commit + that removed the sentinel entry in the ctl_table array (e.g. the + "null" entry at the end of the table). + + As of Linux 6.8, including the sentinel entry (.procname =) in the + ctl_table is unnecessary, but doesn't yet break anything. But it is + likely that including the sentinel will start to cause runtime errors in + future Linux versions very soon, so avoid the sentinel when we can, to + avoid possible problems in the future. + + Define a new macro that can be used as the last entry of a ctl_table + that will either add a "null" entry, or nothing. + + There is not a specific build test we can use within configure, so we + must explicitly test the Linux version to decide if we need to use a + sentinel or not when defining the macro. We are selecting 6.8 to match + the version where the Linux kernel is removing the sentinels from the in + kernel filesystems. + + Note: See the Linux merge commits 'Merge tag 'sysctl-6.8-rc1' of + git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux' (a05aea98d4) + for more details behind the staged removal of the sentinels in the + ctl_table structures and the potential future change for removing the + actual check for the sentinel within the Linux kernel. + + Reviewed-on: https://gerrit.openafs.org/15645 Tested-by: BuildBot Reviewed-by: Mark Vitale - Tested-by: Mark Vitale - Reviewed-by: Andrew Deason - Reviewed-by: Kailas Zadbuke Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4fed232b80fb1ad6c0e1dfb42ed8d8e1e6821dd7) + (cherry picked from commit 35c8c1bf0b1cb48178f676ba5bcf16ad59c5a33b) - Change-Id: I5cddc56c5e605a6c5e4f7f3691eafec8ca589d2c - Reviewed-on: https://gerrit.openafs.org/15590 - Reviewed-by: Andrew Deason + Change-Id: I34cb7586003e10a6c7438d7205123d57af30585e + Reviewed-on: https://gerrit.openafs.org/15705 Tested-by: BuildBot + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 6413fdbc913834f2884989e5811841f4ccea2b5f -Author: Cheyenne Wills -Date: Thu Oct 5 14:44:49 2023 -0600 - - 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 - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Tested-by: Mark Vitale Reviewed-by: Benjamin Kaduk - (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 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand -commit 6de0a646036283266e1d4aeb583e426005ca5ad4 +commit 18a2a932df9c1b6b3c7513a6c161d4259f052ca9 Author: Cheyenne Wills -Date: Tue Aug 29 14:58:10 2023 -0600 +Date: Mon Feb 12 12:31:30 2024 -0700 - linux: Replace fop iterate with fop iterate_shared + Linux 6.8: use hlist iteration for dentry children - 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) + Linux 6.8 commit 'dentry: switch the lists of children to hlist' + (da549bdd15) replaces the dentry lists d_subdirs/d_child with the hlist + d_children/d_sib. - 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 an autoconf test for a d_children member in the dentry structure. - Add configure tests for the iterate_shared file_operations member and - for the wrap_directory_iterator function. + Define a macro that uses the applicable Linux function for iterating + over a dentry's children. - 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 + Reviewed-on: https://gerrit.openafs.org/15632 Reviewed-by: Andrew Deason Tested-by: BuildBot - (cherry picked from commit 7437f4d37719ea53711e06ac9675dad1abd6769e) - - Change-Id: Id00cfab2c0b51c2167fe19cd9cf7f136450ff174 - Reviewed-on: https://gerrit.openafs.org/15558 - Tested-by: BuildBot Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 8e0bbe6a07523dd2e7efb3c9d1b4ad9e19fc9bb7) + + Change-Id: Ief4c334c4ef3e54822e068dcdf654541e86b9176 + Reviewed-on: https://gerrit.openafs.org/15704 + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand + Tested-by: Andrew Deason + Reviewed-by: Benjamin Kaduk -commit 5b647bf17a878271e1ce9882e41663770ee73528 +commit fef1fc6f740c6f7395cf51ce99ed296652579c7d Author: Cheyenne Wills -Date: Wed Sep 6 11:41:55 2023 -0600 +Date: Tue Mar 5 07:40:08 2024 -0700 - LINUX: Pass an array of structs to register_sysctl + rxgen: Declare generated PKG_OpCodeStats() - 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. + The function {PKG}_OpCodeStats() is generated by rxgen, however a + prototype for the function is not generated. - This change only affects the autoconf test used to determine if Linux - provides register_sysctl. + The functions h_ProcMainBody_setup() and h_HeadofOldStyleProc_setup() + in rpc_parse.c emit prototypes for {PKG}_ExecuteRequest() and + {PKG}_TranslateOpCode(), but do not emit a prototype for + {PKG}_OpCodeStats(). - Update the autoconf test for register_sysctl to use an actual ctl_table - structure for the 2nd parameter instead of a NULL. + Update rxgen to emit a function prototype for {PKG}_OpCodeStats() in the + generated header file. - Reviewed-on: https://gerrit.openafs.org/15559 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154) - - Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f - Reviewed-on: https://gerrit.openafs.org/15575 + Use a variable to point to "PackagePrefix[PackageIndex]" in + h_ProcMainBody_setup to improve readability. + + {PKG}_OpCodeStats(), specifically RXSTATS_OpCodeStats(), is flagged due + to a missing prototype when building against a Linux 6.8 kernel (which + sets the -Wmissing-declarations and -Wmissing-prototypes compiler flags + as default). Linux 6.8 commit: 'Makefile.extrawarn: turn on + missing-prototypes globally' (0fcb70851f). When building against a + kernel with CONFIG_WERROR=y, the build fails. + + Reviewed-on: https://gerrit.openafs.org/15631 Tested-by: BuildBot + Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk + (cherry picked from commit 26bb4d143b31ba027cf2721ac731df67a174c43b) + + Change-Id: I9072d22d142b5b7a2f59b0cfc4026066ef1d9501 + Reviewed-on: https://gerrit.openafs.org/15703 + Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand + Reviewed-by: Benjamin Kaduk -commit 2ebafdc5349c7ae4418a98c244b6959388c50bf2 +commit 57e0192a690942c2a0f4f1f685cfadf2106b763a Author: Andrew Deason -Date: Wed Aug 2 16:02:57 2023 -0500 +Date: Tue Dec 7 15:43:35 2021 -0600 - rx: Check for callNumber before NULL server call + rxgen: Declare generated PKG_TranslateOpCode() - In rxi_ReceiveServerCall(), we compare the callNumber in the given - packet to the callNumber on the conn's channel. If the packet's - callNumber is smaller, it indicates the packet is for an earlier call - that has since ended, and we ignore it. + Ever since commit 5c77a6ca (rxgen: add *TranslateOpcode functions to + XDR code), rxgen generates a PKG_TranslateOpCode function in the + relevant .xdr.c source, which can translate an RPC opcode into the RPC + name. But we never declare this function in a header file, making it + impossible to use without compiler warnings (unless the caller + declares the function itself). - However, we perform this check after checking whether we need to - allocate a new call (conn->call[channel] is NULL), or use an existing - call. If we allocate a new call, we don't check the conn's callNumber - at all, and unconditionally set it to the callNumber in the packet. + To make it possible to actually use this function, declare this + function in the generated header file. - This means that if a server call ends and is successfully - rxi_FreeCall()'d, the server will accept any callNumber on the same - channel. If the server sees an old DATA packet from an earlier call - after this happens, it means the server can effectively re-run an RPC - that has already completed successfully, or that the client has - already seen fail. - - A server can see a DATA packet for an old call under a variety of - situations, which is, after all, why we check it (dup'd/delayed - packets, the client could still be trying to run an old call, etc). - Seeing one for a freed call is less likely since that usually requires - more time to have passed, but is still possible. - - Checking the callNumber was effectively moved in commit 99b43273c0 - (rx: prevent connection channel assignment race) in the 1.7.x series. - This commit makes the check similar to how it was in 1.6.x and - earlier. - - Reviewed-on: https://gerrit.openafs.org/15524 - Reviewed-by: Benjamin Kaduk + Reviewed-on: https://gerrit.openafs.org/14871 + Reviewed-by: Cheyenne Wills + Tested-by: BuildBot Reviewed-by: Mark Vitale - Tested-by: BuildBot - (cherry picked from commit 448e82b45268e8b339bdaa6ab0cd5858a04250a9) - - Change-Id: I4a0c8a578cef32da8411bd33610aed9c67dc47c6 - Reviewed-on: https://gerrit.openafs.org/15562 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit 00f13c45d637249a0d698458e08c1b8e2da8e219 -Author: Cheyenne Wills -Date: Wed Jun 21 13:56:29 2023 -0600 - - cf: Use static allocated structs for cf tests - - The Linux kernel module build will issue a warning when a stack frame - exceeds a specific size via the -Wframe-larger-than= compiler flag (with - a default size of 2048 bytes on most architectures). - - At least one distribution, Oracle's Linux with the Unbreakable - Enterprise Kernel (UEK), hardens this check by changing the warning to - an error (-Werror=frame-larger-than=). - - Several of the openafs autoconf tests use objects that are allocated on - the stack when testing for structures, or members of a structure. - When the warning is changed to an error, configure fails in several - locations when testing against Linux's task_struct structure, which - exceeds 2048 bytes in size. - - openafs/conftest.dir/conftest.c:72:1: error: the frame size of 9984 - bytes is larger than 2048 bytes [-Werror=frame-larger-than=] - - Update the autoconf Linux tests that allocate structures to use a - statically allocated structure instead of one allocated on the stack. - - Reviewed-on: https://gerrit.openafs.org/15477 Reviewed-by: Benjamin Kaduk + (cherry picked from commit 9b2c27fc6d299cb0b23eca3e8cb25b7e0c41b11a) + + Change-Id: I2479ff7f6579769b3319b2939ffde60fe570c880 + Reviewed-on: https://gerrit.openafs.org/15702 Tested-by: BuildBot Reviewed-by: Andrew Deason - (cherry picked from commit a939eb7ffd2517a127aeb02ebd962e00e9acb960) - - Change-Id: Ib1d5b8218981890751187fbcf724dd6643356e98 - Reviewed-on: https://gerrit.openafs.org/15549 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa Reviewed-by: Michael Meffie - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand + Reviewed-by: Benjamin Kaduk -commit 4212d485cb2e0b1fa06b73bd21ca38ea8e3a8fa6 +commit 4c92936aefede187e57a9a433c0c192af2fc5e84 Author: Cheyenne Wills -Date: Thu May 25 15:51:10 2023 -0600 +Date: Fri Jan 12 15:30:23 2024 -0700 - clang: Don't redefine printf in salvage.c + rx: Add static attribute to internal functions - The Gentoo distribution changed the default fortify_source setting for - clang (to match the default being used for gcc). This change causes the - following build error: + When building against a Linux 6.8 kernel, functions that are missing + prototypes or declarations are flagged. - src/dir/salvage.c:26:9: error: 'printf' macro redefined - [-Werror,-Wmacro-redefined] - ^ - /usr/include/bits/stdio2.h:89:11: note: previous definition is here - ^ - 1 error generated. + We can add the static attribute to functions that are not referenced + outside of the file that implements them to avoid having these functions + flagged by the compiler. - If the fortify_source level is greater than 1, glibc can define printf - as a macro. The clang compiler has a default check for macro - redefinitions (-Wmacro-redefined), while gcc does not provide this - option. + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - Remove the: - #define printf Log - in src/dir/salvage.c and update callers to use Log() instead of - printf(). + When building against a kernel with CONFIG_WERROR=y, the build fails. - Clean up lines that split the call to Log and its first parameter. Fix - the indentation for Log's parameters. + There are no functional changes in this commit. + + Reviewed-on: https://gerrit.openafs.org/15626 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 55adceba2d561ec4e89235de329782a68e603a11) + + Change-Id: I1b2a6e1c07bd4b75b7b83e177f17865eb903e488 + Reviewed-on: https://gerrit.openafs.org/15701 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 195f154aaf2d8aff1f6debdb47c0db8f07cb5c5e +Author: Cheyenne Wills +Date: Thu Feb 29 17:53:31 2024 -0700 + + afs: Add static attribute to internal functions + + When building against a Linux 6.8 kernel, functions that are missing + prototypes or declarations are flagged. + + We can add the static attribute to functions that are not referenced + outside of the file that implements them to avoid having these functions + flagged by the compiler. + + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + There are no functional changes in this commit. + + Reviewed-on: https://gerrit.openafs.org/15625 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit efee796f28b53bf3ffc03186f81790c36c23c94c) + + Change-Id: I0d923a65731f825d6c190056b0ccc3d362236706 + Reviewed-on: https://gerrit.openafs.org/15700 + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Tested-by: Benjamin Kaduk + Reviewed-by: Benjamin Kaduk + +commit 90b8dcff36e9b03ec01550ad1a070a0ab7db8c46 +Author: Cheyenne Wills +Date: Fri Feb 9 09:01:33 2024 -0700 + + afs: fix 'ops' variable may be used uninitialized + + When the function rxfs_storeInit() has the static attribute, gcc flags + the variable 'ops' as possibly uninitialized. + + In function 'afs_CacheStoreDCaches', + inlined from 'afs_CacheStoreVCache' at + .../src/afs/afs_fetchstore.c:630:14: + .../afs/afs_fetchstore.c:535:17: error: 'ops' may be used + uninitialized [-Werror=maybe-uninitialized] + 535 | code = (*ops->destroy)(&rock, code); + | ~^~~~~~~~~~~~~~ + ...src/afs/afs_fetchstore.c: In function 'afs_CacheStoreVCache': + ...src/afs/afs_fetchstore.c:567:22: note: 'ops' was declared here + 567 | struct storeOps *ops; + | ^~~ + cc1: all warnings being treated as errors + + This is a false positive report by the gcc compiler. + + The function rxfs_storeInit() returns a 0 only when it has successfully + assigned a value to the ops variable, and afs_CacheStoreDcaches() is + only called if the return value from rxfs_storeInit() is 0. + + The ops variable is only used within a block that is within a for loop, + which could leave a stray value if the variable isn't initialized within + that loop. + + Assigning a NULL to ops is sufficient to avoid the compiler error, and + relocating the declaration of the ops variable into the block where it + is actually used ensures that it's always initialized before its use + within the loop. + + Clean up whitespace in the statement that follows the new location for + the ops variable. + + Note, this commit is being added before a commit that adds the static + attribute to the rxfs_storeInit() function which also "fixes" the + compiler error (see: afs: Add static attribute to internal functions). + + Reviewed-on: https://gerrit.openafs.org/15630 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 36e4c02ff27b9d66755b9544778896b9b1e5c391) + + Change-Id: I9d8a07e576c6bf889f8f182c6fc0d34dc997c004 + Reviewed-on: https://gerrit.openafs.org/15699 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 09f9660fbbb4f3c20ba9f2283169818372c3f474 +Author: Cheyenne Wills +Date: Wed Feb 7 19:34:29 2024 -0700 + + rx: Add function prototypes to rx_prototypes.h + + The prototype for rxk_NewSocketHost() is not in a header file, but is + defined in the referencing .c file. The ARCH/rx_knet.c files that + implement rxk_NewSocketHost() do not have a prototype (but when the + rx_kcommon.c implementation is used it does have a prototype, since + rx_kcommon.c is the "referencing .c file"). + + Add the prototype for rxk_NewSocketHost() to rx_prototypes.h and + remove the prototype from rx_kcommon.c + + The prototypes for the functions rx_DebugOnOff() and rx_StatsOnOff() + are defined within rx_prototypes.h, but are within a preprocessor + conditional for AFS_NT40_ENV, however the implementation for these + 2 functions do not have the preprocessor conditional. + + Rearrange the prototypes for rx_DebugOnOff() and rx_StatsOnOff() so they + are outside the AFS_NT40_ENV preprocessor conditional. + + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + There are no functional changes in this commit. + + Reviewed-on: https://gerrit.openafs.org/15624 + Reviewed-by: Mark Vitale + Reviewed-by: Cheyenne Wills + Tested-by: Benjamin Kaduk + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 8528c36b96fe2935f42188caabf4feed0d5dbcbd) + + Change-Id: Ieae8be7f89f5c675c6580d8cfb02ea77ce4088f7 + Reviewed-on: https://gerrit.openafs.org/15698 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 53752b01bc734f4bd5f5da24ac116c7fcb2ac07f +Author: Cheyenne Wills +Date: Mon Feb 12 09:43:29 2024 -0700 + + afs: Remove SRXAFSCB* protos from afs_prototypes.h + + The prototypes for the afscbint RPC functions (SRXAFSCB_*) implemented + in afs_callback.c are defined in 2 locations, afs_protypes.h and + afscbint.h (which is generated by rxgen). + + Remove the protoypes for the SRXAFSCB_* functions from afs_prototypes.h + as they are redundant and are currently out of sync (the prototypes + for SRXAFSCB_GetCellByNum() and SRXAFSCB_TellMeAboutYourself() are + not present in afs_prototypes.h). Also remove a redundant prototype for + afs_RXCallBackServer() which was prototyped both before and in the + middle of the SRXAFSCB* prototypes. + + Since afs_callback.c only pulled in afs_prototypes.h and not afscbint.h, + add an include for afscbint.h to ensure that the all the prototypes for + the SRXAFSCB_* functions are present. + + The 2 functions listed above are flagged due to missing prototypes when + building against a Linux 6.8 kernel (which sets the + -Wmissing-declarations and -Wmissing-prototypes compiler flags as + default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Reviewed-on: https://gerrit.openafs.org/15644 + Reviewed-by: Mark Vitale + Tested-by: Benjamin Kaduk + Reviewed-by: Benjamin Kaduk + (cherry picked from commit fae4003b403420d0b548920c7837a2d2b6e432ae) + + Change-Id: I7d435455fc60cc10200ee91d0d76534367ab5883 + Reviewed-on: https://gerrit.openafs.org/15697 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 96932160fa8ef1cf4422e9e1d1ca2a449f8ffe93 +Author: Cheyenne Wills +Date: Mon Feb 12 08:59:32 2024 -0700 + + afs: Add afs_xioctl prototyes to afs_prototypes.h + + Several .c files have external function prototypes for the afs_xioctl + function, while the implementing files do not have the prototype. + + Move these prototypes into afs_prototypes.h so that the prototypes are + available to both the caller and the implementation. + + Because the file holding the implementation does not have a prototypes, + afs_xioctl() is being flagged when building against a Linux 6.8 kernel + (which sets the -Wmissing-declarations and -Wmissing-prototypes compiler + flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a Linux kernel with CONFIG_WERROR=y, the build + fails. + + Note that the function afs_xioctl() has platform specific + implementations. + + Reviewed-on: https://gerrit.openafs.org/15643 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 575d986aa6c18ac27ea42fb66ae8b8cb0e27fe6c) + + Change-Id: If746111fdcf6a00459f524711623d322d5fc7942 + Reviewed-on: https://gerrit.openafs.org/15696 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit c04c2d07226583846c3949a4855c7db4316438da +Author: Cheyenne Wills +Date: Thu Feb 15 09:00:05 2024 -0700 + + afs: Move function prototypes into headers + + Several .c files contain external function prototypes, while the + implementing files do not have these prototypes. + + Move these prototypes into header files so that the prototypes are + available to both the caller and the implementation. + + Because the file holding the implementation does not have prototypes, + these functions are flagged when building against a Linux 6.8 kernel + (which sets the -Wmissing-declarations and -Wmissing-prototypes compiler + flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Add the prototypes for the following to afs_prototypes.h: + exporter_add + afs_syscall (AFS_LINUX_ENV) + BlobScan + + Remove the prototypes from the .c files where they are referenced. + + Reviewed-on: https://gerrit.openafs.org/15642 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 85781d7e83ae4501d8ab267bf55ef63f90f63101) + + Change-Id: I74333e99e08af88bebdcbff4767d79397acac358 + Reviewed-on: https://gerrit.openafs.org/15695 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 8b516820abf1edace60276152e9ed18a0b30fc13 +Author: Cheyenne Wills +Date: Mon Feb 12 08:25:47 2024 -0700 + + afs: Add includes to pick up function prototypes + + The functions defined in LINUX/osi_crypto.c, osi_pagecopy.c, + osi_probe.c, and osi_syscall.c have function prototypes defined in + existing header files, however either due to missing includes or + preprocessor conditionals that skip the includes, these function + prototypes are not being pulled in. + + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Add the necessary includes to osi_crypto.c and osi_pagecopy.c and + re-arrange the includes in osi_probe.c and osi_syscall.c to ensure that + the function prototypes are present when building the Linux kernel + module. + + Reviewed-on: https://gerrit.openafs.org/15641 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 3683f15278e34e13d7272928eaf666f0acc4e1e9) + + Change-Id: Iac704fc98d0d685358224049f383d68aa7a105f8 + Reviewed-on: https://gerrit.openafs.org/15694 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit 25e17fe7196fd4a46e6a9408d135812ca53ddf80 +Author: Cheyenne Wills +Date: Thu Feb 8 11:50:16 2024 -0700 + + afs: Declare init_hckernel_mutex() + + The function init_hckernel_mutex() (in rand.c) is flagged due to a + missing prototype when building against a Linux 6.8 kernel (which sets + the -Wmissing-declarations and -Wmissing-prototypes compiler flags as + default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Add a function prototype for init_hckernel_mutex() to afs_osi.h and + remove the prototype from afs_osi.c There are no functional changes with this commit. - Reviewed-on: https://gerrit.openafs.org/15462 + Reviewed-on: https://gerrit.openafs.org/15622 Tested-by: BuildBot Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk - (cherry picked from commit df7f841f3852b5417a1d4ebc981780f2d7651b60) + (cherry picked from commit ccc2af429710104793fb4659b10697cceab182b3) - Change-Id: I9a7d9e70184eb1dbd04f2b1a0e9a668138baaabe - Reviewed-on: https://gerrit.openafs.org/15548 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa + Change-Id: Ic5eb4584a980657a01a1cb4411c0c1f03b1f3560 + Reviewed-on: https://gerrit.openafs.org/15693 + Reviewed-by: Andrew Deason + Tested-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand + Reviewed-by: Benjamin Kaduk -commit d19554327fa92cee4eb2d914304fed02e20543e7 +commit b1c93f13870e24795b857cb483320871703d00e8 Author: Cheyenne Wills -Date: Tue Sep 24 15:59:47 2019 -0600 +Date: Wed Feb 7 15:25:10 2024 -0700 - Retire the AFS_PTR_FMT macro + Linux 6.8: Add function prototypes for krb5 - Originally '%x' was commonly used as the printf specifier for formatting - pointer values. + The external files for heimdal/krb5 do not provide function prototypes + in a header file that is used when building files that we use from + heimdal/krb5 (e.g. crypto.c). - Commit 37fc3b01445cd6446f09c476ea2db47fea544b7d introduced the - AFS_PTR_FMT macro to support platform-dependent printf format specifiers - for pointer representation. This macro defined the format specifier as - '%p' for Windows, and '%x' for non-Windows platforms. + These functions are flagged due to missing prototypes when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - Commit 2cf12c43c6a5822212f1d4e42dca7c059a1a9000 changed the printf - pointer format specifier from '%x' to '%p' on non-Windows platforms as - well, so at this point '%p' is the printf pointer format specifier for - all supported platforms. + When building against a kernel with CONFIG_WERROR=y, the build fails. - Since the AFS_PRT_FMT macro is no longer platform-dependent, and all C89 - compilers support the '%p' specifier, retire the macro to simplify the - printf format strings. + We cannot modify the external source files, however there is the local + OpenAFS include file, krb5_locl.h, that does contain OpenAFS specific + changes. - Reviewed-on: https://gerrit.openafs.org/13830 - Reviewed-by: Benjamin Kaduk + Add declarations to krb5_locl.h for the functions defined in the + heimdal/krb5 source. + + There are no functional changes with this commit. + + Reviewed-on: https://gerrit.openafs.org/15621 Tested-by: BuildBot - Reviewed-by: Michael Meffie - (cherry picked from commit a133f1b1e7eb605c36ac16a6ed115bef03e8a004) - - [cwills@sinenomine.net] As part of the 1.8.x pullup, remove AFS_PTR_FMT - from the files in src/xstat - - Change-Id: I1fbb6a9b1c957adf45ca528d744a373809d1b780 - Reviewed-on: https://gerrit.openafs.org/15547 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit e644e2fc7db3cf9186184fc3586b8c8320f458a5 -Author: Mark Vitale -Date: Sun Mar 3 20:51:45 2019 -0500 - - dir: check afs_dir_MakeDir return code in DirSalvage - - Since the original IBM import, DirSalvage() has ignored the return code - from afs_dir_MakeDir() (f.k.a. MakeDir). This has been safe because, as - the comment states, afs_dir_MakeDir returns no (non-zero) error code. - - In preparation for a future commit, add a check for the return from - afs_dir_MakeDir and remove the comment. - - Reviewed-on: https://gerrit.openafs.org/13799 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 0639ca8d221231309d59882a63e5a95a10cfdac3) - - Change-Id: I13def0fdda5911b16704ba426c4fe2df389311a2 - Reviewed-on: https://gerrit.openafs.org/15546 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit a367bed24fdc519b78e252e7a48f8d0666b1c7dd -Author: Mark Vitale -Date: Thu Jan 30 14:04:05 2020 -0500 - - dir: distinguish logical and physical errors on reads - - The directory package (src/dir) salvage routines DirOK and DirSalvage - check a global variable 'DErrno' to distinguish logical errors (e.g. - short read) from physical errors (e.g. EIO). However, since the - original IBM import, this logic has not worked correctly because there - is no longer any code that sets the value of DErrno - its value is - always zero. - - Instead, modify all implementations of ReallyRead to optionally return - the errno for low-level IO errors. - - Also, create a new userspace-only variant - DReadWithErrno() - of the - src/dir/buffer.c version of DRead (the version called by DirOK and - DirSalvage, and the only caller of ReallyRead) to return the ReallyRead - errno upon request. - - Also create an analogous variant of afs_dir_GetBlobs, - afs_dir_GetBlobsWithErrno(). - - Finally, convert DirOK and DirSalvage to use the new variants and - replace DErrno with equivalent logic. Remove all other references to - DErrno. - - Reviewed-on: https://gerrit.openafs.org/13798 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 735fa5fb090ee0efc2161597a3974f6fa45126f6) - - Change-Id: Ic7b87d1de71feb7ae741b43d534a3d94cd277125 - Reviewed-on: https://gerrit.openafs.org/15545 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit af227457d470bf8e618c63397c4429578f1c85b7 -Author: Mark Vitale -Date: Mon Mar 4 01:37:53 2019 -0500 - - afs: refactor directory checking in DRead - - Commit d566c1cf874d15ca02020894ff0af62c4e39e7bb - 'dread-do-validation-20041012' modified directory checking (in the - afs_buffer.c implementation of DRead()) to use size information passed - to DRead, rather than obtained from the cache via afs_CFileOpen. - - Because this directory checking does not require any information from - the cache buffers or the cache partition, we can make the check right - away, before searching the cache buffers or calling afs_newslot. - - To clarify and simplify, move the directory sanity checking logic to the - beginning of DRead. Remove the afs_newslot cleanup logic which is no - longer needed. - - While here, add Doxygen comments for DRead. - - Reviewed-on: https://gerrit.openafs.org/13803 Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 1aa7d3c199e77e3ebdffe9cea4dee8ee82e81fcd) + (cherry picked from commit 612927dd1dd44bbd08eda790de12b24213583156) - Change-Id: I53f4d330c5a4c44ae8619619ba9584006375bf29 - Reviewed-on: https://gerrit.openafs.org/15544 + Change-Id: Iaae28186a24c3c5ca4407de9563c8cfed9644921 + Reviewed-on: https://gerrit.openafs.org/15692 Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Kailas Zadbuke - Reviewed-by: Indira Sawant - Reviewed-by: Stephan Wiesand + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk -commit 08a90850fd792718ec5abdda172ab0214abfced6 +commit 15357006d9e8e45ac0be9e0c7e87456ee3857d90 Author: Andrew Deason -Date: Tue Feb 7 22:48:23 2023 -0600 +Date: Tue Jan 30 20:44:48 2024 -0600 - vol: Re-evaluate conditons for cond vars + roken: Declare ct_memcmp in hcrypto kernel roken.h - Most users of cond vars follow this general pattern when waiting for a - condition: + Currently, we build roken's ct.c for our kernel module to provide + ct_memcmp(). We declare a prototype for ct_memcmp() in krb5_locl.h, + and all of our kernel callers of ct_memcmp() include krb5_locl.h, so + all callers get a prototype and avoid "implicit declaration" compiler + warnings. - while (!condition) { - CV_WAIT(cv, mutex); - } + However, roken's ct.c itself does not include krb5_locl.h, so it + doesn't get a prototype for ct_memcmp(). This is dangerous, since if + the prototype ever slightly differs from the implementation for any + reason, it could cause a variety of issues. - But a few places in src/vol do this: + This also causes warnings when building against a Linux 6.8 kernel + (which sets the -Wmissing-declarations and -Wmissing-prototypes + compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - if (!condition) { - CV_WAIT(cv, mutex); - } + When building against a kernel with CONFIG_WERROR=y, the build fails. - It is important to always re-check for the relevant condition after - waiting for a CV, even if it seems like we only need to wait exactly - once, because pthread_cond_wait() is allowed to wake up its caller - spuriously even the CV hasn't been signalled. On Solaris, this can - actually happen if the calling thread is interrupted by a signal. + We cannot change ct.c, since it is an external source file. To fix + this, instead move the prototype of ct_memcmp() to our stub + kernel-only roken.h header, which is included by ct.c. Make + krb5_locl.h also include roken.h when building kernel code, so all of + the ct_memcmp() callers also get the prototype. - In VInitPreAttachVolumes() for DAFS, currently this can cause a - segfault if CV_WAIT returns while 'vq' is empty. We will try to - queue_Remove() the head of the queue itself, resulting in vq.head.next - being set to NULL, which will segfault when we try to pull the next - item off of the queue. + While we're here, add some informative comments and an include guard + to our previously-blank roken.h stub. - We generally cannot be interrupted by a signal when using opr's - softsig, because signals are only delivered to the softsig thread and - blocked in all other threads. It is technically possible to trigger - this situation on Solaris by sending the (unblockable) SIGCANCEL - signal, though this would be very unusual. + Written in collaboration with cwills@sinenomine.net. - To make sure issues like this cannot happen and to avoid weird corner - cases, adjust all of our CV waiters to wait for a CV using a while() - loop or similar pattern. Spurious wakeups may be impossible with LWP, - but just try to make all code use a similar structure to be safe. - - Thanks for mvitale@sinenomine.net for finding and investigating the - relevant issue. - - Reviewed-on: https://gerrit.openafs.org/15327 - Reviewed-by: Cheyenne Wills - Reviewed-by: Mark Vitale - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk + Reviewed-on: https://gerrit.openafs.org/15620 Tested-by: BuildBot - (cherry picked from commit 9bc06a059121207b354fdf97f65029d8c2b3df30) - - Change-Id: Ib1fdf06570e441b4a322a1e9b90ff084e07ad1fb - Reviewed-on: https://gerrit.openafs.org/15543 Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit 088a77b99ba2104ed120e1fcdaf385767c477fc8 -Author: Michael Meffie -Date: Mon Jul 18 19:17:26 2022 -0400 - - build: package ltmain.sh in the libafs_tree - - Commit 0a58d2188[1] "cf: Run AFS_LT_INIT after setting CC" moved the - location of LT_INIT (libtool initialization) to a common macro, so it is - now expanded in configure-libafs. This breaks the linux DKMS packaging, - which uses configure-libafs to build the kernel module, since the - ltmain.sh aux file is not included in the dkms package. - - For now, just include the ltmain.sh aux file in the libafs_tree files to - fix DKMS build. Later, we should restructure the autoconf macros so the - LT_INIT macro is not expanded in the configure-libafs configure script, - since we do not need libtool to build the kernel module. - - Thanks to Alex T Prengel for reporting this issue on the openafs-info - mail list. - - 1) 0a58d21881d7e91deccb416e8d2c272e14b412dd cf: Run AFS_LT_INIT after setting CC - - Reviewed-on: https://gerrit.openafs.org/15076 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 76f26c63c7fe9661dfcf267cf75638747c81b7ef) + (cherry picked from commit be236069e9d26339ed5f9939965bca0dd3f8bf4e) - Change-Id: I595811dec056b8ec4a7cf36f6f96532a1e452e4e - Reviewed-on: https://gerrit.openafs.org/15542 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit 1d5b5244a63883ada1250d38c7536bd9d3751320 -Author: Cheyenne Wills -Date: Thu Feb 17 18:32:41 2022 -0700 - - afs: Use literal NULL for NULL function pointer - - The clang compiler complains that this function pointer cast is not a - prototype. - - .../osi_file.c:141:27: error: this function declaration is not a - prototype [-Werror,-Wstrict-prototypes] - afile->proc = (int (*)())0; - ^ - void - - Just use NULL instead of trying to create a cast to 0. - - Reviewed-on: https://gerrit.openafs.org/14902 + Change-Id: I1112881938b0585263871f8f83d63b8909b12f0d + Reviewed-on: https://gerrit.openafs.org/15691 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk - (cherry picked from commit 689fb56fca57274e73c8394e8588650449565cd8) - - Change-Id: I61cf49178a80d011b0169a729c3a08e9829cddad - Reviewed-on: https://gerrit.openafs.org/15541 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand -commit d50ced2a17e05884ea18bb3dfcde6378b2531dc7 +commit 5d2c4a0a8ada4a87d7f39dc21dbce14b3b2a978f Author: Cheyenne Wills -Date: Thu Feb 17 18:27:02 2022 -0700 +Date: Fri Jan 12 15:52:57 2024 -0700 - cf: Avoid nested C functions built by autoconf + afs: Add declaration for RXAFS_ResidencyCmd() - Currently, two of the Linux-related autoconf macros try to compile code - containing nested C functions (AC_CHECK_LINUX_OPERATION and - LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID). For example, the - AC_CHECK_LINUX_OPERATION check for 'follow_link' generates this code - where 'op' is a nested function inside 'conftest': + The function RXAFS_ResidencyCmd() is 'manually' defined within the + afsint.xg, so a prototype for the function is not defined. - #include - #include - void conftest(void) - { - struct inode_operations ops; - const char *op(struct dentry *dentry, void **link_date) { - return (const char *)0; - }; - ops.follow_link = op; - } + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - Nested functions are a gcc-specific feature, and are not supported by - other compilers (e.g. clang), causing these checks to always fail when - using clang, leading to incorrect configure results. + When building against a kernel with CONFIG_WERROR=y, the build fails. - To fix this, change AC_CHECK_LINUX_OPERATION and - LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID macros to just define the - relevant function as a proper top-level function. + Add a prototype for RXAFS_ResidencyCmd - (these were discovered by forcing a clang build of both the Linux kernel - and the openafs kernel module) + There are no functional changes with this commit - Reviewed-on: https://gerrit.openafs.org/14901 + The function RXAFS_ResidencyCmd() was introduced with commit: + 'rename-residency-from-mrafs-to-osd-20090427' (8655541d1e) + + Reviewed-on: https://gerrit.openafs.org/15619 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 1d6cfbc5f627abf3808aae97afb72662301483b5) + + Change-Id: I42d0868b83e119b0c3348a3af8aaf5961c040bb2 + Reviewed-on: https://gerrit.openafs.org/15690 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk - (cherry picked from commit a4878a5e26b9997e40a3b197cea5f8c3b24f2539) - - Change-Id: Ie186658167a3f9e162fe85722aa0792cbe4fcfda - Reviewed-on: https://gerrit.openafs.org/15540 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand -commit f900670194a356cb7cc3adb43bbde2c044a6e06d +commit 73844a4939a7b8198bf11d4dcbce9e28b621bd11 Author: Cheyenne Wills -Date: Wed May 25 12:54:50 2022 -0600 +Date: Thu Feb 8 16:10:57 2024 -0700 - ukernel: Fix AFS_GUNLOCK panic in rx_ServerProc + afs: Remove afs_DbgDisconFiles() - At the beginning of UKERNEL's rx_ServerProc a call to AFS_GUNLOCK - panics with 'afs global lock not held'. + The function afs_DbgDisconFiles() is not referenced anywhere within the + source tree. - The commit 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) altered - afs_RXCallBackServer so the global lock is released prior to calling - rx_ServerProc, and to reacquire the lock after rx_ServerProc returns. + Remove the function afs_DbgDisconFiles(). - Remove the AFS_GUNLOCK at the start and the AFS_GLOCK at the end of - UKERNEL's rx_ServerProc. + The commit: 'disconnected-rw-20080922' (433afd4779) introduced + afs_DbgDisconFiles(), but the function was never used. - Reviewed-on: https://gerrit.openafs.org/14963 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 07076d63edfb9fe7a2311958e9410d5eadb227d9) + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - Change-Id: If7b0b755e693cb5d892d3300c47fbbdaf76f2f59 - Reviewed-on: https://gerrit.openafs.org/15539 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit e5d871ab40d111f943f8736ddf25064c04a371d5 -Author: Michael Meffie -Date: Thu Aug 19 12:52:30 2021 -0400 - - vlserver: Use bounded string copy in FindByName() + When building against a kernel with CONFIG_WERROR=y, the build fails. - Although the volname string passed to FindByName() is currently always - limited 65 characters (including the terminating nul), to be on the safe - side, use the bounded strlcpy() function when coping the volname to the - temporary tname local variable to avoid the possibility of overwriting - the stack with an unbounded strcpy(). - - Reviewed-on: https://gerrit.openafs.org/14763 + Reviewed-on: https://gerrit.openafs.org/15640 Tested-by: BuildBot Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 494ec08cd04da6f96be02c7dc22d9bb0c409d63b) + (cherry picked from commit 32bb90047782f41df521bba5ab4aba8b4ed34203) - Change-Id: I87b225de7d4ce81a4017f47f2d5088ebffd7c66a - Reviewed-on: https://gerrit.openafs.org/15538 + Change-Id: I61d06515845dbb18a370f7856285596514242e99 + Reviewed-on: https://gerrit.openafs.org/15689 Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit 883a1a27e6a2f062064f0b4e0440685b1a7de519 -Author: Michael Meffie -Date: Thu Aug 19 11:47:04 2021 -0400 - - bozo: Log a warning if the bosserver is not started in restricted mode - - Log a warning to the BosLog when the bosserver is not started in - restricted mode to encourage admins to enable restricted mode. - - Also, log a notice when restricted mode is enabled to reassure admins - restricted mode is enabled on start up. - - Reviewed-on: https://gerrit.openafs.org/14762 - Reviewed-by: Stephan Wiesand - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit d91b92e308dc2ac2e489581839c1fc1bf9147e16) - - Change-Id: Id35b089855797541bbc2f59982b3da7b4fab824e - Reviewed-on: https://gerrit.openafs.org/15537 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit 92ba67d5a6c62b84150de20e83af5db24e5665df -Author: Andrew Deason -Date: Fri Jul 26 15:28:44 2019 -0500 - - afs: Let afs_ShakeLooseVCaches run longer - - Currently, when afs_ShakeLooseVCaches runs osi_TryEvictVCache, we - check if osi_TryEvictVCache slept (i.e. dropped afs_xvcache/GLOCK). If - we sleep over 100 times, then we stop trying to evict vcaches and - return. - - If we have recently accessed a lot of AFS files, this limitation can - severely reduce our ability to keep our number of vcaches limited to a - reasonable size. For example: - - Say a Linux client runs a process that quickly accesses 1 million - files (a simple 'find' command) and then does nothing else. A few - minutes later, afs_ShakeLooseVCaches is run, but since all of the - newly accessed vcaches have dentries attached to them, we will sleep - on each one in order to try to prune the attached dentries. This means - that afs_ShakeLooseVCaches will evict 100 vcaches, and then return, - leaving us with still almost 1 million vcaches. This will happen - repeatedly until afs_ShakeLooseVCaches finally works its way through - all of the vcaches (which takes quite a while, if we only clear 100 at - once), or the dentries get pruned by other means (such as, if Linux - evicts them due to memory pressure). - - The limit of 100 sleeps was originally added in commit 29277d96 - (newvcache-dont-spin-20060128), but the current effect of it was - largely introduced in commit 9be76c0d (Refactor afs_NewVCache). It - exists to ensure that afs_ShakeLooseVCaches doesn't take forever to - run, but the limit of 100 sleeps may seem quite low, especially if - those 100 sleeps run very quickly. - - To avoid the situation described above, instead of limiting - afs_ShakeLooseVCaches based on a fixed number of sleeps, limit it - based on how long we've been running, and set an arbitrary limit of - roughly 3 seconds. Only check how long we've been running after 100 - sleeps like before, so we're not constantly checking the time while - running. - - Log a new warning if we exit afs_ShakeLooseVCaches prematurely if - we've been running for too long, to help indicate what is going on. - - Reviewed-on: https://gerrit.openafs.org/14254 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit cd65475e95e25c8e7071e099a682bdcc03d2cce1) - - Change-Id: I6c8e440a3c4dec5e6d769f40d9638a3edc6ad333 - Reviewed-on: https://gerrit.openafs.org/15536 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Stephan Wiesand - -commit ee32460bf2b9f226a699c7f801b597cee2c0d8cb -Author: Cheyenne Wills -Date: Thu Jan 2 11:18:16 2020 -0700 - - afs: Fix EIO error when reading a 4G or larger file - - When reading a file with a file length of >= 4G, the cache manager is - failing the read with an EIO error. - - In afs_GetDCache, the call to IsDCacheSizeOK is passed a parameter that - contains only the lower 32bits of the file length (which requires a 64 - bit value). This results in the EIO error if the length is over 2^32 -1. - - The AFSFetchStatus.Length member needs to be combined with the - AFSFetchStatus.Length_hi to obtain the full 64bit file length. - - Fix the calls to IsDCacheSizeOK to use the full 64bit file length. - - Commit "afs: Check dcache size when checking DVs - 7c60a0fba11dd24494a5f383df8bea5fdbabbdd7" - gerrit 13436 - added the - IsDCacheSizeOK function and the associated calls. - - As a note, the AFSFetchStatus.DataVersion is the lower 32 bits of the - full 64bit version number, AFSFetchStatus.dataVersionHigh contains - the high order 32bits. The function IsDCacheSizeOK is passed just the - 32bit component, the only use of the parameter is in an error message. - - Reviewed-on: https://gerrit.openafs.org/14002 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit bebae936b4ef3bf47624c0ff0baae5521bad804e) - - Change-Id: I68f3ee04af25c7e99e0795804226ba5075af0ea8 - Reviewed-on: https://gerrit.openafs.org/15535 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 652211e8d06835172e209a99ad08644eda21dab3 -Author: Andrew Deason -Date: Mon Jul 29 18:17:21 2019 -0500 - - afs: Skip IsDCacheSizeOK for CDirty/VDIR - - IsDCacheSizeOK currently can incorrectly flag a dcache as corrupted, - since the size of a dcache may not match the size of the underlying - file in a couple of RW conditions: - - - If someone is writing to a file beyond EOF, the intermediate - 'sparse' area may be populated by 0-length dcaches until the data is - written to the fileserver. - - - Directories may be modified locally instead of being fetched from - the fileserver, which can sometimes result in a directory blob of - differing sizes. - - To avoid false positives detecting dcache corruption, just skip the - IsDCacheSizeOK check for directories, and any file with pending writes - (CDirty). - - Also add some extra information to the logging messages when this - "corruption" is detected, so false positives may be more easily - detected in the future. - - Reviewed-on: https://gerrit.openafs.org/13747 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e6b97b337bc97fdb1c8e4f1a0572c62dfc82d979) - - Change-Id: I177020c37ba92d8730fe4c68ca610f1b39c3d69b - Reviewed-on: https://gerrit.openafs.org/15533 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Stephan Wiesand - -commit b46d63252b7b8575dd7a79fbd779725f63202afc -Author: Andrew Deason -Date: Thu Jan 17 16:21:25 2019 -0600 - - afs: Check dcache size when checking DVs - - Currently, if the dcache for a file has nonsensical length (due to - cache corruption or other bugs), we never notice, and we serve - obviously bad data to applications. For example, the vcache metadata - for a file may say the file is 2k bytes long, but the dcache for that - file only has 1k bytes in it (or more commonly, 0 bytes). - - This situation is easily detectable, since the dcache and vcache refer - to the same version of the same file (when the DVs match), and so we - can check if the two lengths make sense together. So to avoid giving - bad data to userspace applications, perform a sanity check on the - lengths at the same time we check for DV matches (to see if the dcache - looks "fresh" and not stale). If the lengths do not make sense - together, we just pretend that the dcache is old, and so we'll ignore - it and fetch a new copy from the fileserver. - - Also check the size of the data fetched from the fileserver for a - newly-fetched dcache in afs_GetDCache, to avoid returning a bad dcache - if the dcache isn't already present in the cache. - - Reviewed-on: https://gerrit.openafs.org/13436 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 7c60a0fba11dd24494a5f383df8bea5fdbabbdd7) - - Change-Id: I197d197f3f2eaf0473c76c60c9df842a3bed934a - Reviewed-on: https://gerrit.openafs.org/15532 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit b7ac4842a146fb4250095aa22419f5859e92dae8 -Author: Marcio Barbosa -Date: Sat Aug 11 14:00:18 2018 -0400 - - volser: warn if older version of volume is restored - - Volume restores work by overwriting vnodes with the data in the given - volume dump. If we restore a partial incremental dump from an older - version of the volume, this generally results in a partly-corrupted - volume, since directory vnodes may contain references that don't exist - in the current version of the volume (or are supposed to be in a - different directory). - - Currently, the volserver does not prevent restoring older volume data - to a volume, and this doesn't necessarily always result in corrupted - data (for instance, if we are restoring a full volume dump over an - existing volume). But restoring old volume data seems more likely to - be a mistake, since reverting a volume back to an old version, even - without corrupting data, is a strange thing to do and may cause - problems with our methods of cache consistency. - - So, log a warning when this happens, so if this is a mistake, it - doesn't happen silently. But we still do not prevent this action, since - it's possible something could be doing this intentionally. We detect - this just by checking if the updateDate in the given header is older - than the current updateDate for the volume on disk. - - Note: Restoring a full dump file (-overwrite f) will not result in - corrupted data. In this scenario, the restore operation removes the - volume on disk first (if present). After that, the dump file is - restored. In this case, we do not log anything (the volume is not - corrupted). - - Reviewed-on: https://gerrit.openafs.org/13251 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 8375a7f7dd0e3bcbf928a23f874d1a15a952cdef) - - Change-Id: Ic119b0a7b1eac5e01fabbadc0aa679d5f2617d53 - Reviewed-on: https://gerrit.openafs.org/15531 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Indira Sawant - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit 538f450033a67e251b473ff92238b3124b85fc72 -Author: Cheyenne Wills -Date: Sun Jul 9 18:45:15 2023 -0600 - - hcrypto: rename abort to _afscrypto_abort - - 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 Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk + +commit be8001f1d64a2d9da4fdaeff59fdc40e205d4526 +Author: Cheyenne Wills +Date: Thu Feb 8 12:22:13 2024 -0700 + + afs: Remove SRXAFSCB_FetchData/StoreData + + Commit 'client-64bit-file-size-support-20011031' (971b18bc42) introduced + the RPC functions SRXAFSCB_FetchData() and SRXAFSCB_StoreData with RPC + numbers of 65536 and 65537 respectively. + + Commit 'more-64bit-file-size-support-20011031' (c5b1a3775f) removed the + references from afscbint.xg, but did not remove the actual code. The + 65536 RPC number was reassigned to SRXAFSCB_GetCE64, and the commit: + 'This is mostly a rewrite of src/afs/afs_cell.c, and associated changes' + (629d08065) assigned the 65537 RPC to SRXAFSCB_GetCellByNum. + + Remove the 2 functions since there are no references other than the + prototype in afs_prototypes.h. + + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + Reviewed-on: https://gerrit.openafs.org/15639 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 379f7fc51d411990189ec28e48c91edc87d76120) + + Change-Id: I1a3539227d22e6df89d78245634dfeb14943035a + Reviewed-on: https://gerrit.openafs.org/15688 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit bb7eaafb2e87d313eeb0a7bedebe2aa7a797b005 +Author: Cheyenne Wills +Date: Fri Jan 12 08:56:31 2024 -0700 + + afs: Remove DFlushDCache() + + The function DFlushDcache() is not referenced anywhere within the + source tree. + + Remove the function DFlushDCache(). + + The commit: 'disconnected-shadow-directory-fixes-20090121' (4045f3d535) + removed the code reference to DFlushDCache() and the commit: + "dir: Prototype and function name cleanup" (5ad1e6cb90) removed the + function prototype. The function was introduced in the commit: + "disconnected-flush-before-shadowing-20090119" (e1cc987ea5). + + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + "Makefile.extrawarn: turn on missing-prototypes globally" (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Reviewed-on: https://gerrit.openafs.org/15615 + Tested-by: Benjamin Kaduk + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39) + + Change-Id: Ib8ab79c76c633632215e02235f47fdb1d744e721 + Reviewed-on: https://gerrit.openafs.org/15684 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + Reviewed-by: Benjamin Kaduk + +commit bd2828f1ab4c88b95a5d075e29a942922aa86dba +Author: Cheyenne Wills +Date: Fri Jan 12 09:28:02 2024 -0700 + + afs: Remove dummy_PSetAcl() + + The function dummy_PSetAcl() is not referenced anywhere within the + source tree. + + Remove the function dummy_PSetAcl(). + + The commit: 'doxygen-comments-20081010' (4b72f8765c) + introduced the function, but dummy_PSetAcl() has never been referenced + or defined within a header file. + + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Reviewed-on: https://gerrit.openafs.org/15618 + Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk - (cherry picked from commit c4c16890d9d2829f6bef1ef58feafb30b1d59da3) + (cherry picked from commit 05ca98687d882c72915e91430e29a4f2a36c502c) - Change-Id: I54cc9156b98320d04fe6f7bb595a150d5ba87b49 - Reviewed-on: https://gerrit.openafs.org/15523 + Change-Id: Ie4420a365e07d2d8564530e004df75330e86bea5 + Reviewed-on: https://gerrit.openafs.org/15687 Tested-by: BuildBot + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand + Reviewed-by: Benjamin Kaduk -commit 63801cfd1fc06ec3259fcfd67229f3a3c70447ed +commit cc8053e86eef75bff308e7606f2618e9fdc4ec5d Author: Cheyenne Wills -Date: Thu Jul 13 10:54:22 2023 -0600 +Date: Fri Jan 12 09:13:27 2024 -0700 - Linux 6.5: Use register_sysctl() + afs: Remove afs_osi_UnmaskUserLoop() - 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. + The function afs_osi_UnmaskUserLoop() is not referenced anywhere within + the source tree. - Add an autoconf test for the Linux function register_sysctl and add a - call to register_sysctl when available. + Remove the function afs_osi_UnmaskUserLoop(). - 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 commit: 'darwin-afsdb-handler-signal-mask-20040728' (9728182c00) + introduced the function, but afs_osi_UnmaskUserLoop() has never been + referenced or defined within a header file. - The function register_sysctl_table was marked as deprecated with the - Linux 6.3 commit: - 'proc_sysctl: enhance documentation' (1dc8689e4c) + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - Reviewed-on: https://gerrit.openafs.org/15500 + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Reviewed-on: https://gerrit.openafs.org/15617 Tested-by: BuildBot + Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk - (cherry picked from commit fb31d299e6caa015f6288ba9186da6277d3d6a8d) + (cherry picked from commit 587cfce29cb4e014e5b8d96e0433c5e7d2c6729a) - Change-Id: I60f68f1dd95c32bada7179e98250fd44d7c2ddf3 - Reviewed-on: https://gerrit.openafs.org/15522 + Change-Id: I0fe91a41e8f00773cb1d5976a8c3e39e4415f6bc + Reviewed-on: https://gerrit.openafs.org/15686 Tested-by: BuildBot + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit d15c7ab50c92671052cbe9a93b0440c81156d8aa -Author: Andrew Deason -Date: Thu Jul 18 22:56:48 2019 -0500 - - 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 + +commit 4881af8e3cf3f7d09670ba4b5bb9b644a329530d +Author: Cheyenne Wills +Date: Fri Jan 12 09:09:39 2024 -0700 + + afs: Remove afs_MemExtendEntry() + + The function afs_MemExtendEntry() is not referenced anywhere within + the source tree. + + Remove the function afs_MemExtendEntry(). + + The commit: 'memcache: add extend-entry function' (f821c7e5c8) + introduced the function, but afs_MemExtendEntry() has never been + referenced or defined within a header file. + + This function is flagged due to a missing prototype when building + against a Linux 6.8 kernel (which sets the -Wmissing-declarations and + -Wmissing-prototypes compiler flags as default). Linux 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). + + When building against a kernel with CONFIG_WERROR=y, the build fails. + + Note, afsMemExtendedEntry() was a wrapper for the function + _afs_MemExtendedEntry(), which is still used. + + Reviewed-on: https://gerrit.openafs.org/15616 Tested-by: Benjamin Kaduk - (cherry picked from commit 1b0bb8a7fcbd69d513ed30bb76fd0693d1bd3319) + Reviewed-by: Benjamin Kaduk + (cherry picked from commit eab2a4ae758876bb7547d289f936f9cfc4227cf5) - Change-Id: Ib656634ed956b845c89656069aa297253acce785 - Reviewed-on: https://gerrit.openafs.org/15521 + Change-Id: I37f241a6df33ab15249c6708d5ca820353c8b413 + Reviewed-on: https://gerrit.openafs.org/15685 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand + Reviewed-by: Benjamin Kaduk -commit fef245769366efe8694ddadd1e1f2ed5ef8608f4 +commit ef7b8c578790d84c89f09c3236f1718725770e75 Author: Cheyenne Wills -Date: Sun Jul 9 18:52:23 2023 -0600 +Date: Wed Feb 7 14:51:23 2024 -0700 - Linux 6.5: Replace generic_file_splice_read + cf: Add function prototypes for linux conftest - 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 6.8 commit: + 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f) - The Linux function 'filemap_splice_read()' was introduced with the - Linux 6.3 commits: + added the compiler flags -Wmissing-declarations and -Wmissing-prototypes + as defaults for all kernel modules builds. This change causes configure + to fail for various Linux kernel tests. - 'splice: Add a func to do a splice from a buffered file without - ITER_PIPE' (07073eb01c) - 'splice: Export filemap/direct_splice_read()' (7c8e01ebf2) + Update the template used to create the conftest.c file to provide a + function declaration for conftest(). - 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) + Use a 'static' attribute when defining functions used within tests. - 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. + Note: 2 configure tests (LINUX_INIT_WORK_AS_DATA and + LINUX_IOP_CREATE_TAKES_MODE_T) defined nested functions. Relocate the + nested functions to outside the body of conftest() to avoid compiler + errors due to nested function definitions. - 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 + Reviewed-on: https://gerrit.openafs.org/15614 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk - (cherry picked from commit 0e06eb78f293bb295b0fe12da24abd8dc1160149) + (cherry picked from commit 1440843b80e28db908bd8c264b8adbfb2c95b4d9) - Change-Id: I3b5436234d275253a37987dc40a522ae8f3cae1e - Reviewed-on: https://gerrit.openafs.org/15520 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit be21a2041972f6e612bb1717cce9714702038d77 -Author: Andrew Deason -Date: Wed Aug 26 15:41:00 2020 -0500 - - UKERNEL: Build linktest with COMMON_CFLAGS - - Currently, 'linktest' in libuafs is built with a weird custom rule - that specifies several various CFLAGS and LDFLAGS, etc. One - side-effect of this is that linktest is built without specifying -O, - even if optimization is otherwise enabled. - - Normally nobody would care about the optimization of linktest, since - it's never supposed to be run, but this can cause an error when - building with -D_FORTIFY_SOURCE=1 on some systems (such as RHEL7): - - In file included from /usr/include/sys/types.h:25:0, - from /.../src/config/afsconfig.h:1485, - from /.../src/libuafs/linktest.c:15: - /usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] - # warning _FORTIFY_SOURCE requires compiling with optimization (-O) - ^ - cc1: all warnings being treated as errors - make[3]: *** [linktest] Error 1 - - For now, to fix this just include $(COMMON_CFLAGS) in the flags we - give for linktest, so $(OPTMZ) also gets pulled in, and building - linktest gets a little closer to a normal compilation step. - - Reviewed-on: https://gerrit.openafs.org/14324 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c4f853aa00f1650b678cbd22ad1e2a9cf01c1303) - - Change-Id: I842fc630979fa98950f09326a556da1f7d1cd23b - Reviewed-on: https://gerrit.openafs.org/15519 + Change-Id: I38acb7b0cb08dec8e9bca5f3792fbf981884a74c + Reviewed-on: https://gerrit.openafs.org/15683 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 128772e328d92e1de60bb6e88677f3b0d64a0c12 -Author: Andrew Deason -Date: Thu Jul 6 15:11:23 2023 -0500 - - cf: Undef _FORTIFY_SOURCE for use-after-free check - - Commit f2003ed68c (gcc: Avoid false positive use-after-free in crypto) - added a configure check to detect whether the compiler we're using - exhibits the use-after-free warning bug. We add -O0 to CFLAGS for the - test to make sure the bug triggers for gcc 12, but if the user has - specified, for example, CFLAGS=-D_FORTIFY_SOURCE=1, this causes - the compile check to always fail: - - /usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] - # warning _FORTIFY_SOURCE requires compiling with optimization (-O) - - This causes _OPENAFS_UAF_COMPILE_IFELSE to always fail, and so we - throw an AC_MSG_ERROR during configure. - - To allow the build to continue with _FORTIFY_SOURCE, make sure - _FORTIFY_SOURCE is undefined for this specific test. The compile test - can then succeed with -O0 (unless we trigger the use-after-free bug, - of course). - - Reviewed-on: https://gerrit.openafs.org/15499 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 2e6b80e4bcdb476e95c8cff46ebaae69f092abec) - - Change-Id: Ibafe136c2d0364741f0ea2e3d823e181d7983f20 - Reviewed-on: https://gerrit.openafs.org/15518 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand -commit 03bc379df9a18b8440a26867921f36f02f8656bb +commit 05ac6149f2f7998b6110c403d26757151b8e8ffe Author: Mark Vitale -Date: Fri May 12 23:51:48 2023 -0400 +Date: Thu Mar 11 15:36:54 2021 -0500 - vol: Don't leak volume bitmaps + afs: remove dead ICL (fstrace) code - Since the original IBM code import, attach2 has set the volume's index - bitmaps to NULL in preparation for allocating and initalizing new - bitmaps. However, the volume may already have bitmaps from previous - operations, and this is much more likely with DAFS. In this case, the - old bitmaps are leaked. + The ICL code (afs/afs_icl.c) which supports fstrace includes a number of + functions that have been dead code since the original IBM code import. + Some of these seem to have been intended to support fine-grained event + tracing, but the implementation was never completed. - Instead, free any existing bitmap before allocating a new one. + Remove the dead code. No functional change is incurred by this commit. - Discovered via Solaris libumem.so.1. + Reviewed-on: https://gerrit.openafs.org/14555 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit ba58d9912cff07a6f2af7275017cf70115f1a88d) - Reviewed-on: https://gerrit.openafs.org/15428 + Change-Id: Ic0a6d5dac200e7e130fa8df66005bdaf291cf088 + Reviewed-on: https://gerrit.openafs.org/15682 Tested-by: BuildBot Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4b42b07fde2cb87ecb0f3135612a4c086227fa09) - - Change-Id: I8d67a4ef75218acc6e5852b77b90e7898e78585e - Reviewed-on: https://gerrit.openafs.org/15517 - Tested-by: BuildBot Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 3b383abaa932fe03f405571c50df4e95043d7998 -Author: Mark Vitale -Date: Fri May 12 21:25:36 2023 -0400 - - rxkad: Free memory used to check rxkad response - - Since its introduction with commit 7e4e06b87a09 "Derive DES/fcrypt - session key from other key types", rxkad_derive_des_key has failed to - free the memory associated with its HMAC context struct. - - This results in a leak of at least 352 bytes for each rxkad challenge - response processed by an OpenAFS server when using rxkad-kdf. - - Free the memory by calling HMAC_CTX_cleanup after each round of the - loop. - - Discovered via Solaris libumem.so.1. - - Reviewed-on: https://gerrit.openafs.org/15427 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - (cherry picked from commit 915c9ec007810f99a5ea8be73426fc8882f615fd) - - Change-Id: I4710c1180cdca19cc963d7409ef15e74efd51498 - Reviewed-on: https://gerrit.openafs.org/15516 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand -commit 898098e01e19970f80f60a0551252b2027246038 +commit 9f052c137d1184a783c8ac3182c3544b275484f5 Author: Andrew Deason -Date: Fri Apr 7 16:09:30 2023 -0500 +Date: Sat Jan 9 12:50:03 2021 -0600 - LINUX: Make 'fs flush*' invalidate dentry + afs: Remove SRXAFSCB_GetDE - Our 'fs flush' and related commands (flushall, flushvolume) clear the - relevant entries in the OpenAFS stat cache and data cache, which can - fix problems if the cache ever becomes incorrect for any reason. (This - can happen after bugs, repairing corrupted volumes, disaster recovery - scenarios, and similar edge cases.) + The GetDE RPC has been commented out from afscbint.xg effectively + since it was introduced, but we still define the SRXAFSCB_GetDE server + stub for it. - However, on Linux, these commands don't affect the VFS dentry cache. - If someone needs to use an 'fs flush' command to fix a problem, this - will fix the OpenAFS cache, but the Linux dcache can still be wrong. - The only way to manually flush dcache entries is to use the global - 'drop_caches' mechanism, which is a very heavweight operation, only - accessible to root. + This is useless, but also potentially dangerous, since the stub + routine just returns success, without populating the output arguments. + One of the output arguments is a string, and so if this RPC is + actually run, the rxgen-generated server code will try to xdr_string() + that string. Since we never set it to anything, this will result in + xdr_string trying to dereference a NULL pointer. - For example: + None of this actually happens currently, since the GetDE RPC is + commented out. But to avoid the above situation if it's ever + uncommented, remove the useless SRXAFSCB_GetDE function. - $ ls -l - ls: cannot access foo.1: No such file or directory - total 2 - drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir - -?????????? ? ? ? ? ? foo.1 - $ fs flush . - $ ls -l - ls: cannot access foo.1: No such file or directory - total 2 - drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir - -?????????? ? ? ? ? ? foo.1 - $ sudo sysctl -q -w vm.drop_caches=3 - $ ls -l - total 3 - drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir - -rw-rw-r--. 1 bin adeason 29 Sep 22 2022 foo.1 - - To make the 'fs flush' commands be effective in more situations, - change afs_ResetVCache() to also invalidate the dcache entries - associated with each vcache we reset. To make things simpler and - reduce locking complexity, do this by setting d_time to 0, and don't - directly run dcache-managing functions like d_invalidate or d_drop, - etc. - - The above example now becomes: - - $ ls -l - ls: cannot access foo.1: No such file or directory - total 2 - drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir - -?????????? ? ? ? ? ? foo.1 - $ fs flush . - $ ls -l - total 3 - drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir - -rw-rw-r--. 1 bin adeason 29 Sep 22 2022 foo.1 - - Reviewed-on: https://gerrit.openafs.org/15391 - Reviewed-by: Cheyenne Wills + Reviewed-on: https://gerrit.openafs.org/14488 + Tested-by: BuildBot Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit d460b616ebad763f7e480e194b2bffc28df99721) + (cherry picked from commit 444a971edc47c34efbefed6e332ee6e843ae072b) - Change-Id: I184046469c396b0421752d91c47477ebe8eaed13 - Reviewed-on: https://gerrit.openafs.org/15515 - Reviewed-by: Andrew Deason + Change-Id: I83846d79ce3143571923cb6023075620091f093d + Reviewed-on: https://gerrit.openafs.org/15681 Tested-by: BuildBot - Tested-by: Michael Meffie + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit a50282c70fb8b7acc69787e4ecfd15b95bc25dcf -Author: Michael Meffie -Date: Mon Aug 24 13:12:13 2020 -0400 - - build: Add rpm target - - Add a top-level makefile target to build RPMs for Red Hat distributions - from the currently checked out commit. The resulting rpms are placed in - the packages/rpmbuild/RPMS/ directory. - - The rpm target is intended to be a convenience for testing changes to - the rpm packaging or generating packages for local testing. - - Reviewed-on: https://gerrit.openafs.org/14114 - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 8b68f1a4e1e3ae06de0d6c5a8af60ef99cacb83a) - - Change-Id: I31fcd579d9610303cb44b4813ecaf8dd00e09e7e - Reviewed-on: https://gerrit.openafs.org/15514 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand -commit f9db82620593cf90f3cae05581a71afcd7168820 -Author: Michael Meffie -Date: Fri May 1 14:05:24 2020 -0400 - - makesrpm: Support custom version strings - - The makesrpm.pl script generates a source RPM by creating a temporary - rpmbuild workspace, populating the SOURCES and SPECS directories in that - workspace, running rpmbuild to build the source RPM, and finally copying - the resulting source RPM out of the temporary workspace. - - The name of the source RPM file created by rpmbuild depends on the - package version and release strings. Unfortunately, the format of the - source RPM file name changed around OpenAFS 1.6.0, so makesrpm.pl has - special logic to find the version string and extra code depending on the - detected OpenAFS version. - - Instead of trying to predict the name of the resulting source RPM file - from the OpenAFS version string, and having different logic for old - versions of OpenAFS, use a filename glob to find resulting source RPM - file name in the temporary rpmbuild workspace. - - Remove the major, minor, and patch level variables, which were only used - to guess the name of the resulting source RPM file name. - - Convert '-' characters to '_' in the package version and package - release, since the '-' character is reserved by rpm as a field - separator. - - While here, add the --dir option to specify the path of the generated - source RPM, and change the 'srpm' makefile target to use the new --dir - option, instead of changing the current directory before running - makesrpm.pl. Also, add a dependency on the 'dist' makefile target, - since the the source and document tarballs are required to build the - source RPM. - - Add pod documentation and add the --help (-h) option to print a brief - help message, and add the --man option to print the full man page. - - With this change, we can build a source RPM even when the .version file - in the src.tar.bz file has a custom format or was created from a - checkout of the master branch or other non-release reference. - - Reviewed-on: https://gerrit.openafs.org/14116 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 7cc6b97ad26089ecb88019468f3ef7c0222cebe1) - - Change-Id: I6f533aa4dff42c8e256fd7cf07831e0f6c0b0c63 - Reviewed-on: https://gerrit.openafs.org/15513 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 2899837875ed32015f8b1d970a1b23af52abb76b -Author: Michael Meffie -Date: Wed Mar 29 15:58:24 2017 -0400 - - bozo: Do not create client directory and symlinks - - Each time the bosserver starts, it checks for the presence of the client - configuration directory and the CellServDB and ThisCell files within it. - When not found, the bosserver creates the client cell configuration - directory. When the CellServDB and ThisCell files are not present in the - client configuration directory, the bosserver creates symlinks to the - server's CellServDB and ThisCell files. This feature of the bosserver - was a convenience when older versions of vos and pts required a client - configuration directory. - - However, modern deployments tend to use packaging, with separate client - and server packages. The client configuration directory and files in it - are typically managed by the client packaging. Currently, packagers - must work around these symlinks created by the bosserver. Additionally, - the CellServDB and ThisCell symlinks are hazardous since writing to the - client-side configuration will overwrite the server configuration. - - This commit removes the creation the client configuration directory and - the CellServDB and ThisCell symlinks during bosserver startup. This - change is intended to decouple the server from the client, help to avoid - overwriting the server configuration, and avoid requiring client artifacts - on a server. - - Reviewed-on: https://gerrit.openafs.org/12586 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c8aae4da4fcfd22c19fc9c8835960005554ac9d6) - - Change-Id: I76d24eadaecd19d21f12b8bd85eca2a4888d3e4c - Reviewed-on: https://gerrit.openafs.org/15512 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit c495c81754f35be4cfc8c06f358eec20456de76e -Author: Michael Meffie -Date: Wed Aug 31 13:41:30 2022 -0400 - - Add command fallback to server config - - Add an initialization retry in the bos, vos, and pts commands to - fallback to the server configuration directory when initialization fails - with the client configuration directory. This allows admins to run - unauthenticated bos, vos, and pts commands on servers without a client - configuration (including symlinks created by the bosserver) without - any extra command line options. - - Perform the initialization retry only when the -localauth or -config - options are not given. The bos, vos, and pts commands already use the - server configuration path when the -localauth option is given, so there - is no point in retrying the same path. The vos and pts -config option - specifies the path to be used, so we do not fallback to a different - directory when the user specifies the configuration path to be used. - - While here, change the scope of the confdir variable in vos.c from a - global to a local variable, since it is only used within the - MyBeforeProc() function. - - This change does not add a vsu_ClientInit() retry in the bos salvage - command. That command always requires authorization, so when run without - -localauth requires a token (and therefore a cache manager and client - cell configuration). - - Update the bos, vos, and pts man pages to describe this new fallback - method to lookup the configuration directory. (The AFSCONF environment - variable and .AFSCONF files are currently undocumented in the man pages. - They should be documented or removed from the code in a future change.) - - Reviewed-on: https://gerrit.openafs.org/15351 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 77eb1728331e0825ecb6fbe29db334c61b5276d0) - - Conflicts: (1.8.x does not have rxgk support) - src/ptserver/pts.c - src/volser/vos.c - - Change-Id: I1e0ffb8a074098ed6d4750d8e02cbfb8c0dbaff5 - Reviewed-on: https://gerrit.openafs.org/15511 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit c77491e189a5a8814ad001c47d428c70dfaebd20 +commit 1e1bf8ebcd3c18b05326cd7b26a471db804aeaeb Author: Andrew Deason -Date: Fri Oct 25 19:04:44 2019 -0500 +Date: Tue Jul 24 23:22:01 2018 -0500 - pts: Use cmd_AddParmAtOffset for common parms + LINUX: Minor osi_vfsop.c cleanup - Update pts to use cmd_AddParmAtOffset and symbolic constants for our - common parameters, instead of using bare literals like '16'. + - Fix the formatting on afs_mount/afs_get_sb definitions - Reviewed-on: https://gerrit.openafs.org/13946 - Reviewed-by: Cheyenne Wills + - Declare a couple of functions static that are not referenced outside + of this file + + Reviewed-on: https://gerrit.openafs.org/13282 + Tested-by: BuildBot Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit d0941e81b2f1f499cebb57d8a81d82802913d9be) + (cherry picked from commit fa15fbda0aa0c3810695d9b867d3258b60e76b7c) - Conflicts: (1.8.x does not have rxgk support) - src/ptserver/pts.c - - Change-Id: I0bc2c6038c0d7983c6364ec186aef18105b02d3a - Reviewed-on: https://gerrit.openafs.org/15510 - Tested-by: BuildBot + Change-Id: I8a32475bf2ddb9c7206aef679947021925697c5a + Reviewed-on: https://gerrit.openafs.org/15680 Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit d80485cd950929503e9a2e1464313580c021ff63 -Author: Andrew Deason -Date: Fri Jul 8 17:14:26 2022 -0500 - - viced: Verify primary host address - - Currently, h_stateVerifyHost verifies that all of the valid entries on - h->z.interface are on the host address hashtable. If we don't have a - h->z.interface, we check the primary address h->z.host/h->z.port - instead. - - But if we do have a h->z.interface, we don't check h->z.host/h->z.port - at all. Normally, the primary address should always be included in the - h->z.interface list (in a 'valid==1' entry), and so checking the - primary address is redundant. However, currently it is possible in - some edge cases for the primary address to be missing from the - hashtable and to not be listed as a valid address in h->z.interface. - In such cases, we don't flag an error or even log a warning, since we - don't check the primary address separately. (These cases are bugs, and - will be addressed in future commits.) - - To detect this case, change h_stateVerifyHost to always check - h->z.host, just like we do for the entries in h->z.interface. - - Reviewed-on: https://gerrit.openafs.org/15070 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 9d144491d94e7e19e2d710601a37045ef1ef1fdc) - - Change-Id: Icdd65c081372e1057df67401643973e1ac6f016e - Reviewed-on: https://gerrit.openafs.org/15509 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 6fc1d81eb7f8c06f5fea54403419b30b4d95fb97 -Author: Cheyenne Wills -Date: Mon Jul 3 13:14:52 2023 -0600 - - gcc: Avoid false positive use-after-free in crypto - - Due to a bug in gcc-12 and gcc-13, several warnings are generated for a - use-after-free in crypto.c, which leads to a build failure with - --enable-checking: - - src/external/heimdal/krb5/crypto.c:1157:9: error: pointer ‘p’ may be - used after ‘realloc’ [-Werror=use-after-free] - 1157 | free(p); - | ^~~~~~~ - src/external/heimdal/krb5/crypto.c:1155:20: note: call to ‘realloc’ - here - 1155 | result->data = realloc(p, sz); - | ^~~~~~~~~~~~~~ - - However, reviewing the code around these warnings shows that the - use-after-free warnings are incorrectly generated (false positive). The - documentation for realloc states that realloc will return a NULL and not - alter the storage passed if there was an error allocating and the size - passed is non-zero. - - There is a possible work-around for the false positive. One can use a - variable that is not a member of a structure to hold and test the value - returned from realloc, then update the structure member from that - variable. - - However, the code that is producing the message is in a heimdal external - file, so we cannot modify the source. So just use the compiler flag - -Wno-use-after-free to avoid the warning/error. - - Update configure to add tests for the -Wno-use-after-free flag, update - the Makefile to add the flag for CFLAGS.crypto.lo, and update CODING - for the new exception. - - Because this is an important check, only disable the warning if the - compiler exhibits this specific bug. We do this by adding specific - configure tests for the compiler bug and conditionally set a CFLAG - variable if the bug is present. - - NOTE: The false positive and work-around can be demonstrated with the - following code using gcc-12 (with -O0) or gcc-13 (not sensitive to the - optimization level): - - somestruct->somepointer = realloc(ptr, somesize); - if (somestruct->somepointer == NULL && somesize != 0) { - free(ptr); << gets flagged as use-after-free - handle enomem... - } - - However the following doesn't get flagged: - - char *tmpptr = realloc(ptr, somesize); - if (tmpptr == NULL && somesize != 0) { - free(ptr); - handle enomem... - } - somestruct->somepointer = tmpptr; - - The GCC ticket https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110501 - has been marked as confirmed. - - Reviewed-on: https://gerrit.openafs.org/15471 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - Reviewed-by: Andrew Deason - (cherry picked from commit f2003ed68c2fecf679d0b04146427258d39369ea) - - Change-Id: Ib7ae86c66f0ef1fc12d4ff4b796b712dc97e2e13 - Reviewed-on: https://gerrit.openafs.org/15508 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 6867a3e8429f37fb748575df52256227ae9e5b53 -Author: Cheyenne Wills -Date: Tue Jun 27 12:31:30 2023 -0600 - - cf: Fix cast-function-type err w/disable-checking - - If the Linux kernel has CONFIG_WERROR enabled, and openafs is configured - with --disable-checking, the libafs kernel module fails to build: - - /src/libafs/MODLOAD-5.14.0-305.el9.x86_64-MP/evp.c:501:9: - error: cast between incompatible function types from - ‘void (*)(void *)’ to ‘int (*)(EVP_MD_CTX *)’ {aka - ‘int (*)(struct hc_EVP_MD_CTX *)’} [-Werror=cast-function-type] - 501 | (hc_evp_md_init)null_Init, - | ^ - - The openafs commit: - - Linux-5.17: Kernel build uses -Wcast-function-type (6bdfa97673) - - fixed above error when the Linux kernel has CONFIG_WERROR enabled and - openafs is configured with --enable-checking. But we will still fail - when CONFIG_WERROR is enabled and openafs is configured with - --disable-checking (which is the default). - - Update osconf.m4 to always set CFLAGS_NOCAST_FUNCTION_TYPE, so that it - can be used to avoid the above compiler check even when checking is - disabled. - - NOTE: The only use of CFLAGS_NOCAST_FUNCTION_TYPE is to correct the - warnings flagged in external/heimdal/hcrypto/evp.c and evp-algs.c. - - NOTE: --enable-checking=all can be used to bypass setting the define. - - Reviewed-on: https://gerrit.openafs.org/15417 - Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk - Reviewed-by: Andrew Deason - (cherry picked from commit 2357ac6ae59ad1908b14b5e76e5931c7071ee9a2) + Reviewed-by: Benjamin Kaduk + +commit fca6fd911e493a344c040a95ea4ab820e2828802 +Author: Andrew Deason +Date: Thu Jun 28 12:50:52 2018 -0500 + + afs: Make afs_AllocDCache static - Change-Id: I96ccf89a7316449a0492d08dbfc0e625e143d933 - Reviewed-on: https://gerrit.openafs.org/15507 + Nothing using afs_AllocDCache outside of afs_dcache.c. Declare the + function static, to ensure that nobody else uses it, and to maybe + allow for more compiler optimization. + + Reviewed-on: https://gerrit.openafs.org/13226 Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit bb1b7b1adcb52a07a1bdcb0d42f8a5a366b5f4db -Author: Kailas Zadbuke -Date: Sun Apr 23 20:06:00 2023 +0530 - - afs: Check UHasTokens in afs_GCUserData + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 4ab70de9641807bd06056f0c1ac79550453b9574) - It looks that EndTimestamp holds the user’s token expiration time even after - function afs_MarkUserExpired() gets called from afs_pag_destroy(). So it - seems that the PAGs/tokens are not being reclaimed. This will lead to pag - buildup on the system. - - The PAG/'struct unixuser' is not being freed because afs_GCUserData() checks - afs_HasUsableTokens(), which checks EndTimestamp, which says the tokens still - haven't expired. So the PAG doesn't get freed. - - This behavior has existed since commit ba1d050c6e (Make unixuser's vid - advisory). - - To fix this, change afs_GCuserData() to check for the UHasTokens flag, and - ignore any tokens if UHasTokens isn't set. This causes the PAG to be freed, - since we don't look at the EndTimestamp of the tokens at all. - - Thanks Todd DeSantis for your support. - - Signed-off-by: Kailas Zadbuke - Reviewed-on: https://gerrit.openafs.org/15404 + Change-Id: I6fd9e31c4b2e862174402f731a77c91599893223 + Reviewed-on: https://gerrit.openafs.org/15679 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk - (cherry picked from commit 630d423897e5fffed1873aa9d12c4e74a8481041) - - Change-Id: I74b1ea1173df904928ad027e48b231058c1e0f1d - Reviewed-on: https://gerrit.openafs.org/15506 - Tested-by: BuildBot - Reviewed-by: Kailas Zadbuke - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand diff --git a/RELNOTES-1.8.11 b/RELNOTES-stable-1_8_x similarity index 87% rename from RELNOTES-1.8.11 rename to RELNOTES-stable-1_8_x index 9562bc5..bc345bf 100644 --- a/RELNOTES-1.8.11 +++ b/RELNOTES-stable-1_8_x @@ -1,3 +1,17 @@ +Preface: +======== + +This is the Release-Notes of the last official release. +However, +this version is based on the git branch "openafs-stable-1_8_x" +and thus has additional changes beside the ones for 1.8.11. +The reason for this is the compatibility with current Linux-Kernels. +The ChangeLog gives you all commits applied since then. +The versioning-scheme of these packages is: openafs-$LAST_OFFICIAL_RELEASE.git$DATE_OF_NEWEST_COMMIT + +The package-maintainer. + + User-Visible OpenAFS Changes OpenAFS 1.8.11 diff --git a/a14a9ad.diff b/a14a9ad.diff deleted file mode 100644 index 70eb450..0000000 --- a/a14a9ad.diff +++ /dev/null @@ -1,177 +0,0 @@ -From a14a9add73341bc3c355250bc43282e022bff95c Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Wed, 07 Feb 2024 15:25:10 -0700 -Subject: [PATCH] Linux 6.8: Add function prototypes for krb5 - -The external files for heimdal/krb5 do not provide function prototypes -in a header file that is used when building files that we use from -heimdal/krb5 (e.g. crypto.c). - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -We cannot modify the external source files, however there is the local -OpenAFS include file, krb5_locl.h, that does contain OpenAFS specific -changes. - -Add declarations to krb5_locl.h for the functions defined in the -heimdal/krb5 source. - -There are no functional changes with this commit. - -Reviewed-on: https://gerrit.openafs.org/15621 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 612927dd1dd44bbd08eda790de12b24213583156) - -Change-Id: Iaae28186a24c3c5ca4407de9563c8cfed9644921 ---- - -diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h -index 6e70673..04292ee 100644 ---- a/src/crypto/rfc3961/krb5_locl.h -+++ b/src/crypto/rfc3961/krb5_locl.h -@@ -287,6 +287,138 @@ - krb5_enctype etype, - char **string); - -+/* -+ * Unused prototypes from heimdal/krb5. These are functions that are not used -+ * outside of their compilation unit at all, but we may need to declare them to -+ * avoid compiler warnings. -+ */ -+struct _krb5_key_data; -+struct _krb5_encryption_type; -+/* heimdal/krb5/crypto.c */ -+KRB5_LIB_FUNCTION krb5_error_code _krb5_derive_key(krb5_context context, -+ struct _krb5_encryption_type *et, -+ struct _krb5_key_data *key, -+ const void *constant, -+ size_t len); -+KRB5_LIB_FUNCTION krb5_error_code krb5_allow_weak_crypto(krb5_context context, -+ krb5_boolean enable); -+KRB5_LIB_FUNCTION krb5_error_code krb5_checksum_disable(krb5_context context, -+ krb5_cksumtype type); -+KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_keyed(krb5_context context, -+ krb5_cksumtype type); -+KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_valid(krb5_context context, -+ krb5_cksumtype ctype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_create_checksum_iov(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ krb5_crypto_iov *data, -+ unsigned int num_data, -+ krb5_cksumtype *type); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getblocksize(krb5_context context, -+ krb5_crypto crypto, -+ size_t *blocksize); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getenctype(krb5_context context, -+ krb5_crypto crypto, -+ krb5_enctype *enctype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getpadsize(krb5_context context, -+ krb5_crypto crypto, -+ size_t *padsize); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length(krb5_context context, -+ krb5_crypto crypto, -+ int type, -+ size_t *len); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_length_iov(krb5_context context, -+ krb5_crypto crypto, -+ krb5_crypto_iov *data, -+ unsigned int num_data); -+KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_iov_ivec(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ krb5_crypto_iov *data, -+ unsigned int num_data, -+ void *ivec); -+KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_ivec(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ void *data, -+ size_t len, -+ krb5_data *result, -+ void *ivec); -+KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_iov_ivec(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ krb5_crypto_iov *data, -+ int num_data, -+ void *ivec); -+KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_ivec(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ const void *data, -+ size_t len, -+ krb5_data *result, -+ void *ivec); -+KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_disable(krb5_context context, -+ krb5_enctype enctype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_enable(krb5_context context, -+ krb5_enctype enctype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_enctype_to_keytype(krb5_context context, -+ krb5_enctype etype, -+ krb5_keytype *keytype); -+KRB5_LIB_FUNCTION size_t krb5_get_wrapped_length (krb5_context context, -+ krb5_crypto crypto, -+ size_t data_len); -+KRB5_LIB_FUNCTION krb5_error_code krb5_hmac(krb5_context context, -+ krb5_cksumtype cktype, -+ const void *data, -+ size_t len, -+ unsigned usage, -+ krb5_keyblock *key, -+ Checksum *result); -+KRB5_LIB_FUNCTION krb5_boolean krb5_is_enctype_weak(krb5_context context, -+ krb5_enctype enctype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_string_to_enctype(krb5_context context, -+ const char *string, -+ krb5_enctype *etype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_verify_checksum_iov(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ krb5_crypto_iov *data, -+ unsigned int num_data, -+ krb5_cksumtype *type); -+KRB5_LIB_FUNCTION krb5_error_code krb5_generate_random_keyblock(krb5_context context, -+ krb5_enctype type, -+ krb5_keyblock *key); -+KRB5_LIB_FUNCTION krb5_boolean krb5_checksum_is_collision_proof(krb5_context context, -+ krb5_cksumtype type); -+ -+KRB5_LIB_FUNCTION krb5_error_code krb5_cksumtype_to_enctype(krb5_context context, -+ krb5_cksumtype ctype, -+ krb5_enctype *etype); -+KRB5_LIB_FUNCTION krb5_error_code krb5_encrypt_EncryptedData(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ void *data, -+ size_t len, -+ int kvno, -+ EncryptedData *result); -+KRB5_LIB_FUNCTION krb5_error_code krb5_crypto_getconfoundersize(krb5_context context, -+ krb5_crypto crypto, -+ size_t *confoundersize); -+ -+KRB5_LIB_FUNCTION krb5_error_code krb5_decrypt_EncryptedData(krb5_context context, -+ krb5_crypto crypto, -+ unsigned usage, -+ const EncryptedData *e, -+ krb5_data *result); -+/* heimdal/krb5/data.c */ -+KRB5_LIB_FUNCTION krb5_error_code krb5_data_realloc(krb5_data *p, int len); -+KRB5_LIB_FUNCTION krb5_error_code krb5_copy_data(krb5_context context, -+ const krb5_data *indata, -+ krb5_data **outdata); -+KRB5_LIB_FUNCTION int krb5_data_cmp(const krb5_data *data1, const krb5_data *data2); -+/* heimdal/krb5/store-int.c */ -+KRB5_LIB_FUNCTION krb5_ssize_t _krb5_get_int(void *buffer, unsigned long *value, size_t size); -+ - #include "crypto.h" - - struct _krb5_checksum_type * _krb5_find_checksum (krb5_cksumtype); diff --git a/a87845d.diff b/a87845d.diff deleted file mode 100644 index dd92852..0000000 --- a/a87845d.diff +++ /dev/null @@ -1,99 +0,0 @@ -From a87845d40aac04ff12dde369753c9472a8e4808d Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 12 Feb 2024 09:43:29 -0700 -Subject: [PATCH] afs: Remove SRXAFSCB* protos from afs_prototypes.h - -The prototypes for the afscbint RPC functions (SRXAFSCB_*) implemented -in afs_callback.c are defined in 2 locations, afs_protypes.h and -afscbint.h (which is generated by rxgen). - -Remove the protoypes for the SRXAFSCB_* functions from afs_prototypes.h -as they are redundant and are currently out of sync (the prototypes -for SRXAFSCB_GetCellByNum() and SRXAFSCB_TellMeAboutYourself() are -not present in afs_prototypes.h). Also remove a redundant prototype for -afs_RXCallBackServer() which was prototyped both before and in the -middle of the SRXAFSCB* prototypes. - -Since afs_callback.c only pulled in afs_prototypes.h and not afscbint.h, -add an include for afscbint.h to ensure that the all the prototypes for -the SRXAFSCB_* functions are present. - -The 2 functions listed above are flagged due to missing prototypes when -building against a Linux 6.8 kernel (which sets the --Wmissing-declarations and -Wmissing-prototypes compiler flags as -default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15644 -Reviewed-by: Mark Vitale -Tested-by: Benjamin Kaduk -Reviewed-by: Benjamin Kaduk -(cherry picked from commit fae4003b403420d0b548920c7837a2d2b6e432ae) - -Change-Id: I7d435455fc60cc10200ee91d0d76534367ab5883 ---- - -diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c -index 56e8cd2..1fe990e 100644 ---- a/src/afs/afs_callback.c -+++ b/src/afs/afs_callback.c -@@ -19,6 +19,8 @@ - - #include "afs/sysincludes.h" /*Standard vendor system headers */ - #include "afsincludes.h" /*AFS-based standard headers */ -+#define FSINT_COMMON_XG -+#include "afs/afscbint.h" - #include "afs/afs_stats.h" /*Cache Manager stats */ - #include "afs/opr.h" - #include "afs/afs_args.h" -diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h -index d7894dd..b9811f8 100644 ---- a/src/afs/afs_prototypes.h -+++ b/src/afs/afs_prototypes.h -@@ -65,44 +65,7 @@ - extern struct interfaceAddr afs_cb_interface; - - extern int afs_RXCallBackServer(void); --extern int SRXAFSCB_GetCE(struct rx_call *a_call, afs_int32 a_index, -- struct AFSDBCacheEntry *a_result); --extern int SRXAFSCB_GetCE64(struct rx_call *a_call, afs_int32 a_index, -- struct AFSDBCacheEntry64 *a_result); --extern int SRXAFSCB_GetLock(struct rx_call *a_call, afs_int32 a_index, -- struct AFSDBLock *a_result); --extern int SRXAFSCB_CallBack(struct rx_call *a_call, -- struct AFSCBFids *a_fids, -- struct AFSCBs *a_callbacks); --extern int SRXAFSCB_Probe(struct rx_call *a_call); --extern int SRXAFSCB_InitCallBackState(struct rx_call *a_call); --extern int SRXAFSCB_XStatsVersion(struct rx_call *a_call, -- afs_int32 * a_versionP); --extern int SRXAFSCB_GetXStats(struct rx_call *a_call, -- afs_int32 a_clientVersionNum, -- afs_int32 a_collectionNumber, -- afs_int32 * a_srvVersionNumP, -- afs_int32 * a_timeP, AFSCB_CollData * a_dataP); --extern int afs_RXCallBackServer(void); - extern int shutdown_CB(void); --extern int SRXAFSCB_InitCallBackState2(struct rx_call *a_call, -- struct interfaceAddr *addr); --extern int SRXAFSCB_WhoAreYou(struct rx_call *a_call, -- struct interfaceAddr *addr); --extern int SRXAFSCB_InitCallBackState3(struct rx_call *a_call, -- afsUUID * a_uuid); --extern int SRXAFSCB_ProbeUuid(struct rx_call *a_call, afsUUID * a_uuid); --extern int SRXAFSCB_GetServerPrefs(struct rx_call *a_call, afs_int32 a_index, -- afs_int32 * a_srvr_addr, -- afs_int32 * a_srvr_rank); --extern int SRXAFSCB_GetCellServDB(struct rx_call *a_call, afs_int32 a_index, -- char **a_name, serverList * a_hosts); --extern int SRXAFSCB_GetLocalCell(struct rx_call *a_call, char **a_name); --extern int SRXAFSCB_GetCacheConfig(struct rx_call *a_call, -- afs_uint32 callerVersion, -- afs_uint32 * serverVersion, -- afs_uint32 * configCount, -- cacheConfig * config); - - /* afs_cbqueue.c */ - extern afs_rwlock_t afs_xcbhash; diff --git a/aae8b00.diff b/aae8b00.diff deleted file mode 100644 index b2f445c..0000000 --- a/aae8b00.diff +++ /dev/null @@ -1,53 +0,0 @@ -From aae8b00d97585b60702151c6f28ff7ec4d65c2d9 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 09:09:39 -0700 -Subject: [PATCH] afs: Remove afs_MemExtendEntry() - -The function afs_MemExtendEntry() is not referenced anywhere within -the source tree. - -Remove the function afs_MemExtendEntry(). - -The commit: 'memcache: add extend-entry function' (f821c7e5c8) -introduced the function, but afs_MemExtendEntry() has never been -referenced or defined within a header file. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Note, afsMemExtendedEntry() was a wrapper for the function -_afs_MemExtendedEntry(), which is still used. - -Reviewed-on: https://gerrit.openafs.org/15616 -Tested-by: Benjamin Kaduk -Reviewed-by: Benjamin Kaduk -(cherry picked from commit eab2a4ae758876bb7547d289f936f9cfc4227cf5) - -Change-Id: I37f241a6df33ab15249c6708d5ca820353c8b413 ---- - -diff --git a/src/afs/afs_memcache.c b/src/afs/afs_memcache.c -index 936cbe9..419083d 100644 ---- a/src/afs/afs_memcache.c -+++ b/src/afs/afs_memcache.c -@@ -302,16 +302,6 @@ - return 0; - } - --int --afs_MemExtendEntry(struct memCacheEntry *mceP, afs_uint32 size) --{ -- int code = 0; -- ObtainWriteLock(&mceP->afs_memLock, 560); -- code = _afs_MemExtendEntry(mceP, size); -- ReleaseWriteLock(&mceP->afs_memLock); -- return code; --} -- - void - shutdown_memcache(void) - { diff --git a/b77b304.diff b/b77b304.diff deleted file mode 100644 index 5bfe7d2..0000000 --- a/b77b304.diff +++ /dev/null @@ -1,47 +0,0 @@ -From b77b304bb58f472e8a9d2f3b6d47fffd38d0c905 Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Tue, 07 Dec 2021 15:43:35 -0600 -Subject: [PATCH] rxgen: Declare generated PKG_TranslateOpCode() - -Ever since commit 5c77a6ca (rxgen: add *TranslateOpcode functions to -XDR code), rxgen generates a PKG_TranslateOpCode function in the -relevant .xdr.c source, which can translate an RPC opcode into the RPC -name. But we never declare this function in a header file, making it -impossible to use without compiler warnings (unless the caller -declares the function itself). - -To make it possible to actually use this function, declare this -function in the generated header file. - -Reviewed-on: https://gerrit.openafs.org/14871 -Reviewed-by: Cheyenne Wills -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 9b2c27fc6d299cb0b23eca3e8cb25b7e0c41b11a) - -Change-Id: I2479ff7f6579769b3319b2939ffde60fe570c880 ---- - -diff --git a/src/rxgen/rpc_parse.c b/src/rxgen/rpc_parse.c -index 768e42f..59854f4 100644 ---- a/src/rxgen/rpc_parse.c -+++ b/src/rxgen/rpc_parse.c -@@ -2150,6 +2150,8 @@ - { - f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", - prefix, PackagePrefix[PackageIndex]); -+ f_print(fout,"extern char * %s%sTranslateOpCode(int op);\n", prefix, -+ PackagePrefix[PackageIndex]); - } - - static void -@@ -2161,6 +2163,8 @@ - f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", - prefix, pprefix); - f_print(fout,"\nextern int %sOpCodeIndex(int op);\n", PackagePrefix[PackageIndex]); -+ f_print(fout, "extern char * %s%sTranslateOpCode(int op);\n", -+ prefix, pprefix); - } - - void diff --git a/d1c89ac.diff b/d1c89ac.diff deleted file mode 100644 index d51f8ce..0000000 --- a/d1c89ac.diff +++ /dev/null @@ -1,89 +0,0 @@ -From d1c89acf70a794b78c5daaff206d734e36bbec6d Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Tue, 30 Jan 2024 20:44:48 -0600 -Subject: [PATCH] roken: Declare ct_memcmp in hcrypto kernel roken.h - -Currently, we build roken's ct.c for our kernel module to provide -ct_memcmp(). We declare a prototype for ct_memcmp() in krb5_locl.h, -and all of our kernel callers of ct_memcmp() include krb5_locl.h, so -all callers get a prototype and avoid "implicit declaration" compiler -warnings. - -However, roken's ct.c itself does not include krb5_locl.h, so it -doesn't get a prototype for ct_memcmp(). This is dangerous, since if -the prototype ever slightly differs from the implementation for any -reason, it could cause a variety of issues. - -This also causes warnings when building against a Linux 6.8 kernel -(which sets the -Wmissing-declarations and -Wmissing-prototypes -compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -We cannot change ct.c, since it is an external source file. To fix -this, instead move the prototype of ct_memcmp() to our stub -kernel-only roken.h header, which is included by ct.c. Make -krb5_locl.h also include roken.h when building kernel code, so all of -the ct_memcmp() callers also get the prototype. - -While we're here, add some informative comments and an include guard -to our previously-blank roken.h stub. - -Written in collaboration with cwills@sinenomine.net. - -Reviewed-on: https://gerrit.openafs.org/15620 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit be236069e9d26339ed5f9939965bca0dd3f8bf4e) - -Change-Id: I1112881938b0585263871f8f83d63b8909b12f0d ---- - -diff --git a/src/crypto/hcrypto/kernel/roken.h b/src/crypto/hcrypto/kernel/roken.h -index e69de29..f8c2334 100644 ---- a/src/crypto/hcrypto/kernel/roken.h -+++ b/src/crypto/hcrypto/kernel/roken.h -@@ -0,0 +1,17 @@ -+#ifndef OPENAFS_HCRYPTO_KERNEL_ROKEN_H -+#define OPENAFS_HCRYPTO_KERNEL_ROKEN_H -+ -+/* -+ * This is a stub roken.h used for building roken code (or roken-using code) in -+ * the kernel. For userspace code, use a real roken.h. This just contains a few -+ * prototypes of roken functions we actually use in kernel code. -+ */ -+ -+#ifndef KERNEL -+# error "This header is for kernel code only" -+#endif -+ -+/* ct.c */ -+int ct_memcmp(const void *p1, const void *p2, size_t len); -+ -+#endif /* OPENAFS_HCRYPTO_KERNEL_ROKEN_H */ -diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h -index eb279a9..6e70673 100644 ---- a/src/crypto/rfc3961/krb5_locl.h -+++ b/src/crypto/rfc3961/krb5_locl.h -@@ -5,6 +5,7 @@ - #ifdef KERNEL - - #include "config.h" -+#include - - #else - #include -@@ -285,11 +286,6 @@ - krb5_error_code krb5_enctype_to_string(krb5_context context, - krb5_enctype etype, - char **string); --#ifdef KERNEL --/* Roken provides this in userspace, but we're on our own in the kernel. */ --int ct_memcmp(const void *p1, const void *p2, size_t len); --#endif -- - - #include "crypto.h" - diff --git a/d9f3a2c.diff b/d9f3a2c.diff deleted file mode 100644 index e1a7d9a..0000000 --- a/d9f3a2c.diff +++ /dev/null @@ -1,147 +0,0 @@ -From d9f3a2c6639e694c8d6fc4ad00d6a37d6e1f9bf6 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 11 Mar 2024 09:05:33 -0600 -Subject: [PATCH] Linux 6.8: Use roken's strlcpy() in kernel module - -The Linux 6.8 commit 'string: Remove strlcpy()' (d26270061a) removed the -the strlcpy function from the Linux kernel. The replacement function, -strscpy(), cannot be used as a drop-in replacement as its currently a -Linux kernel specific function and there are differences in the returned -value. - -We can use roken's strlcpy() (provided in roken/strlcpy.c). - -Create a configure test to that defines its own strlcpy() to test -if the kernel doesn't provide one itself. Note, we need to use a -different function signature for strlcpy() from what the kernel might -have otherwise the test build succeeds when the kernel does provide a -strlcpy(). - -Update the OpenAFS kernel specific roken.h to define the prototype for -strlcpy when it's not present in the Linux kernel. We need to match the -defines used in the 'real' roken.h so the roken/strlcpy.c can build -properly. Add defines for ROKEN_LIB_FUNCTION, ROKEN_LIB_CALL and -ROKEN_LIB_VARIABLE to the kernel roken.h - -Update Linux's osi_machdep.h to include roken.h so the strlcpy protoype -is available. - -Update the Linux MakefileProto to include the strcpy-kernel object -when building the kernel module. - -Reviewed-on: https://gerrit.openafs.org/15646 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 30b18c165752e6d0ce7b6daa6a90453f5e5e6d17) - -Change-Id: I8013623e8f735d15bb7d4ac84ed0867f12b77783 ---- - -diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h -index 916a1df..263c863 100644 ---- a/src/afs/LINUX/osi_machdep.h -+++ b/src/afs/LINUX/osi_machdep.h -@@ -77,6 +77,7 @@ - #endif - - #include "afs/sysincludes.h" -+#include "roken.h" - - #if !defined(HAVE_LINUX_TIME_T) - typedef time64_t time_t; -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 7f3000f..6f9d350 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -252,6 +252,17 @@ - [inode_set_atime(NULL, 0, 0); - inode_set_mtime(NULL, 0, 0);]) - -+dnl Linux 6.8 removed the strlcpy() function. We test to see if we can redefine -+dnl a strlcpy() function. We use a totally different function signature to -+dnl to ensure that this fails when the kernel does provide strlcpy(). -+AC_CHECK_LINUX_FUNC([no_strlcpy], -+ [[#include -+ size_t strlcpy(char *d); -+ size_t strlcpy(char *d) { return strlen(d); }]], -+ [[static char buff[10]; -+ size_t s; -+ s = strlcpy(buff);]]) -+ - 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/crypto/hcrypto/kernel/roken.h b/src/crypto/hcrypto/kernel/roken.h -index f8c2334..6cb0601 100644 ---- a/src/crypto/hcrypto/kernel/roken.h -+++ b/src/crypto/hcrypto/kernel/roken.h -@@ -11,6 +11,35 @@ - # error "This header is for kernel code only" - #endif - -+/* -+ * The following function annotations are not needed when building for kernel -+ * space -+ */ -+#define ROKEN_LIB_FUNCTION -+#define ROKEN_LIB_CALL -+#define ROKEN_LIB_VARIABLE -+ -+/* -+ * Our HAVE_STRLCPY from autoconf refers to whether strlcpy() is available in -+ * userspace. Whether it's available in the kernel is another question, so -+ * override HAVE_STRLCPY here. Usually it is available (only a few cases lack -+ * it), so turn it on by default, and turn it off for a few cases below. -+ */ -+#undef HAVE_STRLCPY -+#define HAVE_STRLCPY 1 -+ -+#ifdef AFS_AIX_ENV -+# undef HAVE_STRLCPY -+#elif defined(AFS_LINUX_ENV) && defined(HAVE_LINUX_NO_STRLCPY) -+# undef HAVE_STRLCPY -+#endif -+ -+/* strlcpy.c */ -+#if defined (AFS_LINUX_ENV) && !defined(HAVE_STRLCPY) -+# define strlcpy rk_strlcpy -+ROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL strlcpy (char *, const char *, size_t); -+#endif -+ - /* ct.c */ - int ct_memcmp(const void *p1, const void *p2, size_t len); - -diff --git a/src/external/libafsdep b/src/external/libafsdep -index fb365df..9d36a30 100644 ---- a/src/external/libafsdep -+++ b/src/external/libafsdep -@@ -24,3 +24,4 @@ - heimdal/krb5/keyblock.c - heimdal/krb5/store-int.c - heimdal/roken/ct.c -+heimdal/roken/strlcpy.c -\ No newline at end of file -diff --git a/src/libafs/MakefileProto.LINUX.in b/src/libafs/MakefileProto.LINUX.in -index 8744ab8..6e62c8c 100644 ---- a/src/libafs/MakefileProto.LINUX.in -+++ b/src/libafs/MakefileProto.LINUX.in -@@ -42,7 +42,8 @@ - osi_ioctl.o \ - osi_proc.o \ - osi_vnodeops.o \ -- osi_pagecopy.o -+ osi_pagecopy.o \ -+ strlcpy-kernel.o - - AFS_OS_PAGOBJS = \ - osi_alloc.o \ -@@ -59,7 +60,8 @@ - osi_flush.o \ - - osi_ioctl.o \ -- osi_pag_module.o -+ osi_pag_module.o \ -+ strlcpy-kernel.o - - AFS_OS_NFSOBJS = - diff --git a/db91384.diff b/db91384.diff deleted file mode 100644 index 86dd034..0000000 --- a/db91384.diff +++ /dev/null @@ -1,71 +0,0 @@ -From db913849047d0ec77e735f14dbbce63652209cc1 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 08 Feb 2024 16:10:57 -0700 -Subject: [PATCH] afs: Remove afs_DbgDisconFiles() - -The function afs_DbgDisconFiles() is not referenced anywhere within the -source tree. - -Remove the function afs_DbgDisconFiles(). - -The commit: 'disconnected-rw-20080922' (433afd4779) introduced -afs_DbgDisconFiles(), but the function was never used. - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15640 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 32bb90047782f41df521bba5ab4aba8b4ed34203) - -Change-Id: I61d06515845dbb18a370f7856285596514242e99 ---- - -diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c -index 3b88585..1aaabd9 100644 ---- a/src/afs/afs_disconnected.c -+++ b/src/afs/afs_disconnected.c -@@ -1335,37 +1335,6 @@ - } - - /*! -- * Print list of disconnected files. -- * -- * \note Call with afs_DDirtyVCListLock read locked. -- */ --void --afs_DbgDisconFiles(void) --{ -- struct vcache *tvc; -- struct afs_q *q; -- int i = 0; -- -- afs_warn("List of dirty files: \n"); -- -- ObtainReadLock(&afs_disconDirtyLock); -- for (q = QPrev(&afs_disconDirty); q != &afs_disconDirty; q = QPrev(q)) { -- tvc = QEntry(q, struct vcache, dirtyq); -- -- afs_warn("Cell=%u Volume=%u VNode=%u Unique=%u\n", -- tvc->f.fid.Cell, -- tvc->f.fid.Fid.Volume, -- tvc->f.fid.Fid.Vnode, -- tvc->f.fid.Fid.Unique); -- -- i++; -- if (i >= 30) -- osi_Panic("afs_DbgDisconFiles: loop in dirty list\n"); -- } -- ReleaseReadLock(&afs_disconDirtyLock); --} -- --/*! - * Generate a fake fid for a disconnected shadow dir. - * Similar to afs_GenFakeFid, only that it uses the dhash - * to search for a uniquifier because a shadow dir lives only diff --git a/dffd0e1.diff b/dffd0e1.diff deleted file mode 100644 index 8c33471..0000000 --- a/dffd0e1.diff +++ /dev/null @@ -1,150 +0,0 @@ -From dffd0e1475f9fb346a146607335c9f9d847d4429 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 12 Feb 2024 08:59:32 -0700 -Subject: [PATCH] afs: Add afs_xioctl prototyes to afs_prototypes.h - -Several .c files have external function prototypes for the afs_xioctl -function, while the implementing files do not have the prototype. - -Move these prototypes into afs_prototypes.h so that the prototypes are -available to both the caller and the implementation. - -Because the file holding the implementation does not have a prototypes, -afs_xioctl() is being flagged when building against a Linux 6.8 kernel -(which sets the -Wmissing-declarations and -Wmissing-prototypes compiler -flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a Linux kernel with CONFIG_WERROR=y, the build -fails. - -Note that the function afs_xioctl() has platform specific -implementations. - -Reviewed-on: https://gerrit.openafs.org/15643 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 575d986aa6c18ac27ea42fb66ae8b8cb0e27fe6c) - -Change-Id: If746111fdcf6a00459f524711623d322d5fc7942 ---- - -diff --git a/src/afs/FBSD/osi_vfsops.c b/src/afs/FBSD/osi_vfsops.c -index 6044bbe..8a979db 100644 ---- a/src/afs/FBSD/osi_vfsops.c -+++ b/src/afs/FBSD/osi_vfsops.c -@@ -18,7 +18,6 @@ - int afs_pbuf_freecnt = -1; - - extern int Afs_xsetgroups(); --extern int afs_xioctl(); - - static struct syscall_helper_data afs_syscalls[] = { - { -diff --git a/src/afs/HPUX/osi_vfsops.c b/src/afs/HPUX/osi_vfsops.c -index 0ddc227..46faca7 100644 ---- a/src/afs/HPUX/osi_vfsops.c -+++ b/src/afs/HPUX/osi_vfsops.c -@@ -290,7 +290,7 @@ - - afsc_link() - { -- extern int Afs_syscall(), afs_xioctl(), Afs_xsetgroups(); -+ extern int Afs_syscall(), Afs_xsetgroups(); - - /* For now nothing special is required during AFS initialization. */ - AFS_STATCNT(afsc_link); -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 08fccb1..8aeeafa 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -613,10 +613,6 @@ - } - - --/* in afs_pioctl.c */ --extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com, -- unsigned long arg); -- - static long afs_unlocked_xioctl(struct file *fp, unsigned int com, - unsigned long arg) { - return afs_xioctl(FILE_INODE(fp), fp, com, arg); -diff --git a/src/afs/NBSD/osi_kmod.c b/src/afs/NBSD/osi_kmod.c -index f658565..eefaf56 100644 ---- a/src/afs/NBSD/osi_kmod.c -+++ b/src/afs/NBSD/osi_kmod.c -@@ -44,7 +44,6 @@ - #include "afs/afsincludes.h" /* Afs-based standard headers */ - - extern int afs3_syscall(struct lwp *, const void *, register_t *); --extern int afs_xioctl(struct lwp *, const void *, register_t *); - extern int Afs_xsetgroups(struct lwp *, const void *, register_t *); - - #if !defined(AFS_NBSD60_ENV) -diff --git a/src/afs/NBSD/osi_vfsops.c b/src/afs/NBSD/osi_vfsops.c -index 7679ff1..5032a1d 100644 ---- a/src/afs/NBSD/osi_vfsops.c -+++ b/src/afs/NBSD/osi_vfsops.c -@@ -110,7 +110,6 @@ - #ifndef AFS_NBSD60_ENV - extern int sys_lkmnosys(struct lwp *, const void *, register_t *); - extern int afs3_syscall(struct lwp *, const void *, register_t *); --extern int afs_xioctl(struct lwp *, const void *, register_t *); - extern int Afs_xsetgroups(struct lwp *, const void *, register_t *); - static int afs_badcall(struct lwp *, const void *, register_t *); - -diff --git a/src/afs/OBSD/osi_vfsops.c b/src/afs/OBSD/osi_vfsops.c -index 830906c..e772926 100644 ---- a/src/afs/OBSD/osi_vfsops.c -+++ b/src/afs/OBSD/osi_vfsops.c -@@ -108,7 +108,7 @@ - /* from /usr/src/sys/kern/vfs_subr.c */ - extern void insmntque(struct vnode *, struct mount *); - --extern int sys_lkmnosys(), afs_xioctl(), Afs_xsetgroups(); -+extern int sys_lkmnosys(), Afs_xsetgroups(); - - static int lkmid = -1; - static int afs_badcall(struct proc *p, void *xx, register_t * yy); -diff --git a/src/afs/SOLARIS/osi_vfsops.c b/src/afs/SOLARIS/osi_vfsops.c -index c6c9ddf..f3f9bd3 100644 ---- a/src/afs/SOLARIS/osi_vfsops.c -+++ b/src/afs/SOLARIS/osi_vfsops.c -@@ -389,7 +389,6 @@ - afsinit(struct vfssw *vfsswp, int fstype) - #endif - { -- extern int afs_xioctl(); - extern int afs_xsetgroups(); - - AFS_STATCNT(afsinit); -diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h -index 9b3b1af..d7894dd 100644 ---- a/src/afs/afs_prototypes.h -+++ b/src/afs/afs_prototypes.h -@@ -812,6 +812,23 @@ - extern int HandleIoctl(struct vcache *avc, afs_int32 acom, - struct afs_ioctl *adata); - -+#if defined(AFS_SUN5_ENV) -+struct afs_ioctl_sys; -+extern int afs_xioctl(struct afs_ioctl_sys *uap, rval_t *rvp); -+#elif defined(AFS_LINUX_ENV) -+extern int afs_xioctl(struct inode *ip, struct file *fp, unsigned int com, unsigned long arg); -+#elif defined(AFS_DAWRIN_ENV) & !defined(AFS_DARWIN80) -+extern int afs_xioctl(afs_proc_t *p, struct ioctl_args *uap, register_t *retval); -+#elif defined(AFS_FBSD_ENV) -+extern int afs_xioctl(struct thread *td, struct ioctl_args *uap, register_t *retval); -+#elif defined(AFS_NBSD_ENV) -+extern int afs_xioctl(afs_proc_t *p, const struct sys_ioctl_args *uap, register_t *retval); -+#elif defined(AFS_XBSD_ENV) -+extern int afs_xioctl(afs_proc_t *p, const struct ioctl_args *uap, register_t *retval); -+#elif defined(UKERNEL) -+extern int afs_xioctl(void); -+#endif -+ - - /* afs_segments.c */ - extern int afs_StoreAllSegments(struct vcache *avc, diff --git a/e0f425a.diff b/e0f425a.diff deleted file mode 100644 index a769c71..0000000 --- a/e0f425a.diff +++ /dev/null @@ -1,67 +0,0 @@ -From e0f425a3d8bccb48a69f27dff209e32cf05f4305 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Fri, 12 Jan 2024 08:56:31 -0700 -Subject: [PATCH] afs: Remove DFlushDCache() - -The function DFlushDcache() is not referenced anywhere within the -source tree. - -Remove the function DFlushDCache(). - -The commit: 'disconnected-shadow-directory-fixes-20090121' (4045f3d535) -removed the code reference to DFlushDCache() and the commit: -"dir: Prototype and function name cleanup" (5ad1e6cb90) removed the -function prototype. The function was introduced in the commit: -"disconnected-flush-before-shadowing-20090119" (e1cc987ea5). - -This function is flagged due to a missing prototype when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - "Makefile.extrawarn: turn on missing-prototypes globally" (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15615 -Tested-by: Benjamin Kaduk -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39) - -Change-Id: Ib8ab79c76c633632215e02235f47fdb1d744e721 ---- - -diff --git a/src/afs/afs_buffer.c b/src/afs/afs_buffer.c -index 5552d1c..9538c68 100644 ---- a/src/afs/afs_buffer.c -+++ b/src/afs/afs_buffer.c -@@ -516,31 +516,6 @@ - afs_CFileClose(tfile); - } - --void --DFlushDCache(struct dcache *adc) --{ -- int i; -- struct buffer *tb; -- -- ObtainReadLock(&afs_bufferLock); -- -- for (i = 0; i <= PHPAGEMASK; i++) -- for (tb = phTable[pHash(adc->index, i)]; tb; tb = tb->hashNext) -- if (tb->fid == adc->index) { -- ObtainWriteLock(&tb->lock, 701); -- tb->lockers++; -- ReleaseReadLock(&afs_bufferLock); -- if (tb->dirty) { -- DFlushBuffer(tb); -- } -- tb->lockers--; -- ReleaseWriteLock(&tb->lock); -- ObtainReadLock(&afs_bufferLock); -- } -- -- ReleaseReadLock(&afs_bufferLock); --} -- - int - DFlush(void) - { diff --git a/e157f8f.diff b/e157f8f.diff deleted file mode 100644 index 5ef0a16..0000000 --- a/e157f8f.diff +++ /dev/null @@ -1,473 +0,0 @@ -From e157f8f39bd367151f5a9264c7d4ce8bcbed08fb Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 29 Feb 2024 17:53:31 -0700 -Subject: [PATCH] afs: Add static attribute to internal functions - -When building against a Linux 6.8 kernel, functions that are missing -prototypes or declarations are flagged. - -We can add the static attribute to functions that are not referenced -outside of the file that implements them to avoid having these functions -flagged by the compiler. - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -There are no functional changes in this commit. - -Reviewed-on: https://gerrit.openafs.org/15625 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit efee796f28b53bf3ffc03186f81790c36c23c94c) - -Change-Id: I0d923a65731f825d6c190056b0ccc3d362236706 ---- - -diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c -index e8c2980..cb91ecb 100644 ---- a/src/afs/LINUX/osi_file.c -+++ b/src/afs/LINUX/osi_file.c -@@ -47,7 +47,7 @@ - #endif - - /* Old export ops: decode_fh will call back here. Accept any dentry it suggests */ --int -+static int - afs_fh_acceptable(void *context, struct dentry *dp) - { - return 1; -diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c -index fdc347d..30ac048 100644 ---- a/src/afs/LINUX/osi_module.c -+++ b/src/afs/LINUX/osi_module.c -@@ -64,7 +64,7 @@ - } - #endif - --int __init -+static int __init - afs_init(void) - { - int err; -@@ -114,7 +114,7 @@ - return 0; - } - --void __exit -+static void __exit - afs_cleanup(void) - { - afs_shutdown_pagecopy(); -diff --git a/src/afs/LINUX/osi_pag_module.c b/src/afs/LINUX/osi_pag_module.c -index e832c5a..24b938f 100644 ---- a/src/afs/LINUX/osi_pag_module.c -+++ b/src/afs/LINUX/osi_pag_module.c -@@ -58,7 +58,7 @@ - struct user_namespace *afs_ns; - #endif - --int __init -+static int __init - afspag_init(void) - { - #if !defined(EXPORTED_PROC_ROOT_FS) -@@ -90,7 +90,7 @@ - return 0; - } - --void __exit -+static void __exit - afspag_cleanup(void) - { - #if !defined(EXPORTED_PROC_ROOT_FS) -diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c -index ba78bce..4ac63b1 100644 ---- a/src/afs/afs_call.c -+++ b/src/afs/afs_call.c -@@ -267,7 +267,7 @@ - } - } - --void -+static void - afs_DaemonOp(long parm, long parm2, long parm3, long parm4, long parm5, - long parm6) - { -@@ -436,7 +436,7 @@ - return 0; - } - --void -+static void - # if defined(AFS_LINUX_ENV) && !defined(INIT_WORK_HAS_DATA) - afsd_launcher(struct work_struct *work) - # else -@@ -457,7 +457,7 @@ - # endif /* !HAVE_LINUX_KTHREAD_RUN */ - } - --void -+static void - afs_DaemonOp(long parm, long parm2, long parm3, long parm4, long parm5, - long parm6) - { -diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c -index 1aaabd9..03ff90f 100644 ---- a/src/afs/afs_disconnected.c -+++ b/src/afs/afs_disconnected.c -@@ -102,7 +102,7 @@ - * - * \return Mask of operations. - */ --int -+static int - afs_GenStoreStatus(struct vcache *avc, struct AFSStoreStatus *astat) - { - if (!avc || !astat || !avc->f.ddirty_flags) -@@ -157,7 +157,7 @@ - * - * \return 0 on success, -1 on failure - */ --int -+static int - afs_GetParentDirFid(struct vcache *avc, struct VenusFid *afid) - { - struct dcache *tdc; -@@ -234,7 +234,7 @@ - * \param deleted Has this file been deleted? If yes, use the shadow - * dir for looking up the name. - */ --int -+static int - afs_GetVnodeName(struct vcache *avc, struct VenusFid *afid, char *aname, - int deleted) - { -@@ -358,7 +358,7 @@ - * - * \note afs_DDirtyVCListLock must be write locked. - */ --int -+static int - afs_CheckDeletedChildren(struct vcache *avc) - { - struct dcache *tdc; -@@ -452,7 +452,7 @@ - * \param old_fid The current dir's fid. - * \param new_fid The new dir's fid. - */ --void -+static void - afs_FixChildrenFids(struct VenusFid *old_fid, struct VenusFid *new_fid) - { - struct dcache *tdc; -@@ -499,7 +499,7 @@ - * be deferred to later in the resync process - */ - --int -+static int - afs_GetParentVCache(struct vcache *avc, int deleted, struct VenusFid *afid, - char *aname, struct vcache **adp) - { -@@ -548,7 +548,7 @@ - * - Get the new name from the current dir. - * - Old dir fid and new dir fid are collected along the way. - * */ --int -+static int - afs_ProcessOpRename(struct vcache *avc, struct vrequest *areq) - { - struct VenusFid old_pdir_fid, new_pdir_fid; -@@ -651,7 +651,7 @@ - * - Handle errors. - * - Reorder vhash and dcaches in their hashes, using the newly acquired fid. - */ --int -+static int - afs_ProcessOpCreate(struct vcache *avc, struct vrequest *areq, - afs_ucred_t *acred) - { -@@ -921,7 +921,7 @@ - * - * \note avc must be write locked. - */ --int -+static int - afs_ProcessOpRemove(struct vcache *avc, struct vrequest *areq) - { - char *tname = NULL; -@@ -1022,7 +1022,7 @@ - * - * \return 0 for success. On failure, other error codes. - */ --int -+static int - afs_SendChanges(struct vcache *avc, struct vrequest *areq) - { - struct afs_conn *tc; -diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c -index 63b370d..97d0671 100644 ---- a/src/afs/afs_fetchstore.c -+++ b/src/afs/afs_fetchstore.c -@@ -77,14 +77,14 @@ - - - --afs_int32 -+static afs_int32 - rxfs_storeUfsPrepare(void *r, afs_uint32 size, afs_uint32 *tlen) - { - *tlen = (size > AFS_LRALLOCSIZ ? AFS_LRALLOCSIZ : size); - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storeMemPrepare(void *r, afs_uint32 size, afs_uint32 *tlen) - { - afs_int32 code; -@@ -105,7 +105,7 @@ - return code; - } - --afs_int32 -+static afs_int32 - rxfs_storeUfsRead(void *r, struct osi_file *tfile, afs_uint32 offset, - afs_uint32 tlen, afs_uint32 *bytesread) - { -@@ -126,7 +126,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storeMemRead(void *r, struct osi_file *tfile, afs_uint32 offset, - afs_uint32 tlen, afs_uint32 *bytesread) - { -@@ -142,7 +142,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storeMemWrite(void *r, afs_uint32 l, afs_uint32 *byteswritten) - { - afs_int32 code; -@@ -159,7 +159,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storeUfsWrite(void *r, afs_uint32 l, afs_uint32 *byteswritten) - { - afs_int32 code; -@@ -179,7 +179,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storePadd(void *rock, afs_uint32 size) - { - afs_int32 code = 0; -@@ -203,7 +203,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_storeStatus(void *rock) - { - struct rxfs_storeVariables *v = (struct rxfs_storeVariables *)rock; -@@ -213,7 +213,7 @@ - return 1; - } - --afs_int32 -+static afs_int32 - rxfs_storeClose(void *r, struct AFSFetchStatus *OutStatus, int *doProcessFS) - { - afs_int32 code; -@@ -236,7 +236,7 @@ - return code; - } - --afs_int32 -+static afs_int32 - rxfs_storeDestroy(void **r, afs_int32 code) - { - struct rxfs_storeVariables *v = (struct rxfs_storeVariables *)*r; -@@ -255,7 +255,7 @@ - return code; - } - --afs_int32 -+static afs_int32 - afs_GenericStoreProc(struct storeOps *ops, void *rock, - struct dcache *tdc, int *shouldwake, - afs_size_t *bytesXferred) -@@ -353,7 +353,7 @@ - #endif - }; - --afs_int32 -+static afs_int32 - rxfs_storeInit(struct vcache *avc, struct afs_conn *tc, - struct rx_connection *rxconn, afs_size_t base, - afs_size_t bytes, afs_size_t length, -@@ -437,7 +437,7 @@ - * \param ops pointer to the block of storeOps to be used for this operation - * \param rock pointer to the opaque protocol-specific data of this operation - */ --afs_int32 -+static afs_int32 - afs_CacheStoreDCaches(struct vcache *avc, struct dcache **dclist, - afs_size_t bytes, afs_hyper_t *anewDV, int *doProcessFS, - struct AFSFetchStatus *OutStatus, afs_uint32 nchunks, -@@ -720,7 +720,7 @@ - afs_int32 iovmax; - }; - --afs_int32 -+static afs_int32 - rxfs_fetchUfsRead(void *r, afs_uint32 size, afs_uint32 *bytesread) - { - afs_int32 code; -@@ -738,7 +738,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_fetchMemRead(void *r, afs_uint32 tlen, afs_uint32 *bytesread) - { - afs_int32 code; -@@ -755,7 +755,7 @@ - } - - --afs_int32 -+static afs_int32 - rxfs_fetchMemWrite(void *r, struct osi_file *fP, afs_uint32 offset, - afs_uint32 tlen, afs_uint32 *byteswritten) - { -@@ -771,7 +771,7 @@ - return 0; - } - --afs_int32 -+static afs_int32 - rxfs_fetchUfsWrite(void *r, struct osi_file *fP, afs_uint32 offset, - afs_uint32 tlen, afs_uint32 *byteswritten) - { -@@ -787,7 +787,7 @@ - } - - --afs_int32 -+static afs_int32 - rxfs_fetchClose(void *r, struct vcache *avc, struct dcache * adc, - struct afs_FetchOutput *o) - { -@@ -814,7 +814,7 @@ - return code; - } - --afs_int32 -+static afs_int32 - rxfs_fetchDestroy(void **r, afs_int32 code) - { - struct rxfs_fetchVariables *v = (struct rxfs_fetchVariables *)*r; -@@ -833,7 +833,7 @@ - return code; - } - --afs_int32 -+static afs_int32 - rxfs_fetchMore(void *r, afs_int32 *length, afs_uint32 *moredata) - { - afs_int32 code; -@@ -882,7 +882,7 @@ - rxfs_fetchDestroy - }; - --afs_int32 -+static afs_int32 - rxfs_fetchInit(struct afs_conn *tc, struct rx_connection *rxconn, - struct vcache *avc, afs_offs_t base, - afs_uint32 size, afs_int32 *alength, struct dcache *adc, -diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c -index 42b4a0c..08a1660 100644 ---- a/src/afs/afs_icl.c -+++ b/src/afs/afs_icl.c -@@ -34,7 +34,7 @@ - int afs_icl_inited = 0; - - /* init function, called once, under afs_icl_lock */ --int -+static int - afs_icl_Init(void) - { - afs_icl_inited = 1; -@@ -539,7 +539,7 @@ - #endif - - --void -+static void - afs_icl_AppendOne(struct afs_icl_log *logp, int type, long parm) - { - if (type) { -diff --git a/src/afs/afs_pag_cred.c b/src/afs/afs_pag_cred.c -index 3dce854..e77cf8a 100644 ---- a/src/afs/afs_pag_cred.c -+++ b/src/afs/afs_pag_cred.c -@@ -32,7 +32,7 @@ - static struct afspag_cell *primary_cell = 0; - - --struct afspag_cell * -+static struct afspag_cell * - afspag_GetCell(char *acell) - { - struct afspag_cell *tcell; -@@ -66,7 +66,7 @@ - } - - --struct afspag_cell * -+static struct afspag_cell * - afspag_GetPrimaryCell(void) - { - struct afspag_cell *tcell; -diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c -index 3674eff..9d2d93c 100644 ---- a/src/afs/afs_server.c -+++ b/src/afs/afs_server.c -@@ -556,7 +556,7 @@ - } - } - --void -+static void - CkSrv_GetCaps(int nconns, struct rx_connection **rxconns, - struct afs_conn **conns) - { -diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c -index e72b45e..f500b65 100644 ---- a/src/afs/afs_vcache.c -+++ b/src/afs/afs_vcache.c -@@ -727,7 +727,7 @@ - #endif - } - --void -+static void - afs_PostPopulateVCache(struct vcache *avc, struct VenusFid *afid, int seq) - { - /* diff --git a/e428053.diff b/e428053.diff deleted file mode 100644 index 6161fb6..0000000 --- a/e428053.diff +++ /dev/null @@ -1,65 +0,0 @@ -From e428053b5bc1250fdcc3ed8ac52ee798d96ad284 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Tue, 05 Mar 2024 07:40:08 -0700 -Subject: [PATCH] rxgen: Declare generated PKG_OpCodeStats() - -The function {PKG}_OpCodeStats() is generated by rxgen, however a -prototype for the function is not generated. - -The functions h_ProcMainBody_setup() and h_HeadofOldStyleProc_setup() -in rpc_parse.c emit prototypes for {PKG}_ExecuteRequest() and -{PKG}_TranslateOpCode(), but do not emit a prototype for -{PKG}_OpCodeStats(). - -Update rxgen to emit a function prototype for {PKG}_OpCodeStats() in the -generated header file. - -Use a variable to point to "PackagePrefix[PackageIndex]" in -h_ProcMainBody_setup to improve readability. - -{PKG}_OpCodeStats(), specifically RXSTATS_OpCodeStats(), is flagged due -to a missing prototype when building against a Linux 6.8 kernel (which -sets the -Wmissing-declarations and -Wmissing-prototypes compiler flags -as default). Linux 6.8 commit: 'Makefile.extrawarn: turn on -missing-prototypes globally' (0fcb70851f). When building against a -kernel with CONFIG_WERROR=y, the build fails. - -Reviewed-on: https://gerrit.openafs.org/15631 -Tested-by: BuildBot -Reviewed-by: Mark Vitale -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 26bb4d143b31ba027cf2721ac731df67a174c43b) - -Change-Id: I9072d22d142b5b7a2f59b0cfc4026066ef1d9501 ---- - -diff --git a/src/rxgen/rpc_parse.c b/src/rxgen/rpc_parse.c -index 59854f4..e648a66 100644 ---- a/src/rxgen/rpc_parse.c -+++ b/src/rxgen/rpc_parse.c -@@ -2148,10 +2148,14 @@ - static void - h_ProcMainBody_setup(void) - { -+ char *pprefix = PackagePrefix[PackageIndex]; - f_print(fout,"\nextern int %s%sExecuteRequest(struct rx_call *);\n", -- prefix, PackagePrefix[PackageIndex]); -+ prefix, pprefix); - f_print(fout,"extern char * %s%sTranslateOpCode(int op);\n", prefix, -- PackagePrefix[PackageIndex]); -+ pprefix); -+ f_print(fout,"extern struct %s%sstats *%s%sOpCodeStats(int op);\n", -+ prefix, pprefix, -+ prefix, pprefix); - } - - static void -@@ -2165,6 +2169,8 @@ - f_print(fout,"\nextern int %sOpCodeIndex(int op);\n", PackagePrefix[PackageIndex]); - f_print(fout, "extern char * %s%sTranslateOpCode(int op);\n", - prefix, pprefix); -+ f_print(fout, "extern struct %s%sstats *%s%sOpCodeStats(int op);\n", -+ prefix, pprefix, prefix, pprefix); - } - - void diff --git a/ef7b8c5.diff b/ef7b8c5.diff deleted file mode 100644 index 209a4e5..0000000 --- a/ef7b8c5.diff +++ /dev/null @@ -1,107 +0,0 @@ -From ef7b8c578790d84c89f09c3236f1718725770e75 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Wed, 07 Feb 2024 14:51:23 -0700 -Subject: [PATCH] cf: Add function prototypes for linux conftest - -The Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f) - -added the compiler flags -Wmissing-declarations and -Wmissing-prototypes -as defaults for all kernel modules builds. This change causes configure -to fail for various Linux kernel tests. - -Update the template used to create the conftest.c file to provide a -function declaration for conftest(). - -Use a 'static' attribute when defining functions used within tests. - -Note: 2 configure tests (LINUX_INIT_WORK_AS_DATA and -LINUX_IOP_CREATE_TAKES_MODE_T) defined nested functions. Relocate the -nested functions to outside the body of conftest() to avoid compiler -errors due to nested function definitions. - -Reviewed-on: https://gerrit.openafs.org/15614 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 1440843b80e28db908bd8c264b8adbfb2c95b4d9) - -Change-Id: I38acb7b0cb08dec8e9bca5f3792fbf981884a74c -Reviewed-on: https://gerrit.openafs.org/15683 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Benjamin Kaduk ---- - -diff --git a/src/cf/linux-test1.m4 b/src/cf/linux-test1.m4 -index 7bb5a67..010a446 100644 ---- a/src/cf/linux-test1.m4 -+++ b/src/cf/linux-test1.m4 -@@ -16,7 +16,7 @@ - /* end confdefs.h */ - #include - $1 -- -+void conftest(void); - void conftest(void) - { - $2 -@@ -201,7 +201,7 @@ - CPPFLAGS="$CPPFLAGS -Werror" - AC_TRY_KBUILD( - [$4 -- $5 op($6) { return ($5)0; };], -+ static $5 op($6) { return ($5)0; };], - [static struct $1 ops; ops.$2 = op;], - AS_VAR_SET([ac_linux_operation], [yes]), - AS_VAR_SET([ac_linux_operation], [no])) -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 3596b6a..7889c90 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -400,9 +400,9 @@ - AC_CHECK_LINUX_BUILD([whether INIT_WORK has a _data argument], - [ac_cv_linux_init_work_has_data], - [#include --#include ], --[ --void f(struct work_struct *w) {} -+#include -+static void f(struct work_struct *w) {}], -+[ - struct work_struct *w; - int *i; - INIT_WORK(w,f,i);], -@@ -493,7 +493,7 @@ - AC_CHECK_LINUX_BUILD([whether kmem_cache_create constructor takes a void pointer], - [ac_cv_linux_kmem_cache_create_ctor_takes_void], - [#include -- void _ctor(void *v) { };], -+ static void _ctor(void *v) { };], - [kmem_cache_create(NULL, 0, 0, 0, _ctor);], - [KMEM_CACHE_CTOR_TAKES_VOID], - [define if kmem_cache_create constructor takes a single void ptr], -@@ -667,7 +667,7 @@ - AC_CHECK_LINUX_BUILD([whether 4.11+ inode.i_op->getattr takes a struct path argument], - [ac_cv_linux_iop_getattr_takes_path_struct], - [#include -- int _getattr(const struct path *path, struct kstat *stat, u32 request_mask, -+ static int _getattr(const struct path *path, struct kstat *stat, u32 request_mask, - unsigned int sync_mode) {return 0;}; - struct inode_operations _i_ops;], - [_i_ops.getattr = _getattr;], -@@ -692,10 +692,10 @@ - AC_DEFUN([LINUX_IOP_CREATE_TAKES_UMODE_T], [ - AC_CHECK_LINUX_BUILD([whether inode.i_op->create takes a umode_t argument], - [ac_cv_linux_iop_create_takes_umode_t], -- [#include ], -+ [#include -+ static int _create(struct inode *i, struct dentry *d, umode_t m, struct nameidata *n) -+ {return 0;};], - [static struct inode_operations _i_ops; -- int _create(struct inode *i, struct dentry *d, umode_t m, struct nameidata *n) -- {return 0;}; - _i_ops.create = _create;], - [IOP_CREATE_TAKES_UMODE_T], - [define if inode.i_op->create takes a umode_t argument], diff --git a/f5bafb0.diff b/f5bafb0.diff deleted file mode 100644 index 2a794a4..0000000 --- a/f5bafb0.diff +++ /dev/null @@ -1,78 +0,0 @@ -From f5bafb0680a063d710b6e5e8ccf833f1dd371896 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Wed, 07 Feb 2024 19:34:29 -0700 -Subject: [PATCH] rx: Add function prototypes to rx_prototypes.h - -The prototype for rxk_NewSocketHost() is not in a header file, but is -defined in the referencing .c file. The ARCH/rx_knet.c files that -implement rxk_NewSocketHost() do not have a prototype (but when the -rx_kcommon.c implementation is used it does have a prototype, since -rx_kcommon.c is the "referencing .c file"). - -Add the prototype for rxk_NewSocketHost() to rx_prototypes.h and -remove the prototype from rx_kcommon.c - -The prototypes for the functions rx_DebugOnOff() and rx_StatsOnOff() -are defined within rx_prototypes.h, but are within a preprocessor -conditional for AFS_NT40_ENV, however the implementation for these -2 functions do not have the preprocessor conditional. - -Rearrange the prototypes for rx_DebugOnOff() and rx_StatsOnOff() so they -are outside the AFS_NT40_ENV preprocessor conditional. - -These functions are flagged due to missing prototypes when building -against a Linux 6.8 kernel (which sets the -Wmissing-declarations and --Wmissing-prototypes compiler flags as default). Linux 6.8 commit: - 'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f). - -When building against a kernel with CONFIG_WERROR=y, the build fails. - -There are no functional changes in this commit. - -Reviewed-on: https://gerrit.openafs.org/15624 -Reviewed-by: Mark Vitale -Reviewed-by: Cheyenne Wills -Tested-by: Benjamin Kaduk -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 8528c36b96fe2935f42188caabf4feed0d5dbcbd) - -Change-Id: Ieae8be7f89f5c675c6580d8cfb02ea77ce4088f7 ---- - -diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c -index b6a069c..c90df3d 100644 ---- a/src/rx/rx_kcommon.c -+++ b/src/rx/rx_kcommon.c -@@ -33,7 +33,6 @@ - int (*rxk_GetPacketProc) (struct rx_packet **ahandle, int asize); - #endif - --osi_socket *rxk_NewSocketHost(afs_uint32 ahost, short aport); - extern struct interfaceAddr afs_cb_interface; - - rxk_ports_t rxk_ports; -diff --git a/src/rx/rx_prototypes.h b/src/rx/rx_prototypes.h -index 87a1049..6e1ae56 100644 ---- a/src/rx/rx_prototypes.h -+++ b/src/rx/rx_prototypes.h -@@ -24,9 +24,10 @@ - - extern int rx_Init(u_int port); - extern int rx_InitHost(u_int host, u_int port); --#ifdef AFS_NT40_ENV -+ - extern void rx_DebugOnOff(int on); - extern void rx_StatsOnOff(int on); -+#ifdef AFS_NT40_ENV - extern void rx_StartClientThread(void); - #endif - extern void rx_StartServer(int donateMe); -@@ -332,6 +333,8 @@ - extern void rxk_init(void); - # endif - -+extern osi_socket *rxk_NewSocketHost(afs_uint32 ahost, short aport); -+ - /* UKERNEL/rx_knet.c */ - # ifdef UKERNEL - extern void afs_rxevent_daemon(void); diff --git a/fca6fd9.diff b/fca6fd9.diff deleted file mode 100644 index 1e79724..0000000 --- a/fca6fd9.diff +++ /dev/null @@ -1,35 +0,0 @@ -From fca6fd911e493a344c040a95ea4ab820e2828802 Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Thu, 28 Jun 2018 12:50:52 -0500 -Subject: [PATCH] afs: Make afs_AllocDCache static - -Nothing using afs_AllocDCache outside of afs_dcache.c. Declare the -function static, to ensure that nobody else uses it, and to maybe -allow for more compiler optimization. - -Reviewed-on: https://gerrit.openafs.org/13226 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 4ab70de9641807bd06056f0c1ac79550453b9574) - -Change-Id: I6fd9e31c4b2e862174402f731a77c91599893223 -Reviewed-on: https://gerrit.openafs.org/15679 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Benjamin Kaduk ---- - -diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c -index 3572f2f..46d0bdb 100644 ---- a/src/afs/afs_dcache.c -+++ b/src/afs/afs_dcache.c -@@ -1674,7 +1674,7 @@ - * - * \return The new dcache. - */ --struct dcache * -+static struct dcache * - afs_AllocDCache(struct vcache *avc, afs_int32 chunk, afs_int32 lock, - struct VenusFid *ashFid) - { diff --git a/openafs-1.8.11-doc.tar.bz2 b/openafs-1.8.11-doc.tar.bz2 deleted file mode 100644 index d3b140c..0000000 --- a/openafs-1.8.11-doc.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3ac6ab3f9d93d55de17757903b0493fc9020f1e0402ea319e61208b3900b607c -size 3779721 diff --git a/openafs-1.8.11-doc.tar.bz2.md5 b/openafs-1.8.11-doc.tar.bz2.md5 deleted file mode 100644 index 083699e..0000000 --- a/openafs-1.8.11-doc.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -174eef8826e76cc5cc952185659e59d3 ../1.8.11/openafs-1.8.11-doc.tar.bz2 diff --git a/openafs-1.8.11-doc.tar.bz2.sha256 b/openafs-1.8.11-doc.tar.bz2.sha256 deleted file mode 100644 index 715fbaf..0000000 --- a/openafs-1.8.11-doc.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -3ac6ab3f9d93d55de17757903b0493fc9020f1e0402ea319e61208b3900b607c openafs-1.8.11-doc.tar.bz2 diff --git a/openafs-1.8.11-src.tar.bz2 b/openafs-1.8.11-src.tar.bz2 deleted file mode 100644 index c5597a6..0000000 --- a/openafs-1.8.11-src.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2efb4710996b7d23198b53c56295a8f9e24e8a555317c5fc63b8125a3714ecd -size 15042304 diff --git a/openafs-1.8.11-src.tar.bz2.md5 b/openafs-1.8.11-src.tar.bz2.md5 deleted file mode 100644 index 71a9c11..0000000 --- a/openafs-1.8.11-src.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -0739265979a6a9ea4309c610222cff35 ../1.8.11/openafs-1.8.11-src.tar.bz2 diff --git a/openafs-1.8.11-src.tar.bz2.sha256 b/openafs-1.8.11-src.tar.bz2.sha256 deleted file mode 100644 index 0f4c078..0000000 --- a/openafs-1.8.11-src.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -e2efb4710996b7d23198b53c56295a8f9e24e8a555317c5fc63b8125a3714ecd openafs-1.8.11-src.tar.bz2 diff --git a/openafs-stable-1_8_x-doc.tar.bz2 b/openafs-stable-1_8_x-doc.tar.bz2 new file mode 100644 index 0000000..dbafd7d --- /dev/null +++ b/openafs-stable-1_8_x-doc.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7a53059a4ce55ffe17b1e3d4f3ff3f0a16aa6e0121bbd3c76a581352dc94987 +size 3374716 diff --git a/openafs-stable-1_8_x-doc.tar.bz2.md5 b/openafs-stable-1_8_x-doc.tar.bz2.md5 new file mode 100644 index 0000000..b7d68ed --- /dev/null +++ b/openafs-stable-1_8_x-doc.tar.bz2.md5 @@ -0,0 +1 @@ +d2a566c33aaf8d3ab7c8e4c15558f90e /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 diff --git a/openafs-stable-1_8_x-doc.tar.bz2.sha256 b/openafs-stable-1_8_x-doc.tar.bz2.sha256 new file mode 100644 index 0000000..14f8ddb --- /dev/null +++ b/openafs-stable-1_8_x-doc.tar.bz2.sha256 @@ -0,0 +1 @@ +f7a53059a4ce55ffe17b1e3d4f3ff3f0a16aa6e0121bbd3c76a581352dc94987 /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 diff --git a/openafs-stable-1_8_x-src.tar.bz2 b/openafs-stable-1_8_x-src.tar.bz2 new file mode 100644 index 0000000..ca41d2b --- /dev/null +++ b/openafs-stable-1_8_x-src.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989dcdce5c9bf3c5de42fc5a9856a500634c48483d652567af9916d082dc9d27 +size 14547626 diff --git a/openafs-stable-1_8_x-src.tar.bz2.md5 b/openafs-stable-1_8_x-src.tar.bz2.md5 new file mode 100644 index 0000000..ff05207 --- /dev/null +++ b/openafs-stable-1_8_x-src.tar.bz2.md5 @@ -0,0 +1 @@ +a6123d9cb9a85943c8604d76980cdb2c /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 diff --git a/openafs-stable-1_8_x-src.tar.bz2.sha256 b/openafs-stable-1_8_x-src.tar.bz2.sha256 new file mode 100644 index 0000000..ed622d7 --- /dev/null +++ b/openafs-stable-1_8_x-src.tar.bz2.sha256 @@ -0,0 +1 @@ +989dcdce5c9bf3c5de42fc5a9856a500634c48483d652567af9916d082dc9d27 /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 diff --git a/openafs.changes b/openafs.changes index 8c916c5..baf1414 100644 --- a/openafs.changes +++ b/openafs.changes @@ -1,38 +1,11 @@ ------------------------------------------------------------------- -Thu Apr 18 09:16:44 UTC 2024 - Christof Hanke +Fri Jun 14 05:47:03 UTC 2024 - Christof Hanke -- update to openafs-1.8.11 -- apply upstream patches for kernel 6.8 - * 056a7a8.diff - * 05ac614.diff - * 073adec.diff - * 0d9f6cf.diff - * 0e983a9.diff - * 112fb94.diff - * 1e1bf8e.diff - * 2056ce8.diff - * 5312d06.diff - * 67e48c8.diff - * 6b20756.diff - * 743d72f.diff - * 7cae97b.diff - * 81b910a.diff - * 87ab04a.diff - * 9f052c1.diff - * a14a9ad.diff - * a87845d.diff - * aae8b00.diff - * b77b304.diff - * d1c89ac.diff - * d9f3a2c.diff - * db91384.diff - * dffd0e1.diff - * e0f425a.diff - * e157f8f.diff - * e428053.diff - * ef7b8c5.diff - * f5bafb0.diff - * fca6fd9.diff +- change source-code base to git branch stable-1_8_x + * required for keeping up with Linux kernel development. +- new versioning scheme: openafs-$LAST_OFFICIAL_RELEASE.git$DATE_OF_NEWEST_COMMIT +- add note in RELNOTES about this change +- update ChangeLog from git ------------------------------------------------------------------- Mon Feb 26 12:45:02 UTC 2024 - Dominique Leuenberger diff --git a/openafs.spec b/openafs.spec index 4451c5b..cb7e900 100644 --- a/openafs.spec +++ b/openafs.spec @@ -57,11 +57,11 @@ # used for %setup only # leave upstream tar-balls untouched for integrity checks. -%define upstream_version 1.8.11 +%define upstream_version stable-1_8_x Name: openafs -Version: 1.8.11 +Version: 1.8.11.g20240530 Release: 0 Summary: OpenAFS Distributed File System License: IPL-1.0 @@ -103,37 +103,6 @@ Source58: openafs.cacheinfo Source98: kmp_only.files Source99: openafs.changes -# PATCH-FIX-UPSTREAM fix build with kernel 6.8 -Patch1: ef7b8c5.diff -Patch2: e0f425a.diff -Patch3: 9f052c1.diff -Patch4: 073adec.diff -Patch5: a87845d.diff -Patch6: aae8b00.diff -Patch7: 5312d06.diff -Patch8: 056a7a8.diff -Patch9: db91384.diff -Patch10: 67e48c8.diff -Patch11: 112fb94.diff -Patch12: 87ab04a.diff -Patch13: 0d9f6cf.diff -Patch14: dffd0e1.diff -Patch15: f5bafb0.diff -Patch16: 6b20756.diff -Patch17: 05ac614.diff -Patch18: 743d72f.diff -Patch19: e157f8f.diff -Patch20: 2056ce8.diff -Patch21: d1c89ac.diff -Patch22: d9f3a2c.diff -Patch23: 7cae97b.diff -Patch24: 81b910a.diff -Patch25: 1e1bf8e.diff -Patch26: a14a9ad.diff -Patch27: b77b304.diff -Patch28: fca6fd9.diff -Patch29: e428053.diff - # PATCH-HANDLE-BACKPORTS # some kernel-features from 6.5 are apparently in 6.4 Patch99: handle_backports.diff @@ -351,36 +320,6 @@ done %patch -P 99 -p1 %endif -%patch -P 1 -p1 -%patch -P 2 -p1 -%patch -P 3 -p1 -%patch -P 4 -p1 -%patch -P 5 -p1 -%patch -P 6 -p1 -%patch -P 7 -p1 -%patch -P 8 -p1 -%patch -P 9 -p1 -%patch -P 10 -p1 -%patch -P 11 -p1 -%patch -P 12 -p1 -%patch -P 13 -p1 -%patch -P 14 -p1 -%patch -P 15 -p1 -%patch -P 16 -p1 -%patch -P 17 -p1 -%patch -P 18 -p1 -%patch -P 19 -p1 -%patch -P 20 -p1 -%patch -P 21 -p1 -%patch -P 22 -p1 -%patch -P 23 -p1 -%patch -P 24 -p1 -%patch -P 25 -p1 -%patch -P 26 -p1 -%patch -P 27 -p1 -%patch -P 28 -p1 -%patch -P 29 -p1 - ./regen.sh %build