diff --git a/4f1d810.diff b/4f1d810.diff deleted file mode 100644 index 8b2f73d..0000000 --- a/4f1d810.diff +++ /dev/null @@ -1,84 +0,0 @@ -From 4f1d8104d17d2b4e95c7abaf5498db6b80aefa8f Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Mon, 18 Sep 2023 12:23:01 -0600 -Subject: [PATCH] Linux 6.6: Pass request_mask to generic_fillattr - -The Linux 6.6 commit: "fs: pass the request_mask to generic_fillattr" -(0d72b92883) added an additional parameter to Linux's -generic_fillattr() function. - -For openafs, generic_fillattr() is called from the inode_operations -method "getattr", which is implemented in afs_linux_getattr(). The value -for the request_mask parameter is an existing parameter that is passed -to the inode_operations "getattr" method. - -Add an autoconf test for 4 parameters to the generic_fillattr function -and update afs_linux_getattr() to pass the request_mask to -generic_fillattr(). - -Reviewed-on: https://gerrit.openafs.org/15561 -Tested-by: BuildBot -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) - -Change-Id: I5cddc56c5e605a6c5e4f7f3691eafec8ca589d2c -Reviewed-on: https://gerrit.openafs.org/15590 -Reviewed-by: Andrew Deason -Tested-by: BuildBot -Reviewed-by: Michael Meffie -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 932fd9d..d5fab97 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1195,7 +1195,11 @@ - { - int err = afs_linux_revalidate(path->dentry); - if (!err) { -+# if defined(GENERIC_FILLATTR_TAKES_REQUEST_MASK) -+ generic_fillattr(afs_mnt_idmap, request_mask, path->dentry->d_inode, stat); -+# else - generic_fillattr(afs_mnt_idmap, path->dentry->d_inode, stat); -+# endif - } - return err; - } -diff --git a/src/cf/linux-kernel-assorted.m4 b/src/cf/linux-kernel-assorted.m4 -index b3a11bc..49827d5 100644 ---- a/src/cf/linux-kernel-assorted.m4 -+++ b/src/cf/linux-kernel-assorted.m4 -@@ -58,6 +58,7 @@ - LINUX_D_INVALIDATE_IS_VOID - LINUX_KERNEL_READ_OFFSET_IS_LAST - LINUX_KEYRING_SEARCH_TAKES_RECURSE -+LINUX_GENERIC_FILLATTR_TAKES_REQUEST_MASK - ]) - - -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 1e4dcaf..3596b6a 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -854,3 +854,16 @@ - [define if your keyring_search has the recurse parameter], - []) - ]) -+ -+dnl Linux 6.6 added the 'request_mask' parameter to generic_fillattr. -+AC_DEFUN([LINUX_GENERIC_FILLATTR_TAKES_REQUEST_MASK], [ -+ AC_CHECK_LINUX_BUILD([whether generic_fillattr has the request_mask parameter], -+ [ac_cv_linux_func_generic_fillattr_takes_request_mask], -+ [#include ], -+ [ -+ generic_fillattr(NULL, 0, NULL, NULL); -+ ], -+ [GENERIC_FILLATTR_TAKES_REQUEST_MASK], -+ [define if your generic_fillattr has the request_mask_parameter], -+ []) -+]) diff --git a/538f450.diff b/538f450.diff deleted file mode 100644 index f38eed6..0000000 --- a/538f450.diff +++ /dev/null @@ -1,64 +0,0 @@ -From 538f450033a67e251b473ff92238b3124b85fc72 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Sun, 09 Jul 2023 18:45:15 -0600 -Subject: [PATCH] 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 -Tested-by: Benjamin Kaduk -(cherry picked from commit c4c16890d9d2829f6bef1ef58feafb30b1d59da3) - -Change-Id: I54cc9156b98320d04fe6f7bb595a150d5ba87b49 -Reviewed-on: https://gerrit.openafs.org/15523 -Tested-by: BuildBot -Reviewed-by: Michael Meffie -Reviewed-by: Mark Vitale -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/crypto/hcrypto/kernel/config.h b/src/crypto/hcrypto/kernel/config.h -index 9623fa9..ea0f60b 100644 ---- a/src/crypto/hcrypto/kernel/config.h -+++ b/src/crypto/hcrypto/kernel/config.h -@@ -91,7 +91,13 @@ - static_inline pid_t getpid(void) {return 1;}; - #endif - static_inline int open(const char *path, int flags, ...) {return -1;} --static_inline void abort(void) {osi_Panic("hckernel aborting\n");} -+ -+#ifdef abort -+# undef abort -+#endif -+#define abort _afscrypto_abort -+static_inline void _afscrypto_abort(void) {osi_Panic("hckernel aborting\n");} -+ - static_inline void rk_cloexec(int fd) {} - static_inline ssize_t read(int d, void *buf, size_t nbytes) {return -1;} - static_inline int close(int d) {return -1;} diff --git a/5b647bf.diff b/5b647bf.diff deleted file mode 100644 index 31ed704..0000000 --- a/5b647bf.diff +++ /dev/null @@ -1,55 +0,0 @@ -From 5b647bf17a878271e1ce9882e41663770ee73528 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Wed, 06 Sep 2023 11:41:55 -0600 -Subject: [PATCH] LINUX: Pass an array of structs to register_sysctl - -The Linux 6.6 commit "sysctl: Add size to register_sysctl" (9edbfe92a0) -renamed the Linux function register_sysctl() to register_sysctl_sz() and -added a size parameter. For backward compatibility, a macro, -register_sysctl, is provided. The macro calculates the size of the -ctl_table being registered and passes the size to register_sysctl_sz. -However, in order to perform the size calculation, an array of ctl_table -structures must be passed as the 2nd parameter. - -This change only affects the autoconf test used to determine if Linux -provides register_sysctl. - -Update the autoconf test for register_sysctl to use an actual ctl_table -structure for the 2nd parameter instead of a NULL. - -Reviewed-on: https://gerrit.openafs.org/15559 -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -Tested-by: BuildBot -(cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154) - -Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f -Reviewed-on: https://gerrit.openafs.org/15575 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 8119549..b913676 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -220,10 +220,13 @@ - dnl Linux 6.5 removed the Linux function register_sysctl_table(), which - dnl was deprecated in Linux 6.3 in favor of register_sysctl() which was - dnl introduced in Linux 3.3 -+dnl Linux 6.6 changed the function register_sysctl to a macro that requires -+dnl an array of ctl_table structures as its 2nd parameter - AC_CHECK_LINUX_FUNC([register_sysctl], -- [#include -- #include ], -- [(void)register_sysctl(NULL, NULL);]) -+ [#include -+ #include ], -+ [[static struct ctl_table cf_sysctl_table[1]; -+ (void)register_sysctl(NULL, cf_sysctl_table);]]) - - dnl Consequences - things which get set as a result of the - dnl above tests diff --git a/63801cf.diff b/63801cf.diff deleted file mode 100644 index 515e9b3..0000000 --- a/63801cf.diff +++ /dev/null @@ -1,99 +0,0 @@ -From 63801cfd1fc06ec3259fcfd67229f3a3c70447ed Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 13 Jul 2023 10:54:22 -0600 -Subject: [PATCH] Linux 6.5: Use register_sysctl() - -The linux 6.5 commit: - "sysctl: Remove register_sysctl_table" (b8cbc0855a) -removed the Linux function register_sysctl_table(). The replacement -function is register_sysctl(), which offers a simpler interface. - -Add an autoconf test for the Linux function register_sysctl and add a -call to register_sysctl when available. - -Notes: -The Linux function register_sysctl was added in Linux 3.3 with the -commit: - 'sysctl: Add register_sysctl for normal sysctl users' (fea478d410) -with a note that it is a simpler interface. - -The function register_sysctl_table was marked as deprecated with the -Linux 6.3 commit: - 'proc_sysctl: enhance documentation' (1dc8689e4c) - -Reviewed-on: https://gerrit.openafs.org/15500 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -(cherry picked from commit fb31d299e6caa015f6288ba9186da6277d3d6a8d) - -Change-Id: I60f68f1dd95c32bada7179e98250fd44d7c2ddf3 -Reviewed-on: https://gerrit.openafs.org/15522 -Tested-by: BuildBot -Reviewed-by: Michael Meffie -Reviewed-by: Mark Vitale -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c -index 894c494..a0a0398 100644 ---- a/src/afs/LINUX/osi_sysctl.c -+++ b/src/afs/LINUX/osi_sysctl.c -@@ -79,7 +79,7 @@ - .procname = 0 - } - }; -- -+# if !defined(HAVE_LINUX_REGISTER_SYSCTL) - static struct ctl_table fs_sysctl_table[] = { - { - AFS_SYSCTL_NAME(1) -@@ -91,11 +91,13 @@ - .procname = 0 - } - }; -- -+# endif - int - osi_sysctl_init(void) - { --# if defined(REGISTER_SYSCTL_TABLE_NOFLAG) -+# if defined(HAVE_LINUX_REGISTER_SYSCTL) -+ afs_sysctl = register_sysctl("afs", afs_sysctl_table); -+# elif defined(REGISTER_SYSCTL_TABLE_NOFLAG) - afs_sysctl = register_sysctl_table(fs_sysctl_table); - # else - afs_sysctl = register_sysctl_table(fs_sysctl_table, 0); -diff --git a/src/cf/linux-kernel-assorted.m4 b/src/cf/linux-kernel-assorted.m4 -index 03d5f65..b3a11bc 100644 ---- a/src/cf/linux-kernel-assorted.m4 -+++ b/src/cf/linux-kernel-assorted.m4 -@@ -39,7 +39,9 @@ - LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK - LINUX_KEY_ALLOC_NEEDS_CRED - LINUX_INIT_WORK_HAS_DATA --LINUX_REGISTER_SYSCTL_TABLE_NOFLAG -+dnl Don't bother checking register_sysctl_table if using register_sysctl -+AS_IF([test "x$ac_cv_linux_func_register_sysctl" != "xyes"], -+ [LINUX_REGISTER_SYSCTL_TABLE_NOFLAG]) - LINUX_HAVE_DCACHE_LOCK - LINUX_D_COUNT_IS_INT - LINUX_IOP_GETATTR_TAKES_PATH_STRUCT -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index ee22158..8119549 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -217,6 +217,14 @@ - #include ], - [block_dirty_folio(NULL, NULL);]) - -+dnl Linux 6.5 removed the Linux function register_sysctl_table(), which -+dnl was deprecated in Linux 6.3 in favor of register_sysctl() which was -+dnl introduced in Linux 3.3 -+AC_CHECK_LINUX_FUNC([register_sysctl], -+ [#include -+ #include ], -+ [(void)register_sysctl(NULL, NULL);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], diff --git a/6413fdb.diff b/6413fdb.diff deleted file mode 100644 index 08e855d..0000000 --- a/6413fdb.diff +++ /dev/null @@ -1,97 +0,0 @@ -From 6413fdbc913834f2884989e5811841f4ccea2b5f Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Thu, 05 Oct 2023 14:44:49 -0600 -Subject: [PATCH] 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 ---- - -diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h -index 2220e05..f9ceb35 100644 ---- a/src/afs/LINUX/osi_machdep.h -+++ b/src/afs/LINUX/osi_machdep.h -@@ -118,6 +118,17 @@ - } - #endif - -+#if defined(HAVE_LINUX_INODE_SET_CTIME) -+# define afs_inode_set_ctime(inode, sec, nsec) inode_set_ctime((inode), (sec), (nsec)) -+#else -+static inline void -+afs_inode_set_ctime(struct inode *inode, time64_t sec, long nsec) -+{ -+ inode->i_ctime.tv_sec = sec; -+ inode->i_ctime.tv_nsec = nsec; -+} -+#endif -+ - #undef gop_lookupname - #define gop_lookupname osi_lookupname - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index fb62752..932fd9d 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1144,8 +1144,7 @@ - * any time the sysname list changes. - */ - ip->i_mtime.tv_nsec = afs_sysnamegen; -- ip->i_ctime.tv_sec = vp->va_ctime.tv_sec; -- ip->i_ctime.tv_nsec = 0; -+ afs_inode_set_ctime(ip, vp->va_ctime.tv_sec, 0); - } - - /* afs_notify_change -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index 105e58c..dc26b60 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -238,6 +238,12 @@ - #include ], - [(void)wrap_directory_iterator(NULL, NULL, NULL);]) - -+dnl Linux 6.6 requires the use of a getter/setter for accessing a inode's -+dnl ctime member. Test for the setter inode_set_ctime -+AC_CHECK_LINUX_FUNC([inode_set_ctime], -+ [#include ], -+ [inode_set_ctime(NULL, 0, 0);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], diff --git a/6de0a64.diff b/6de0a64.diff deleted file mode 100644 index c1f1b01..0000000 --- a/6de0a64.diff +++ /dev/null @@ -1,118 +0,0 @@ -From 6de0a646036283266e1d4aeb583e426005ca5ad4 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Tue, 29 Aug 2023 14:58:10 -0600 -Subject: [PATCH] linux: Replace fop iterate with fop iterate_shared - -The Linux 6.5 commit: - 'vfs: get rid of old '->iterate' directory operation' (3e32715496) -removed the filesystem_operations iterate method. The replacement -method, iterate_shared, was introduced with the Linux 4.6 commit: - 'introduce a parallel variant of ->iterate()' (6192269444) - -The above commits indicate that the iterate_shared is an "almost" -drop-in replacement for iterate. The vfs documentation for -iterate_shared has caveats on the implementation (serializing in-core -per-inode or per-dentry modifications and using d_alloc_parallel if -doing dcache pre-seeding). A wrapper is provided to assist filesystems -with the migration from iterate to iterate_shared. Until it can be -verified that afs_linux_readdir meets the above requirements, we will -use the wrapper (ref 3e32715496 commit) - -Add configure tests for the iterate_shared file_operations member and -for the wrap_directory_iterator function. - -Update osi_vnodeops.c to use iterate_shared and the wrapper if they are -both available. - -Reviewed-on: https://gerrit.openafs.org/15528 -Reviewed-by: Benjamin Kaduk -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: Michael Meffie -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index dd8b39d..fb62752 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -54,14 +54,16 @@ - # define D_SPLICE_ALIAS_RACE - #endif - -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+# define USE_FOP_ITERATE 1 -+#elif defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE) && !defined(FMODE_KABI_ITERATE) - /* Workaround for RH 7.5 which introduced file operation iterate() but requires - * each file->f_mode to be marked with FMODE_KABI_ITERATE. Instead OpenAFS will - * continue to use file opearation readdir() in this case. - */ --#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE) && !defined(FMODE_KABI_ITERATE) --#define USE_FOP_ITERATE 1 -+# define USE_FOP_ITERATE 1 - #else --#undef USE_FOP_ITERATE -+# undef USE_FOP_ITERATE - #endif - - /* Kernels from before 2.6.19 may not be able to return errors from -@@ -909,10 +911,19 @@ - crfree(credp); - return afs_convert_code(code); - } -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+# if defined(WRAP_DIR_ITER) -+WRAP_DIR_ITER(afs_linux_readdir) /* Adds necessary locking for iterate_shared */ -+# else -+# error the Linux provided macro WRAP_DIR_ITER is not available -+# endif -+#endif - - struct file_operations afs_dir_fops = { - .read = generic_read_dir, --#if defined(USE_FOP_ITERATE) -+#if defined(STRUCT_FILE_OPERATIONS_HAS_ITERATE_SHARED) && defined(HAVE_LINUX_WRAP_DIRECTORY_ITERATOR) -+ .iterate_shared = shared_afs_linux_readdir, -+#elif defined(USE_FOP_ITERATE) - .iterate = afs_linux_readdir, - #else - .readdir = afs_linux_readdir, -diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 -index b913676..105e58c 100644 ---- a/src/cf/linux-kernel-func.m4 -+++ b/src/cf/linux-kernel-func.m4 -@@ -228,6 +228,16 @@ - [[static struct ctl_table cf_sysctl_table[1]; - (void)register_sysctl(NULL, cf_sysctl_table);]]) - -+dnl Linux 6.5 removed the file_operations method 'iterate'. Filesystems should -+dnl using the iterate_shared method (introduced in linux 4.6). Linux 6.4 -+dnl provides a wrapper that can be used for filesystems that haven't fully -+dnl converted to meet the iterate_shared requirements. -+ -+AC_CHECK_LINUX_FUNC([wrap_directory_iterator], -+ [#include -+ #include ], -+ [(void)wrap_directory_iterator(NULL, NULL, NULL);]) -+ - dnl Consequences - things which get set as a result of the - dnl above tests - AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], -diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4 -index ce7037e..2824ec1 100644 ---- a/src/cf/linux-kernel-struct.m4 -+++ b/src/cf/linux-kernel-struct.m4 -@@ -26,6 +26,7 @@ - AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h]) - AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h]) -+AC_CHECK_LINUX_STRUCT([file_operations], [iterate_shared], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h]) diff --git a/ChangeLog b/ChangeLog index 57b63f5..43bcdd3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3785 +1,2046 @@ -commit a0b7f71122285f71c3ff0d006d1f9a77b1481732 +commit 47c4fb427a02809a73a8f7024e49ff5f58d2be06 Author: Stephan Wiesand -Date: Thu Jun 29 23:20:28 2023 +0200 +Date: Thu Aug 3 17:35:02 2023 +0200 - Make OpenAFS 1.8.10 + Make OpenAFS 1.8.11pre1 - Update version strings for the 1.8.10 release, and add the - finishing touch to NEWS. + Update version strings for the first 1.8.11 prerelease. - Change-Id: I5ade3bf8eb05474c5e4344e7c727545e807a0053 - Reviewed-on: https://gerrit.openafs.org/15490 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit a48dc74d793a95790c34e9701bbcbe02080308bc -Author: Stephan Wiesand -Date: Thu Jan 12 18:06:30 2023 +0100 - - Make OpenAFS 1.8.10pre1 - - Update version strings for the first 1.8.10 prerelease. - - Change-Id: I116eb9852e7799540fea4cd439f513d571231f45 - Reviewed-on: https://gerrit.openafs.org/15282 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Mark Vitale - Reviewed-by: Ben Huntsman - Reviewed-by: Stephan Wiesand - -commit 30e83126649e8aeeecf1c10436f6f9a315e459b6 -Author: Stephan Wiesand -Date: Thu May 18 16:55:11 2023 +0200 - - Update NEWS for 1.8.10pre1 - - Release notes for the first 1.8.10 prerelease. - - Change-Id: Ie7ed1b65444239528edcb4861ad3e99af54c4bbb - Reviewed-on: https://gerrit.openafs.org/15440 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit abeed74bb0d0bd7a3a5dbd13b9e953a994fb78e6 -Author: Andrew Deason -Date: Fri May 5 16:47:45 2023 -0500 - - LINUX: Set .getattr for symlinks - - On Linux, we can define a .getattr callback for files and directories, - which is called when a caller requests metadata for the file, such as - during lstat(). For regular files and directories, we set this to - afs_linux_getattr(), which updates the metadata for the file in - question if it's out of date (CStatd not set). - - For symlinks, however, we don't set .getattr at all. This would seem - to allow symlink metadata to become stale if another client changes - it, but the metadata often happens to stay up to date via other means. - For example, we can see the following happen: - - - Another client changes, for example, the owner of a symlink we have - cached. - - - The fileserver sends us a callback break, and so we clear CStatd for - the vcache for the symlink. - - - lstat() is called for the symlink, which causes - afs_linux_dentry_revalidate() to be called for the cached dentry. - Since CStatd is not set for the vcache, we verify the entry by - calling afs_lookup(), and then update the symlink's metadata via - afs_getattr() and vattr2inode(). - - However, if CStatd _is_ set for the symlink when lstat() is called, - afs_linux_dentry_revalidate() will not update anything, and will just - return success. So, if we manage to set CStatd for the symlink without - updating it's Linux VFS metadata, the Linux metadata won't be updated, - and we'll report the old metadata to the caller of lstat(). - - We can set CStatd without updating the Linux VFS info in a few - different ways. A few pioctls such as PRemoveMount or PFlushMount can - do this if they encounter an error, but the only code paths that call - these pioctls in OpenAFS (via the 'fs' utility) also lstat() the - relevant path, so this doesn't happen in practice. - - A more common way that this can occur is via afs_DoBulkStat(). If - userspace triggers a bulkstat that includes the symlink in question, - the symlink would gain the CStatd flag without any interaction with - the Linux VFS. - - For example, say a symlink was chown'd from 'adeason' to 'root'. On - another client with the symlink cached, running 'ls -l' on the symlink - itself would show the updated owner, because - afs_linux_dentry_revalidate() updates the metadata: - - $ ls -l dir.slink - lrwxr-xr-x. 1 root root 3 May 5 14:48 dir.slink -> dir - - But if we 'ls -l' the entire directory, which contains other entries, - we will bulkstat many of the entries, possibly including the symlink. - And so we may see the old metadata: - - $ ls -l - total 9 - [...] - lrwxr-xr-x. 1 adeason root 3 May 5 14:48 dir.slink -> dir - - Triggering this behavior requires a bulkstat to be triggered before we - access the symlink itself, and so triggering this behavior depends on - the order of the entries in the directory as well as whether the other - items in the dir are cached. As such, triggering this behavior during - normal operation tends to be inconsistent and confusing. - - The only lstat() info for symlinks that can change like this is the - owner, group, and modtime; mode bits cannot change, and neither can - the length/size (or the contents in general). So, stale metadata tends - to not be very noticeable. - - To fix all of this, set .getattr to afs_linux_getattr() for symlinks, - just like we do for regular files and directories. This ensures that - we will update the Linux VFS metadata for the symlink when it is - requested, so we won't return stale metadata to callers. - - This behavior appears to have existed for symlinks on Linux for quite - a while, possibly since our Linux 2.6 support was added. The behavoir - may have been introduced around commit b860b359d58 - (initial-linux24-support-20001105) or commit 00543744955 - (linux22-fix-20040405). Before those commits, we defined a .revalidate - callback for symlinks, which was called on older Linux versions before - fetching file metadata, and so probably ensured that an lstat() on a - symlink returned properly updated info. - - Reviewed-on: https://gerrit.openafs.org/15423 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 2b32b130f534068251ce9fd1b621de6e480d56d7) - - Change-Id: I194308e2a4783cc3205c6cfd54880421635f6b38 - Reviewed-on: https://gerrit.openafs.org/15443 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 4394a3ee84ffaba559bbe9102c8e6d801f8d6625 -Author: Andrew Deason -Date: Wed Aug 26 13:54:00 2020 -0500 - - Retire AFS_MOUNT_AFS - - Currently, the AFS_MOUNT_AFS #define is used to mean two completely - different things: - - - The string "afs", corresponding to the first argument to mount(2) on - many platforms and some related calls inside libafs (e.g. - getnewvnode() on FBSD). - - - An integer identifying the AFS filesystem (e.g. gfsadd() on AIX). - - Depending on the platform and the build context (UKERNEL vs KERNEL), - AFS_MOUNT_AFS gets defined to one of those two things. This is very - confusing, and has led to mistakes in the past, such as those fixed in - commit 446457a1 (afs: Set AFS_VFSFSID to a numerical value). - - To avoid such confusion, get rid of AFS_MOUNT_AFS completely, and - replace it with two new symbols: - - - AFS_MOUNT_STR, the string "afs". - - - AFS_FSNO, the integer given to gfsadd() et al. - - When AFS_MOUNT_AFS is split this way, AFS_MOUNT_STR then is always - defined to the same value, so remove it from the param.h files for our - platforms. Instead, define it in afs.h for libafs use, and in - afsd_kernel.c (the only place outside of src/afs that uses it). - - Also remove the logic for conditionally defining MOUNT_AFS from the - param.h files, moving the logic to the same locations as - AFS_MOUNT_STR. - - Note that this commit removes the numeric definition for AFS_MOUNT_AFS - in param.sgi_65.h (aka AFS_FSNO). We never actually used this value, - since AFS_FSNO is not used on IRIX; instead, we tend to use the - 'afs_fstype' global instead of a constant number. - - Reviewed-on: https://gerrit.openafs.org/14323 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 6b96a49eb6268adf9fc7e077fe849af7802a1575) - - Change-Id: Iebb35b323ceb50f9603387c46168b80ec800735d - Reviewed-on: https://gerrit.openafs.org/15422 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Tested-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit ee6944d96d7692244438cb1aa7f84a102aebff76 -Author: Benjamin Kaduk -Date: Tue Aug 16 07:48:02 2022 -0700 - - rxevent: fix mismatched #endif - - We should only assign to 'ev' once, rather than assigning a second - time to an uninitialized value. - - Reported by Ben Huntsman and diagnosed by Jeffrey Altman. - - Reviewed-on: https://gerrit.openafs.org/15106 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e51ed7be3849025e9b47d1a644a4fcd99b774b30) - - Change-Id: I06ac2155170d8f005afd9551c69d5ef3e60afff3 - Reviewed-on: https://gerrit.openafs.org/15442 - Reviewed-by: Ben Huntsman - Tested-by: Ben Huntsman - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit e4e9122365a3ec05c01add5333b532f2c19e1732 -Author: Andrew Deason -Date: Sun Jul 18 23:05:38 2021 -0500 - - opr: Avoid sigwait on SIGWAITING - - On AIX, calling sigwait() on a sigset containing SIGWAITING (or - SIGKILL or SIGSTOP), causes sigwait to return with an EINVAL error. - Currently, signalHandler() calls sigwait() with SIGWAITING, because - SIGWAITING is in the sigset returned by softsigSignalSet(). And so, - sigwait() returns EINVAL, and our opr_Verify in signalHandler() fails, - causing a crash. - - To avoid this, remove SIGWAITING from the sigset in - softsigSignalSet(). This is AIX-specific, since the SIGWAITING signal - is AIX-specific. - - Reviewed-on: https://gerrit.openafs.org/14705 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c2db41258370159c1257ee79df10afa4a2a2d9e8) - - Change-Id: I433e4842b684c5f0f453e20d2f5d455b10a792eb - Reviewed-on: https://gerrit.openafs.org/15441 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 332b5593d487c25d0091c5572519364c57cace90 -Author: Ben Huntsman -Date: Thu May 4 16:52:38 2023 -0700 - - AIX: Free pinned_heap during shutdown to prevent kernel panic - - During shutdown, the function shutdown_osisleep is called in - src/afs/afs_osi.c. The body of this function is platform- - specific, and on AIX there is a call to xmfree: - - xmfree(tmp); - - However, on AIX, xmfree actually takes two arguments: - - int xmfree ( ptr, heap) - caddr_t ptr; - caddr_t heap; - - This is called elsewhere in the OpenAFS code correctly for - kernel_heap. In src/afs/AIX/osi_sleep.c we start using the - pinned_heap, but never xmfree it. Therefore, we need to do so here - during the shutdown. Here we include a header file which defines - pinned_heap, and then supply it as an argument to xmfree. This - prevents a kernel panic during OS shutdown. - - The panic might go unnoticed in many environments, as during a - reboot, the system will normally dump and restart anyway. However, - if kdb is loaded (bosboot -a -D), the system will break into the - debugger before the full shutdown procedure completes. The stack - trace shows the following: - - KDB(0)> stack - pvthread+01D200 STACK: - [00023900]abend_trap+000000 () - [000EFF24]xmfree_frontend+0000A4 (??, ??, ??) - [F1000000C064CF1C]shutdown_osisleep@AF72_5+0000BC (??) - [F1000000C064CB7C]shutdown_osi+00001C () - [F1000000C064A51C]afs_shutdown+0003BC (0000000100000001) - [F1000000C05A8DD4]afs_unmount+000094 (F1000A01501D4C10, 0000000000000000) - [F1000000C059FCE0]vfs_unmount+0000A0 (F1000A01501D4C10, 0000000000000000, - F1000A015047B07C) - [00014D70].hkey_legacy_gate+00004C () - [006A6AAC]vfs_unmount+00008C (??, ??, ??) - [006B4228]kunmount+000228 (??, ??, ??, ??) - [006B4944]uvmount+000204 (??, ??) - [00003954]syscall+00024C () - [100084FC]helper_UMfunc+00027C (??, ??) - [10003D48]dounmount+0000C8 (??, ??, ??, ??) - [100044DC]umountmain+0001BC (??, ??) - [10000AD4]main+0000B4 (??, ??) - [10000168]__start+000068 () - - Reviewed-on: https://gerrit.openafs.org/15419 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4810cca10bc32df7ba7809fc2bf095d20e2febd8) - - Change-Id: I687caa6daae83fc7986e76d370b55f90f5ca53cc - Reviewed-on: https://gerrit.openafs.org/15425 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Tested-by: Ben Huntsman - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit a2ab598bae94a9ce0c95034c1a54bcd8e12d5a87 -Author: Ben Huntsman -Date: Thu May 4 10:00:43 2023 -0700 - - AIX: AFS_SMALLOCSIZ too small on newer OS releases - - Addresses a situation where a write in AFS space can cause a kernel - panic. In src/afs/afs_osi_uio.c in the function afsio_partialcopy: - - size_t space_len = sizeof(struct uio) + - sizeof(struct iovec) * AFS_MAXIOVCNT; - - /* Allocate a block that can contain both the UIO and the iovec */ - space = osi_AllocSmallSpace(space_len); - - On newer AIX systems (since at least 6.1), space_len is larger than - AFS_SMALLOCSIZ. When osi_AllocSmallSpace is called, the following - test in src/afs/afs_osi_alloc.c causes a kernel panic: - - if (size > AFS_SMALLOCSIZ) - osi_Panic("osi_AllocSmallS: size=%d\n", (int)size); - - This is due to the following definition in src/config/afs_args.h: - - /* - * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to - * accomodate pointer alignment. - */ - /* Used in rx.c as well as afs directory. */ - /* XXX Because of rxkad_cprivate... XXX */ - - All the supported AIX platforms define AFS_AIX32_ENV in - src/config/param.rs_aixXX.h, where XX is the AIX version. Therefore, - all the AIX platforms end up with AFS_SMALLOCSIZ = 152 bytes instead - of 256. To resolve this, we will modify the preprocessor test to use - the second case for AIX versions greater than 6.1. This issue may be - present on earlier releases of AIX as well, but AIX 5.3 and older - test systems were not available at this time. - - Also, a spelling error in the comment was fixed. - - Reviewed-on: https://gerrit.openafs.org/15418 + Change-Id: I161717ae5670a3261ebbc1fe8fe9c13c18868e74 + Reviewed-on: https://gerrit.openafs.org/15527 Reviewed-by: Mark Vitale Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 8a2d4faa73d0f2e03a4016d7f84c5d5437040cec) - - Change-Id: I5a2fc4ad1a829f1ee30387da20ce477c84fa020f - Reviewed-on: https://gerrit.openafs.org/15424 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Tested-by: Ben Huntsman - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit af58c5cd15ad7b93a93892247fd1c4119e806767 -Author: Cheyenne Wills -Date: Thu Apr 27 09:49:03 2023 -0600 - - Linux: Clear msghdr structure before use - - The msghdr structure is used as a parameter to the Linux kernel - functions kernel_sendmsg() and kernel_recvmsg(). Some required fields - need to be set prior to calling these functions, but there are also - additional structure members that may not be used by the calling code. - Some of these fields may be initialized by the Linux kernel functions - being used, but there may be some that are left uninitialized. - - To ensure that all fields in the msghdr structure are cleared, use - memset to zero the entire structure. This will eliminate the need to set - individual fields to 0 or NULL. - - Reviewed-on: https://gerrit.openafs.org/15409 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 795ef90d4041f1a5a1139435cc70f96457e0f64b) - - Change-Id: Id037e2e548c27b23e2746f804ddcaf7b79d905c4 - Reviewed-on: https://gerrit.openafs.org/15411 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 12ce31ce1dbd86dff47a036b36ce6ad506bd7b75 -Author: Cheyenne Wills -Date: Tue Apr 25 10:37:01 2023 -0600 - - Linux: Do not initialize msghdr's msg_iter/msg_iov - - Since the initial Linux commit (2.6.12-rc2) the Linux function - kernel_recvmsg() handles the initialization of the msghdr members - related to the iov (msghdr.msg_iter and for earlier kernels - msghdr.msg_iov and msghdr.msg_iovlen). - - The code in osi_NetReceive for Linux unnecessarily initializes these - structure members prior to calling kernel_recvmsg(). - - Remove the unnecessary code from osi_NetReceive along with the - surrounding preprocessor check for STRUCT_MSGHDR_HAS_MSG_ITER. Since - this is the only location that uses this define, also remove the - associated autoconf test. - - NOTE: This was discovered while investigating changes needed for - Linux 6.4, due to: "iov_iter: add iter_iovec() helper" (de4f5fed3f) - which renamed the Linux structure iter_iovec's member iov to __iov. - Since the openafs code that was affected by the Linux 6.4 change is - being removed as unnecessary, this commit is not Linux 6.4 specific, - but effects all versions of Linux. - - Reviewed-on: https://gerrit.openafs.org/15408 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 5a7630acfd8bfd462b633475a6e195d9dbdfb451) - - Change-Id: I3a803f76ab84f1e055e91cf4f2be96440f141746 - Reviewed-on: https://gerrit.openafs.org/15410 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 0967702c3f71c5d61e33f905c3272d029303743e -Author: Andrew Deason -Date: Thu Jul 15 19:59:47 2021 -0500 - - AIX: Fix undefined symbols - - Various pieces of our code try to use symbols in our internal - libraries that are not exported in the respective .sym file. On AIX, - this causes the following build failures: - - ld: 0711-317 ERROR: Undefined symbol: .ubik_CallRock - ld: 0711-317 ERROR: Undefined symbol: DISK_function_names - ld: 0711-317 ERROR: Undefined symbol: VOTE_function_names - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[4]: *** [Makefile:45: afscp] Error 8 - make[4]: Leaving directory '/.../src/libadmin/test' - - ld: 0711-317 ERROR: Undefined symbol: PR_function_names - ld: 0711-317 ERROR: Undefined symbol: KAA_function_names - ld: 0711-317 ERROR: Undefined symbol: KAT_function_names - ld: 0711-317 ERROR: Undefined symbol: KAM_function_names - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[4]: *** [Makefile:117: rxstat_get_peer] Error 8 - make[4]: Leaving directory '/.../src/libadmin/samples' - - ld: 0711-317 ERROR: Undefined symbol: .osi_audit_cmd_Options - ld: 0711-317 ERROR: Undefined symbol: .osi_audit_open - ld: 0711-317 ERROR: Undefined symbol: .afsconf_SuperIdentity - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:71: butc] Error 8 - make[3]: Leaving directory '/.../src/tbutc' - - ld: 0711-317 ERROR: Undefined symbol: .pr_Initialize2 - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:111: pts] Error 8 - make[3]: Leaving directory '/.../src/tptserver' - - ld: 0711-317 ERROR: Undefined symbol: .AFSVolListPartitions - ld: 0711-317 ERROR: Undefined symbol: .AFSVolXListPartitions - ld: 0711-317 ERROR: Undefined symbol: .RXAFS_GetStatistics64 - ld: 0711-317 ERROR: Undefined symbol: .AFSVolPartitionInfo64 - ld: 0711-317 ERROR: Undefined symbol: .AFSVolPartitionInfo - ld: 0711-317 ERROR: Undefined symbol: .RXAFS_GetStatistics - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:65: fsprobe_test] Error 8 - make[3]: Leaving directory '/.../src/fsprobe' - - ld: 0711-317 ERROR: Undefined symbol: fsprobe_Results - ld: 0711-317 ERROR: Undefined symbol: gtxframe_exitValue - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:45: scout] Error 8 - make[3]: Leaving directory '/.../src/scout' - - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_toString - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_freeString - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:50: check_sysid] Error 8 - make[3]: Leaving directory '/.../src/viced' - - ld: 0711-317 ERROR: Undefined symbol: .GetLogLevel - make[3]: *** [Makefile:130: fileserver] Error 8 - make[3]: Leaving directory '/.../src/viced' - - ld: 0711-317 ERROR: Undefined symbol: .GetLogDest - ld: 0711-317 ERROR: Undefined symbol: .GetLogFilename - ld: 0711-317 ERROR: Undefined symbol: .CloseLog - make[3]: *** [Makefile:166: salvageserver] Error 8 - make[3]: Leaving directory '/.../src/tsalvaged' - - ld: 0711-317 ERROR: Undefined symbol: .rxkad_StringToLevel - ld: 0711-317 ERROR: Undefined symbol: .FilepathNormalize - ld: 0711-317 ERROR: Undefined symbol: .ConstructLocalPath - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:32: upserver] Error 8 - make[3]: Leaving directory '/.../src/update' - - ld: 0711-317 ERROR: Undefined symbol: xstat_fs_Results - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:77: xstat_fs_test] Error 8 - make[3]: Leaving directory '/.../src/xstat' - - ld: 0711-317 ERROR: Undefined symbol: .afsconf_DeleteKeyBySubType - ld: 0711-317 ERROR: Undefined symbol: .afsconf_DeleteKeyByType - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[3]: *** [Makefile:35: asetkey] Error 8 - make[3]: Leaving directory '/.../src/aklog' - - ld: 0711-317 ERROR: Undefined symbol: .afsconf_FindService - ld: 0711-317 ERROR: Undefined symbol: .afsconf_AddKey - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetLatestKeyByTypes - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[4]: *** [Makefile:19: authcon-t] Error 8 - make[4]: Leaving directory '/.../tests/auth' - - ld: 0711-317 ERROR: Undefined symbol: .afsconf_AddUser - ld: 0711-317 ERROR: Undefined symbol: .afsconf_IsSuperIdentity - ld: 0711-317 ERROR: Undefined symbol: .afsconf_AddIdentity - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetNthUser - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetNthIdentity - ld: 0711-317 ERROR: Undefined symbol: .afsconf_DeleteUser - ld: 0711-317 ERROR: Undefined symbol: .afsconf_DeleteIdentity - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[4]: *** [Makefile:25: superuser-t] Error 8 - make[4]: Leaving directory '/.../tests/auth' - - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetKeys - ld: 0711-317 ERROR: Undefined symbol: .rx_opaque_new - ld: 0711-317 ERROR: Undefined symbol: .rx_opaque_free - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetKeyByTypes - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetKeysByType - ld: 0711-317 ERROR: Undefined symbol: .afsconf_PutTypedKeyList - ld: 0711-317 ERROR: Undefined symbol: .afsconf_GetLatestKeysByType - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[4]: *** [Makefile:31: keys-t] Error 8 - make[4]: Leaving directory '/.../tests/auth' - - ld: 0711-317 ERROR: Undefined symbol: ._afsconf_Touch - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[1]: *** [Makefile:34: realms-t] Error 8 - make[1]: Leaving directory '/.../tests/auth' - - ld: 0711-317 ERROR: Undefined symbol: .opr_cache_get - ld: 0711-317 ERROR: Undefined symbol: .opr_cache_put - ld: 0711-317 ERROR: Undefined symbol: .opr_cache_init - ld: 0711-317 ERROR: Undefined symbol: .opr_cache_free - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[1]: *** [Makefile:16: cache-t] Error 8 - make[1]: Leaving directory '/.../tests/opr' - - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_isNil - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_equal - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_hash - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_fromString - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_create - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_unpack - ld: 0711-317 ERROR: Undefined symbol: .opr_uuid_pack - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[1]: *** [Makefile:37: uuid-t] Error 8 - make[1]: Leaving directory '/.../tests/opr' - - ld: 0711-317 ERROR: Undefined symbol: .rxevent_Init - ld: 0711-317 ERROR: Undefined symbol: .rxevent_Post - ld: 0711-317 ERROR: Undefined symbol: .rxevent_Cancel - ld: 0711-317 ERROR: Undefined symbol: .rxevent_RaiseEvents - ld: 0711-317 ERROR: Undefined symbol: .rxevent_Put - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make[1]: *** [Makefile:18: event-t] Error 8 - make[1]: Leaving directory '/.../tests/rx' - - To fix these, export the relevant symbols from the library's .sym - file. - - Reviewed-on: https://gerrit.openafs.org/14707 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 9656a6b92b86849aa964529947bacb5aea4d83eb) - - Backport notes: - - The following symbols are not present in the 1.8.x branch at this time, - so removed from this backported patch: - - * afsconf_GetLatestRXGKKey - * opr_cache_free - * opr_cache_get - * opr_cache_init - * opr_cache_put - * osi_audit_close - * osi_audit_cmd_Options - * osi_audit_open - * pr_Initialize2 - * ubik_CallRock - - The following symbol files are not present in the 1.8.x branch at this - time, so were removed from this backported patch: - - * src/fsprobe/liboafs_fsprobe.la.sym - * src/gtx/liboafs_gtx.la.sym - * src/xstat/liboafs_xstat_fs.la.sym - - Change-Id: Idd7059fe9e372d9131fa575412b391f03cb24bb3 - Reviewed-on: https://gerrit.openafs.org/15403 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 5e282943ff00fbd5c9ba3056c25959794f8a1144 -Author: Andrew Deason -Date: Fri Apr 7 14:10:58 2023 -0500 - - LINUX: Introduce afs_d_alias_foreach - - We have a couple of places in the code that iterate over the dentry - aliases of an inode, and each of these involves a small #ifdef ladder - to handle slightly different ways of traversing the relevant list. - Split this logic into its own compatibility macro, - afs_d_alias_foreach[_reverse], to contain this ugliness in - osi_compat.h and make the callers more readable. - - This commit should incur no functional change; it is just code - reorganization. - - Reviewed-on: https://gerrit.openafs.org/15390 - Reviewed-by: Benjamin Kaduk - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - (cherry picked from commit 5aaed53f07fae0856e6da9defc408960e72364a7) - - Change-Id: I107c01917512da6c1043880cb93754be37919c47 - Reviewed-on: https://gerrit.openafs.org/15401 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 7f9445bbeb72bcb8257ba0e0608746e31efae40e -Author: Andrew Deason -Date: Mon Jul 15 16:24:10 2019 -0500 - - afs: Fix a few ARCH/osi_vcache.c style errors - - Most of the ARCH/osi_vcache.c implementations were defining functions - like: - - void - osi_foo(args) { - /* impl */ - } - - But our prevailing style is: - - void - osi_foo(args) - { - /* impl */ - } - - Fix them to follow our prevailing style, and fix a couple of the more - obvious errors with identation and goto label. - - Reviewed-on: https://gerrit.openafs.org/13699 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit ee7019a7630d01f29fecebd89ca69ad8a37e24e2) - - Change-Id: I2a34a0d8fd7b6c3721ede0c40c212c3993402235 - Reviewed-on: https://gerrit.openafs.org/15400 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit f6fbb85c00411bf97e9855be73baf49bd6b061d7 -Author: Cheyenne Wills -Date: Wed Mar 29 12:11:38 2023 -0600 - - Linux 6.3: Use mnt_idmap for inode op functions - - Through a series of Linux 6.3 commits starting with: - 'f2fs: project ids aren't idmapped' (64b4cdf22f) and ending with - 'fs: move mnt_idmap' (3707d84c13) - the inode operations functions were changed to take a mnt_idmap - structure instead of a user_namespace structure. These were pulled in - via the the merge commit: - 'Pull vfs idmapping updates from Christian Brauner' (05e6295f7b) - The commit message for the merge contains background and overall - information for this conversion. - - The above change simply changes the functions to use a different - structure (mnt_idmap instead of user_namespace). For afs, it is a - simple change to swap the structures. But for some of the Linux calls - (generic_fillattr(), setattr_prepare(), and inode_op->setattr()) we - would like to use the Linux symbol nop_mnt_idmap, but that symbol is - exported as GPL only. Instead, we will obtain its address from the - current task structure at libafs initialization (much the same way as - obtaining current user namespace for afs_ns). - - Add autoconf tests to determine if inode_operations.create() uses the - mnt_idmap structure. If so set a generic configure define for - "IOP_TAKES_MNT_IDMAP". - - Update afs's inode operations functions to take and use a mnt_idmap - instead of a user_namespace. - - At libafs initialization, obtain the mnt_idmap from the current task - and save it as an afs global variable, afs_mnt_idmap, to be used where - needed. - - Reviewed-on: https://gerrit.openafs.org/15347 - Reviewed-by: Mark Vitale - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 858ee34545e57acab1e4e5813cd1b9a011538b9e) - - Change-Id: If89c6f401db04826ef45de83b91240f106cca616 - Reviewed-on: https://gerrit.openafs.org/15389 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie + Reviewed-by: Indira Sawant Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand - -commit 7a3ad3bc1c87e525698f7dda1e4b0fbbd913da03 -Author: Cheyenne Wills -Date: Wed Mar 22 16:56:09 2023 -0600 - - Linux 6.3: Include linux/filelock.h if available - - Linux 6.3 commit - 'filelock: move file locking definitions to separate header file' - (5970e15dbc) - - relocated file lock related declarations from 'linux/fs.h' into its own - header file, 'linux/filelock.h'. - - Add autoconf tests to check for the header file 'linux/filelock.h' and - update function checks for locks_lock_file_wait() and posix_lock_file(). - - Update osi_compat.h to include linux/filelock.h if it is available. - - Reviewed-on: https://gerrit.openafs.org/15346 - Tested-by: BuildBot Reviewed-by: Benjamin Kaduk - Reviewed-by: Andrew Deason - (cherry picked from commit 6873dc925c5acc0ce7d65cf778ffee09c82a9898) - - Change-Id: If131bee5b466a119f54b05388a065e6af23698cf - Reviewed-on: https://gerrit.openafs.org/15388 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Kailas Zadbuke - Reviewed-by: Stephan Wiesand -commit 30cf5d8f934afdaa5a2a28b2e5fac8adde70808b -Author: Ben Huntsman -Date: Tue Jan 31 11:28:49 2023 -0600 - - AIX: Avoid including net/netisr.h on AIX 7.2 and above - - On AIX 7.2 and higher, /usr/include/net/netisr.h includes a header - . This is an internal kernel library header that IBM - does not ship. The include of sys/libsysp.h is new in AIX 7.2. The - only information we need from net/netisr.h are the definitions for - NETISR_MAX and NET_KPROC. Using the macro AFS_AIX72_ENV, defined in - src/config/param.rs_aix72.h and param.rs_aix73.h, we can just - provide these definitions directly and avoid the include of - net/netisr.h. As part of this update we also add the macro - AFS_AIX72_ENV to src/config/param.rs_aix72.h as it was missing there - but is required for the edit to src/rx/AIX/rx_knet.c to work. On - earlier versions of AIX, we will continue to include net/netisr.h. A - case has been opened with IBM and they acknowledge the problem and - are working on a solution. However, we still need to be able to deal - with the situation as shipped from IBM. A future AIX 7.4 will likely - be able to include net/netisr.h again. - - Reviewed-on: https://gerrit.openafs.org/15312 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit ca67e8c84891200398e577d76c0125966d22b01e) - - Change-Id: Icc3e241e09876a4e9ed3e779c1ba904e0762f92c - Reviewed-on: https://gerrit.openafs.org/15386 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit e83ce49c2dfff64b87a265a4250957a2e62c94d2 -Author: Ben Huntsman -Date: Mon Jan 30 19:11:32 2023 -0600 - - comerr: Update rule for compile_et - - Update the build rule for compile_et under new platform rs_aix73. - - Reviewed-on: https://gerrit.openafs.org/15311 - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Reviewed-by: Michael Meffie - Tested-by: BuildBot - (cherry picked from commit b713b62b3358482a818436a54975596188cb002b) - - Change-Id: I726cf21a2c70305c24c3f43f2504e70a98536aa7 - Reviewed-on: https://gerrit.openafs.org/15385 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 9b94108664330ac4b95a026a8be6c1e260c507fc -Author: Ben Huntsman -Date: Mon Jan 30 19:08:20 2023 -0600 - - configure: Add platform rs_aix73 - - Enable the configure script to detect and configure AIX 7.3. - Update INSTALL to reflect new platform. - - Reviewed-on: https://gerrit.openafs.org/15310 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit d03723e87a16e19a34950ca84a6139095a0694f9) - - Change-Id: I6727512ee343b3ee4cbb03c1e6242a69f407b987 - Reviewed-on: https://gerrit.openafs.org/15384 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit c962d1b91141daceb66c58b30f2acef9e22f36c0 -Author: Ben Huntsman -Date: Thu Aug 25 11:58:31 2022 -0700 - - INSTALL: Update INSTALL to reflect AIX platforms - - Update the INSTALL file to reflect the current rs_aix platforms - that we can build for. - - Reviewed-on: https://gerrit.openafs.org/15142 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4580f213b3a25dd57e6fd721f7ecc0ecad84fb07) - - Change-Id: I3e0d62258e57ff6a54fae2e49a427c764e03a9ae - Reviewed-on: https://gerrit.openafs.org/15383 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit cff8ef661ba272027e44a0b21d77c3cc4e69b0ef -Author: Ben Huntsman -Date: Thu Aug 25 14:53:00 2022 -0700 - - AIX: Fix issue with make install on AIX 7.1 and higher - - Added rules to src/export/Makefile.in for the install target - under AIX 7.1 and higher. - - Reviewed-on: https://gerrit.openafs.org/15146 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit f4fc18b80e81f10b17729ef06cca6a9548d36130) - - Change-Id: I0fcc1429111eaafa489adec330b5eb900022293e - Reviewed-on: https://gerrit.openafs.org/15382 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit c6a391f6212860e381373f3c915885ff92a755cf -Author: Ben Huntsman -Date: Thu Aug 25 12:00:51 2022 -0700 - - configure: Add platform rs_aix71 - - Enable the configure script to detect and configure AIX 7.1. - - Reviewed-on: https://gerrit.openafs.org/15143 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 1aeac365712f09ac90fe251c90b889548e25ac89) - - Change-Id: I469d94701d3554e74cfdc78686a83e7333210ad4 - Reviewed-on: https://gerrit.openafs.org/15381 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 3a88fb9a73b612473090c505a67d3bd4d707f4ba -Author: Ben Huntsman -Date: Thu Aug 25 14:23:51 2022 -0700 - - libafs: Add support for AIX 7.1, 7.2 - - src/libafs/MakefileProto.AIX.in contains rules for various versions of - AIX, but did not have any case for AIX 7.1 or 7.2 This causes build - failures on those platforms. Added in the missing entries for rs_aix71 - and rs_aix72. - - Reviewed-on: https://gerrit.openafs.org/15145 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 0c43fe64dd885aed1ec1be4a2419e6396e583ec5) - - Change-Id: I68315c09eb3d6b2e30ea759d4f9bf5726a98e5d7 - Reviewed-on: https://gerrit.openafs.org/15380 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit b6696e67bc7a85d892531a5e7c3a0f03998ba64b -Author: Ben Huntsman -Date: Thu Aug 25 13:15:11 2022 -0700 - - AIX: Correctly create export64.exp on AIX 7.1+ - - Create the export64.exp file on AIX 7 and higher. - - Reviewed-on: https://gerrit.openafs.org/15144 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit ba3e1410d5df4454dc4dc63e1404a261977b0f60) - - Change-Id: I7ec71522f8e35ede3532e3b1d77623ef25510561 - Reviewed-on: https://gerrit.openafs.org/15379 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 927f906f3d0cfdbe6f38608a56f9f92700806f1e -Author: Ben Huntsman -Date: Tue Aug 23 13:15:46 2022 -0700 - - afs: Use strlcat instead of snprintf to enable AIX build - - The original code used strcpy(), etc. Some compilers have begun - to raise warnings that the use of these functions is unsafe, and - in the case of newer Linux kernels in particular, have caused the - build to fail outright. To adapt to these compilers/kernels, the - code was changed to leverage strlcpy(), snprintf(), etc. as they - are safer. AIX does not provide these functions within the - kernel. For some of the functions such as strlcpy(), etc. we - can use replacement functions from libroken within the AIX kernel - extension. However, libroken does not offer a suitable - replacement for snprintf(), and instead the same purpose can be - accomplished by using strlcpy() and multiple calls to strlcat(). - - Reviewed-on: https://gerrit.openafs.org/15122 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 54dbd474a5bd43cf62a226802593b062069509ce) - - Change-Id: Ie59450a91fcb374b1362f0bd88a93f258597a22d - Reviewed-on: https://gerrit.openafs.org/15378 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 2826b3271aea8608fec44174d8b7e1ea7e805d99 -Author: Ben Huntsman -Date: Fri Aug 19 08:34:33 2022 -0700 - - BUILD: Ensure that make clean actually cleans all products - - After a build, running make clean leaves the following objects: - - src/dir/test/dtest.o - src/libuafs/libuafs.a - src/libuafs/*.o - src/roken/*.o - - Add a few rules to the various Makefiles to ensure that we clean - up those files as well. - - Reviewed-on: https://gerrit.openafs.org/15119 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit ad2b880c3791046883f8c0ef15f327c85e013b5b) - - Change-Id: Iaef185ec0e045ded8453f6b276e6b6b9075b3388 - Reviewed-on: https://gerrit.openafs.org/15377 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 9d2bfcab35eac3dc0040be10681269daba30f866 -Author: Ben Huntsman -Date: Sat Aug 13 11:40:44 2022 -0700 - - afs: Fix missing def for pinned_heap on AIX - - Include sys/malloc.h in AIX's osi_sleep.c. This resolves a build - failure in which pinned_heap is not defined. - - The commit below introduced code to resolve an issue on AIX 5.3: - - 5e5bfa6b9401ebc1fa5446e208cf46c15943c411 - Author: Tom Keiser - Date: Mon Jun 25 21:22:49 2007 +0000 - - aix53-avoid-wait-crash-20070625 - - newp = (afs_event_t *) xmalloc(sizeof(afs_event_t), 5, pinned_heap); - - pinned_heap has always been defined in sys/malloc.h since at least - AIX 4.1. It is likely that the aix53-avoid-wait-crash-20070625 - commit did not compile, or that sys/malloc.h was included - elsewhere at the time. - - Reviewed-on: https://gerrit.openafs.org/15108 - Tested-by: BuildBot - Reviewed-by: Jeffrey Altman - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 615681710a38bd1a92f2c476df9fdab7ac1d9bdd) - - Change-Id: I3fcfc1c7e3e26e927d0a8e2a233c4c12b0781308 - Reviewed-on: https://gerrit.openafs.org/15376 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit d00e6d6fb5ec4cf2520ae2c71f38091d950ec785 -Author: Ben Huntsman -Date: Mon Aug 15 10:44:14 2022 -0700 - - AIX: Fix install of 64-bit kernel module - - Remove make step in error. This was preventing the install of the - built kernel module on AIX when not using Transarc-style paths via - the make install step. - - Reviewed-on: https://gerrit.openafs.org/15114 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 319d361499af933451425acaeabac9bc6548c96b) - - Change-Id: I252de19363824ae23187b7b9da878137814ab09d - Reviewed-on: https://gerrit.openafs.org/15375 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 99ea3deeb5b082bdcbd14c41b6a2c11a900bccb4 -Author: Ben Huntsman -Date: Mon Aug 15 10:00:07 2022 -0700 - - util: Add missing symbol for AIX build - - Added symbol afs_exec_alt to liboafs_util.la.sym. This resolves a - build failure on AIX. - - Reviewed-on: https://gerrit.openafs.org/15113 - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit c0968b6c69c3f16468a7fe4a234d8421731e20e0) - - Change-Id: I060b7b102c963a517d79bad41b5e4c827cbccad8 - Reviewed-on: https://gerrit.openafs.org/15374 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 0d845973f05ef70991f0ee8007fb1a2dfdea3ea1 -Author: Ben Huntsman -Date: Sat Aug 13 23:25:10 2022 -0700 - - fsint: export symbol needed by fileserver - - The symbol RXAFS_OpCodeIndex is consumed by the fileserver via the various - "opcode_" macros produced by rxgen. The functionality is provided - by liboafs_fsint but RXAFS_OpCodeIndex was omitted from the export symbol list. - This went undetected because we use static linking for the fileserver, and - libtool does not enforce export symbol lists while static linking, on platforms - other than AIX. Recent efforts to revive the AIX build illuminated the error, - which we resolve by adding RXAFS_OpCodeIndex to the export list. - - Reviewed-on: https://gerrit.openafs.org/15112 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 91532e3142751468aa8f7bbabe7de087b77259bf) - - Change-Id: Ia665937002137dca1a8ec4573b4fe8932fc90dd0 - Reviewed-on: https://gerrit.openafs.org/15373 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit c0cfe72f072ad27c7958b110678134adad7cebbd -Author: Ben Huntsman -Date: Sat Aug 13 11:47:07 2022 -0700 - - export: Ignore additional build products generated on AIX - - Update .gitignore to ignore additional build products generated on AIX. - - Reviewed-on: https://gerrit.openafs.org/15110 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 448d2b1184e872f977a662c3f48af04029f9a112) - - Change-Id: Iff910b63174c9b046e031285dd30672b0f592c1a - Reviewed-on: https://gerrit.openafs.org/15372 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit b768ba5f1fa15763177cad3ed35e1da5316e7f14 -Author: Ben Huntsman -Date: Mon Aug 15 14:45:12 2022 -0700 - - export: Install kernel utilities with execute permissions on AIX - - Make sure that cfgexport and cfgafs are installed with execute - permissions. These executables load the AIX kernel modules into - the running kernel and are called by the rc.afs script. - - Reviewed-on: https://gerrit.openafs.org/15116 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 1a4da8868fd32e928def64599bb6ec9d6b455423) - - Change-Id: I575d89164ef386d1cdf562b2206b502b3c2e8582 - Reviewed-on: https://gerrit.openafs.org/15371 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit f3cdd139d83fc74f89d16ab6f685ec25ea40edf4 -Author: Ben Huntsman -Date: Sat Aug 13 11:40:18 2022 -0700 - - afs: Fix missing def for timestruc_t on AIX - - Include sys/time.h in AIX's osi_machdep.h. This resolves a build - issue where the struct timestruc_t was not defined. - - Reviewed-on: https://gerrit.openafs.org/15107 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit b5b34278b26ca22eea988fb18d738969dd608ede) - - Change-Id: Icb91b47d819f1bcc0e277a482f2a22d87dc8bc6c - Reviewed-on: https://gerrit.openafs.org/15370 - Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 75578909c5071d45eb2a5989917a3e4a9234aace -Author: Andrew Deason -Date: Fri Jul 16 14:02:07 2021 -0500 - - tsm41: Fix libs for AIX 7.2 - - AIX 7.2 doesn't seem to have libcsys, netinet.exp, sockets.exp, or - statcmd.exp available. To allow for our IMPORTS and LDFLAGS to change - depending on the AIX version, introduce the autoconf vars TSM_IMPORTS - and TSM_LIBS, which do not contain the missing libs on AIX 7.2, so we - can build on AIX 7.2. - - Reviewed-on: https://gerrit.openafs.org/14703 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit a912db315b4f29673808a7f900eb038ebd7b89c2) - - Change-Id: Ic106b893f212b33c85bded8443bcb782205f290c - Reviewed-on: https://gerrit.openafs.org/15369 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit 567c987992b2e027668186e75017423e5637308b -Author: Andrew Deason -Date: Thu Jul 15 17:53:43 2021 -0500 - - AIX: Add buildsystem support for AIX 7.2 - - Reviewed-on: https://gerrit.openafs.org/14701 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 7acd66ae39db2049c8f80f4fceb4fcd15fe8e8b8) - - Change-Id: I94e74b56379fe1103d966883835b8af8a0d98f7e - Reviewed-on: https://gerrit.openafs.org/15368 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit c8a92c4a7e1badfaf81517303440cd9ac7a55dd0 +commit 85d4e2dce876d4bf8b7ebbdafb8b5d357badca2f Author: Michael Meffie -Date: Thu Mar 15 18:53:59 2018 -0400 +Date: Mon Aug 21 13:23:10 2023 -0400 - roken: do not clobber __attribute__ + Update NEWS for 1.8.11 pre-release - The roken-common.h header defines an empty macro called __attribute__ - when HAVE___ATTRIBUTE__ is not defined. This macro conditionally removes - the `format' function attributes in the roken headers at compile time. - Unfortunately, the empty __attribute__ macro will also clobber other - attribute types encountered after the roken.h header inclusion. + Add NEWS items for the upcoming 1.8.11 release. - This is not an issue when building under gcc or clang, since the empty - attribute macro will not be defined. However Solaris Studio supports a - subset of the function attribute types, with `format' not currently - supported. This means roken will define an empty __attribute__ macro, - which prevents the use of other attribute types. + 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 - This commit does not change the roken files directly because they are - external. Instead, the processing of the roken.h.in file has been - updated to undefine the __attribute__ macro at the end of the generated - roken.h header. + 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. - Reviewed-on: https://gerrit.openafs.org/12961 + 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 - Tested-by: BuildBot - (cherry picked from commit 388eaec3452ed4b18a95ee34efcbe4cf64814701) + (cherry picked from commit e4fda3481dc9ec651377493afbc95bd40f4f1fb2) - Change-Id: Id93ec414a59a2f5866e503601b7e42bbb4f8d66a - Reviewed-on: https://gerrit.openafs.org/15367 + Change-Id: I400892121d1b1f63adcd6848e774ede1c4ec5da9 + Reviewed-on: https://gerrit.openafs.org/15609 Tested-by: BuildBot - Reviewed-by: Ben Huntsman - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand + Reviewed-by: Mark Vitale + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk -commit c08c7ba8fbf37018176ee87b980650dd34124678 +commit 6edf9d350c6ffd9d5e51fb8106701c1bc2f6a4d9 Author: Cheyenne Wills -Date: Fri Feb 24 13:05:29 2023 -0700 +Date: Thu Nov 9 10:38:29 2023 -0700 - rx: Revert RXS_DestroyConnection()'s return type + Linux 6.7: convert to inode a/mtime accessor funcs - Commit 'rx: Do not ignore RXS_* op errors' (635594d6c) changed the - rx_securityOps.op_DestoryConnection()'s signature to a void return. - This is a change to a public interface. + 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) - To maintain backward compatibility within openafs 1.8.x, restore - op_DestoryConnection's signature back to returning an 'int', and revert - the changes to rxkad_DestroyConnection() so it returns an int value. - Since returning an error value from this function doesn't make sense, - as noted by commit '635594d6c', always return a 0 value. + With the above 6.7 commit, the inode's i_atime and i_mtime are renamed + to __i_atime and __i_mtime and accessing these members should use the + new accessor functions. - This is a 1.8.x specific commit + This commit is similar to the OpenAFS commit "Linux 6.6: convert to + ctime accessor functions" (072c7934cd1) - Change-Id: I9685ac884a10298ae8faad012717499874f25316 - Reviewed-on: https://gerrit.openafs.org/15334 + Add autoconf tests to detect when we need to use the new accessors and + introduce new wrapper functions to get and set an inode's atime and + mtime. + + Note, unlike the (072c7934cd1) commit, we need to add support for + reading an inode's atime and mtime, so this commit has the getters for + the atime and mtime members. + + Reviewed-on: https://gerrit.openafs.org/15597 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 1da00dfa9446c4c881e8659ec48a5e00262828ca -Author: Andrew Deason -Date: Mon Apr 12 18:21:23 2021 -0500 - - afs: Assert avc->lock is held in afs_IAS_once + (cherry picked from commit 8962767a7e27f8db9dc9001999edf573be706d66) - Commit 3be5880d (afs: Avoid panics in afs_InvalidateAllSegments) added - an assert to check that vcache->lock is write-locked before we call - afs_InvalidateAllSegments_once from a background operation. - - However, afs_InvalidateAllSegments_once should always be called with - vcache->lock write-locked; there's nothing specific about the - backgrounded call that requires this. So to make sure we catch all - cases, move this assert to afs_InvalidateAllSegments_once itself. - - Also remove the conditional check for WriteLocked(&avc->lock) in here, - since clearly avc->lock must be write-locked (and actually is, since - change Ic309e4006bf47bcb38fa2b53bf103e0c645a856d "afs: write-lock - vcache->lock in afs_InactiveVCache"). - - Add some comments to this function while we're here, to more clearly - indicate what locks are needed. - - Reviewed-on: https://gerrit.openafs.org/14592 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 72223e0958c2d7cddd968970547dd73fc3cc1351) - - Change-Id: I9acf5599a8ef1e724a00cf362695fe34ca87c0bf - Reviewed-on: https://gerrit.openafs.org/15331 - Tested-by: BuildBot + Change-Id: If5f58df74f37749b7dfdc52172a8e9573d849ecd + Reviewed-on: https://gerrit.openafs.org/15600 + Reviewed-by: Andrew Deason Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Reviewed-by: Stephan Wiesand - -commit 002c5a0c758aeb023c0fb2caa2247e8574fff1aa -Author: Andrew Deason -Date: Mon Feb 10 15:57:43 2014 -0600 - - Move key-related warnings to common server code - - Each server process can log a couple of different warnings about the - server keys found on disk: - - - If afsconf_GetLatestKey() returns success (indicating a single-DES - key is present), we call LogDesWarning(). - - - If afsconf_CountKeys() returns 0 (indicating there are no keys at - all on disk), we log a warning that all authenticated access will - fail. - - Currently, the code to do these checks and log the relevant warning is - duplicated across the startup code for nearly every server process. To - avoid this duplication, and to make sure the checks aren't - accidentally skipped for anyone, move these checks to - afsconf_BuildServerSecurityObjects, which every server process calls. - - We must add an additional parameter to - afsconf_BuildServerSecurityObjects to handle the different logging - mechanism these servers use, but afsconf_BuildServerSecurityObjects is - declared in a public header (cellconfig.h), and is exported in a - public library (libafsauthent). So to avoid changing a public symbol, - introduce a new variant of the function, called - afsconf_BuildServerSecurityObjects_int. Declare this in a new internal - header, authcon.h. - - We don't have easily-usable logging functions for upserver and butc, - so just don't log the warnings for those. For ubik servers, don't - update ubik_SetServerSecurityProcs to use the new function; the - initial call to afsconf_BuildServerSecurityObjects_int in the server's - startup code will cover logging the warning on startup. - - Reviewed-on: https://gerrit.openafs.org/10831 - Tested-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk - (cherry picked from commit 2630e70550defc664efa0952589cf82ed3c51796) + +commit fd527549c2d2b29a955f8c0427ac67c5d49ef38c +Author: Mark Vitale +Date: Fri Sep 15 15:01:56 2023 -0400 + + dir: Introduce struct DirEntryFlex - Change-Id: Ib37b92cfccbf161d72d2db73eeaea6fd8b312961 - Reviewed-on: https://gerrit.openafs.org/15316 - Reviewed-by: Andrew Deason + 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 +Author: Cheyenne Wills +Date: Thu Nov 2 09:46:34 2023 -0600 + + Linux: Fix to use time_t instead of time64_t + + 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 time64_t data type was introduced in Linux 3.17. A build failure + will occur when building on kernels prior to Linux 3.17. + + Reviewed-on: https://gerrit.openafs.org/15595 + Reviewed-by: Benjamin Kaduk + 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 363a3050610ec66483c71c8052ba40337fead942 -Author: Stephan Wiesand +commit 88d3cbbf7e86cc628011c0ba414225400136d57a +Author: Michael Meffie Date: Thu Jan 26 19:30:04 2023 +0100 - CellServDB update 09 May 2022 + CellServDB update 31 October 2023 Update all three copies in the tree, and the rpm specfile. - Reviewed-on: https://gerrit.openafs.org/15305 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 1b92c766f1cf52b3bae3a00e08d40a2334bf9f24) - - Change-Id: I26fb3ff045d41b840fc6565d1a17aca8e75fcd30 - Reviewed-on: https://gerrit.openafs.org/15323 + 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) + + Change-Id: I4468ff651da06236543e0c7ac7aee247ed03cfa3 + Reviewed-on: https://gerrit.openafs.org/15603 + Tested-by: BuildBot Reviewed-by: Michael Meffie + Reviewed-by: Ralf Brunckhorst Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand -commit 4a0f5562915b1058de15ec46649c09cdbddce269 +commit 4f1d8104d17d2b4e95c7abaf5498db6b80aefa8f Author: Cheyenne Wills -Date: Wed Jul 7 11:08:10 2021 -0600 +Date: Mon Sep 18 12:23:01 2023 -0600 - Remove kdump + Linux 6.6: Pass request_mask to generic_fillattr - Remove the obsolete kdump debugging tool from the tree. Remove and - clean up the preprocessor tests associated with KDUMP, KDUMP_RX_LOCK and - KDUMP_KERNEL. Clean up the autoconf and Makefiles to remove kdump and - the associated autoconf and Makefile vars XLIBELFA and XLIBKVM. + 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 kdump utility has not been well maintained; for some platforms it - fails to build (e.g. Solaris 11). For Linux, the makefile does not - even try to compile the kdump source but instead creates the kdump file - via touch. + 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. - The intended functionality of kdump has been replaced by various kernel - debugging tools, such as dtrace or systemtap. + Add an autoconf test for 4 parameters to the generic_fillattr function + and update afs_linux_getattr() to pass the request_mask to + generic_fillattr(). - Reviewed-on: https://gerrit.openafs.org/14623 + Reviewed-on: https://gerrit.openafs.org/15561 Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 489cfb587a87ab53817ad0b4eccd65d9f7b332e2) - - Change-Id: Idf9582fd65482f32e7f13af0bf734c2b970da757 - Reviewed-on: https://gerrit.openafs.org/15315 - Tested-by: BuildBot - Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Tested-by: Mark Vitale - Reviewed-by: Stephan Wiesand - -commit 4e4ffde5d0a17e48f82c4b67e921a8881ffc4fe5 -Author: Andrew Deason -Date: Mon May 25 16:48:34 2020 -0500 - - IRIX: Remove pre-65 code - - Commit d1923139 (irix kill efs and start pruning pre-65) removed all - files that defined AFS_SGI64_ENV and earlier, but didn't remove that - code that depended on those defines. In addition, there has been code - in the tree that checks for AFS_SGI53_ENV since OpenAFS 1.0, but - nothing has ever defined Irix 5.3 support in OpenAFS. - - Remove all of this obsolete code. Change all references to - AFS_SGIXX_ENV to AFS_SGI_ENV, and assume AFS_SGI_ENV is defined in all - IRIX dirs. Consolidate some of the resulting ifdef logic - appropriately. - - Reviewed-on: https://gerrit.openafs.org/14230 - Reviewed-by: Benjamin Kaduk - Tested-by: Benjamin Kaduk - (cherry picked from commit e0c288416df59a117cd818ada930fd1259955983) - - Change-Id: Ie188b9f108bf55cfae7fcb358a1de21bad076f11 - Reviewed-on: https://gerrit.openafs.org/15314 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason + Reviewed-by: Kailas Zadbuke + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 4fed232b80fb1ad6c0e1dfb42ed8d8e1e6821dd7) + + Change-Id: I5cddc56c5e605a6c5e4f7f3691eafec8ca589d2c + Reviewed-on: https://gerrit.openafs.org/15590 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand -commit 85df2442240c9384822e6658e9aad4f83c19d6e3 -Author: Mark Vitale -Date: Tue Mar 9 23:12:50 2021 -0500 +commit 6413fdbc913834f2884989e5811841f4ccea2b5f +Author: Cheyenne Wills +Date: Thu Oct 5 14:44:49 2023 -0600 - DARWIN: correct size of fstrace ICL_TYPE_LONG and ICL_TYPE_POINTER + Linux 6.6: convert to ctime accessor functions - Commit 248da50aa56f19bdc8b2b322f5e17b3d2a363dce 'icl 64 bit platform - rationalization' introduced support for 64-bit ICL_TYPE_POINTER and - ICL_TYPE_LONG for fstrace running on DARWIN kernels. However, it - neglected to make the matching change in the fstrace utility itself, - which reads and reports these trace entries. The result is that all - fstrace records which contain 64-bit pointers or longs are misreported - as 32-bit values. Furthermore, any subsequent values in the same - fstrace record are also misreported because the offsets are now - incorrect. + 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. - Move the definition of ICL_LONG from afs_icl.c to icl.h so fstrace.c may - share the ICL_LONG logic and value. + Add an autoconf test for the ctime accessor function + 'inode_set_ctime()'. - Modify fstrace to use logic similar to the recording logic in afs_icl.c - so that the correct size and offsets are maintained while decoding the - contents of each fstrace record. + 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. - We can use the build-time value of ICL_LONG (rather than the runtime - value of afs_sizeofLong) because the difference only matters for SGI62 - 32-bit kernels. It is unknown whether the existing code works correctly - for SGI62 32-bit mode, but this commit should not affect that support - either way. + Convert the setting of an inode's ctime to use afs_inode_set_ctime(). - Reviewed-on: https://gerrit.openafs.org/14558 - Reviewed-by: Benjamin Kaduk + 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 - (cherry picked from commit adf08b464efa8c29256dc7b261b10b60cc31119d) + Reviewed-by: Andrew Deason + Reviewed-by: Mark Vitale + Tested-by: Mark Vitale + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 072c7934cd1b99052882f02294f7036d422b6cf1) - Change-Id: Ie3ef988d209a984839751051d7bd9a62369b5b11 - Reviewed-on: https://gerrit.openafs.org/15313 + 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 +Author: Cheyenne Wills +Date: Tue Aug 29 14:58:10 2023 -0600 + + linux: Replace fop iterate with fop iterate_shared + + The Linux 6.5 commit: + 'vfs: get rid of old '->iterate' directory operation' (3e32715496) + removed the filesystem_operations iterate method. The replacement + method, iterate_shared, was introduced with the Linux 4.6 commit: + 'introduce a parallel variant of ->iterate()' (6192269444) + + The above commits indicate that the iterate_shared is an "almost" + drop-in replacement for iterate. The vfs documentation for + iterate_shared has caveats on the implementation (serializing in-core + per-inode or per-dentry modifications and using d_alloc_parallel if + doing dcache pre-seeding). A wrapper is provided to assist filesystems + with the migration from iterate to iterate_shared. Until it can be + verified that afs_linux_readdir meets the above requirements, we will + use the wrapper (ref 3e32715496 commit) + + Add configure tests for the iterate_shared file_operations member and + for the wrap_directory_iterator function. + + Update osi_vnodeops.c to use iterate_shared and the wrapper if they are + both available. + + Reviewed-on: https://gerrit.openafs.org/15528 + Reviewed-by: Benjamin Kaduk + 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: Michael Meffie Reviewed-by: Stephan Wiesand -commit 37d01094b929a6bb745aeb00a3f5a40fd8fe5822 -Author: Ben Huntsman -Date: Wed Aug 17 17:19:55 2022 -0700 +commit 5b647bf17a878271e1ce9882e41663770ee73528 +Author: Cheyenne Wills +Date: Wed Sep 6 11:41:55 2023 -0600 - rx: Only use printf in the AIX kernel + LINUX: Pass an array of structs to register_sysctl - An earlier version of the OpenAFS code used an unusual preprocessor - macro for the function osi_Msg and osi_VMsg. This causes problems - on newer Linux kernels. The macro was replaced with a function - leveraging vprintf, etc. These functions are not available in the - AIX kernel, where our only option is printf. However, AIX does - provide these functions in libc. This change ensures we only use - printf when building the AIX kernel module. + 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. - Reviewed-on: https://gerrit.openafs.org/15118 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills + This change only affects the autoconf test used to determine if Linux + provides register_sysctl. + + Update the autoconf test for register_sysctl to use an actual ctl_table + structure for the 2nd parameter instead of a NULL. + + Reviewed-on: https://gerrit.openafs.org/15559 + Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk - (cherry picked from commit 8b1beaffb40c93ddab50c75b37f3de5ae517a849) - - Change-Id: Id06478cbc87b6965c021f26902e13bdfc2ef83d5 - Reviewed-on: https://gerrit.openafs.org/15309 Tested-by: BuildBot - Reviewed-by: Mark Vitale + (cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154) + + Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f + Reviewed-on: https://gerrit.openafs.org/15575 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand -commit 7c3c93db2977765a8b82426f0524b380f896b82f +commit 2ebafdc5349c7ae4418a98c244b6959388c50bf2 Author: Andrew Deason -Date: Tue Jan 14 10:51:42 2020 -0600 +Date: Wed Aug 2 16:02:57 2023 -0500 - afs: Properly type afs_osi_suser cred arg + rx: Check for callNumber before NULL server call - Currently, afs_osi_suser is declared with a void* argument, even - though its only argument is always effectively a afs_ucred_t*. This - allows us to call afs_osi_suser with any pointer type without the - compiler complaining. Currently, some callers call afs_osi_suser with - an incorrectly-typed afs_ucred_t** instead, like so: + 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. - func(afs_ucred_t **credpp) - { - afs_ucred_t **acred = *acredpp; /* incorrect assignment */ - if (afs_osi_suser(acred)) { - /* ... */ - } - } + 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. - The actual code in the tree hides this to some degree behind various - function calls and layers of indirection (e.g. afs_suser()), but this - is effectively what we do. This causes compiler warnings because we - are doing incorrect pointer assignments, but the end result works - because afs_osi_suser actually uses an afs_ucred_t*. + 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. - The type confusion makes it very easy to accidentally give the wrong - type to afs_osi_suser. This only really matters on SOLARIS, since that - is the only platform that actually uses its argument to - afs_osi_suser(). + 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. - To fix all of this, just declare afs_osi_suser as taking an - afs_ucred_t*, and fix all of the relevant functions to handle the - right type. + 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/14085 - Tested-by: BuildBot + Reviewed-on: https://gerrit.openafs.org/15524 Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4ce922d339777faf647f7129f5ae3f173a7870b1) - - Change-Id: I1a6ce7788e86c32e554f87785f96f1d7b56d1496 - Reviewed-on: https://gerrit.openafs.org/15308 - Reviewed-by: Andrew Deason - Tested-by: BuildBot Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit bfb3125fc1b73ae17a346d33a1a34e51379db9c4 -Author: Mark Vitale -Date: Mon May 4 15:55:07 2020 -0400 - - Add static assert for size of osi_timeval32_t + Tested-by: BuildBot + (cherry picked from commit 448e82b45268e8b339bdaa6ab0cd5858a04250a9) - OpenAFS code requires osi_timeval32_t to have 32-bit sizes for members - tv_sec and tv_usec - a total of 8 octets. One symptom of a - misdefinition may be incorrect operation of xstat_cm_test, which relies - on wire representations of time being 8 bytes on both the client and - server side. - - In order to prevent incorrect sizes of osi_timeval32_t, add a static - assert. - - Reviewed-on: https://gerrit.openafs.org/14195 - Reviewed-by: Cheyenne Wills + Change-Id: I4a0c8a578cef32da8411bd33610aed9c67dc47c6 + Reviewed-on: https://gerrit.openafs.org/15562 + Tested-by: BuildBot Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 10c5ba12ace51440c7e98add83465a7018961e6f) - - Change-Id: I9584a53154ffe673d19191a0bd9f6a92d6daf140 - Reviewed-on: https://gerrit.openafs.org/15304 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Mark Vitale + Reviewed-by: Kailas Zadbuke Reviewed-by: Stephan Wiesand -commit 9433217b56afe3f23b2eeeefdb8fa644c2185e4a +commit 00f13c45d637249a0d698458e08c1b8e2da8e219 Author: Cheyenne Wills -Date: Mon Jun 14 16:13:57 2021 -0600 +Date: Wed Jun 21 13:56:29 2023 -0600 - rx: Cleanup rx.h + cf: Use static allocated structs for cf tests - Fix up indentation and white space within preprocessor statements. + 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). - Remove multiple blank lines + 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=). - Fix #endif comments so they match the #if + 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. - Split long #define lines - RX_PACKET_TYPES - rx_MaxUserDatasize, - RXS_OP - RXS_SetConfiguration + openafs/conftest.dir/conftest.c:72:1: error: the frame size of 9984 + bytes is larger than 2048 bytes [-Werror=frame-larger-than=] - Note, this commit does not refactor any preprocessor statements. + 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/14629 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Andrew Deason + Reviewed-on: https://gerrit.openafs.org/15477 Reviewed-by: Benjamin Kaduk - (cherry picked from commit 21df433134a059de8d3b3b46bb0892b34d910364) - - Change-Id: I197897f4f7e81bd2f931e3decefe447caae0c5d9 - Reviewed-on: https://gerrit.openafs.org/15301 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie Tested-by: BuildBot - Reviewed-by: Mark Vitale + 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 -commit bfc7688475fe5d2a178072a8978cf75635a15400 -Author: Andrew Deason -Date: Wed Mar 13 18:30:43 2019 -0500 - - rx: Do not ignore RXS_* op errors - - Several places in rx call an RXS_* security layer operation, but - ignore the error code. Though errors for these operations are rare or - impossible currently, if they ever do return an error there could be - noticeable consequences, like a connection getting an uninitialized - challenge nonce, or sending a challenge packet with uninitialized - payload. - - Change these call sites to record and handle the error. Errors from - the security class normally mean aborting the entire conn, but for - many operations we need to behave differently: - - - For RXS_DestroyConnection, errors don't make sense, since we're just - freeing an object. Change the op to return void, and update our - implementations of DestroyConnection to match. - - - For RXS_GetStats, just clear the relevant stats structure on error - instead. This change also results in us clearing the stats structure - when there is no security class associated with the connection; - previously we just reused the same struct data as the previous conn. - - - For RXS_CreateChallenge, aborting the entire conn is difficult, - because some code paths have callers that potentially lock multiple - calls on the same conn (rxi_UpdatePeerReach -> TryAttach -> - rxi_ChallengeOn -> RXS_CreateChallenge), and aborting our conn - requires locking every call on the conn. So instead we just - propagate an error up to our callers, and we abort just the call we - have. - - - For RXS_GetChallenge, we cannot abort the conn when - rxi_ChallengeEvent is called directly, because the caller will have - the call locked. But when rxi_ChallengeEvent is called as an event - (when we retry sending the challenge), we can. - - - For RXS_SetConfiguration, propagate the error up to our caller. - Update all rx_SetSecurityConfiguration callers to record and handle - the error; all of these are during initialization of daemons, so - have them log an error and exit. - - Reviewed-on: https://gerrit.openafs.org/13522 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 635594d6cceba6de4e09be5a9e9b908f7d16697d) - - Change-Id: I800516335f6ab0d01d2b29dd0ceba9213dafde59 - Reviewed-on: https://gerrit.openafs.org/15300 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Mark Vitale - Reviewed-by: Benjamin Kaduk - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 48d9848c5eef99bf1d8552acc055d3b91b2fbcc0 -Author: Yadavendra Yadav -Date: Wed Jul 7 12:32:36 2021 -0400 - - LINUX: defer afs_remunlink when current->fs==NULL - - afs_remunlink is called to delete a file on the fileserver after it - has been silly-renamed (due to being unlinked while the file is open). - Sometimes current->fs is NULL when this happens, typically when the - process is shutting down, after current->fs has been freed and file - handles are getting released. During afs_remunlink, we need to - interact with our cache files, and so we call dentry_open, which calls - security_file_open, which calls into the configured LSM for security - checks. Certain LSMs (e.g. Crowdstrike Falcon) will panic the kernel - in this situation if current->fs is NULL. - - There's no way to skip the LSM hooks, or to flag to the LSM that we're - making an in-kernel VFS call, so the only way to avoid these panics is - to do our I/O in another thread. Fortunately, we already have a way to - defer afs_remunlink calls to a background daemon (CUnlinkedDel), since - we already do this in some cases (when someone else is holding - afs_xvcache or afs_xdcache). - - So, to avoid the panic in the above scenario, defer calls to - afs_remunlink to a background daemon using CUnlinkedDel when - current->fs is NULL, and we're using a disk cache. - - More details on this issue is discussed at following thread: - https://lists.openafs.org/pipermail/openafs-info/2021-March/043073.html - - Reviewed-on: https://gerrit.openafs.org/14691 - Tested-by: BuildBot - Tested-by: Jonathan Billings - Reviewed-by: Benjamin Kaduk - Reviewed-by: Andrew Deason - (cherry picked from commit 9e043e1a0cdca7624de3e27872273263c57027ed) - - Change-Id: If85d992c2639e59af7578ebc295f91d4f8462b69 - Reviewed-on: https://gerrit.openafs.org/15295 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit b1bbe87643462ae88f8564044d9bff2703fd5123 -Author: Mark Vitale -Date: Sat Mar 27 00:00:17 2021 -0400 - - afs: write-lock vcache->lock in afs_InactiveVCache - - Since the original IBM code import, the comments for - afs_InvalidateAllSegments indicate that vcache->lock W should be held at - entry. However, even back then, only LINUX and IRIX honored this - requirement when the 'inactive' vnode operation reached - afs_InvalidateAllSegments. - - Over the years, a number of commits have changed the operation and - locking for the LINUX inactive vnode op: - - 5293aa35617a6ad35980ce16fdf492ea960cc18a linux-iput-and-glock-changes-20010130 - e8591334602e5e8dad78dc6426d3c44d564572c1 linux-osi-clear-inode-locking-fix-20010816 - 652f3bd9cb7a5d7833a760ba50ef7c2c67214bba linux-dynamic-inodes-20050710 - e0d9e434bb778a2507c1cd6d96c1faa2071f2b2c put-inode-speedup-20050815 - b21c13dc3ab751118220dc31276995050841a1ae linux-dentry-iput-20060813 - - Eventually, ac52e2f3c0bec9298d020de963036409165f380e - linux-dont-lock-around-inactivevcache-20061010 removed the vcache->lock - from afs_dentry_iput (the current OpenAFS handler for inactive vcaches). - The commit message states: - - "iafs_InactiveVCache() [sic] calls afs_InvalidateAllSegments() which says - it should be called with the vnode locked. so the lock should - probably be moved to afs_InactiveVCache() so it can be droppped - before calling afs_remunlink()." - - Unfortunately, the vcache->lock was never moved to afs_InactiveVCache. - - Finally, 3be5880d1d2a0aef6600047ed43d602949cd5f4d 'afs: Avoid panics in - afs_InvalidateAllSegments' introduced a background operation - BInvalidateSegments that contains an assert for vcache->lock. This - assert has exposed the existing lack of proper locking for some paths to - afs_InvalidateAllSegments by causing a kernel panic: - - d_iput -> afs_dentry_iput -> afs_InactiveVCache -> - afs_InvalidateAllSegments -> afs_BQueue(BOP_INVALIDATE_SEGMENTS..) -> - BInvalidateSegments -> osi_Assert(WriteLocked(&vcache->lock)) - - Prevent the panic by modifying afs_InactiveVCache to obtain vcache->lock - W before calling afs_InvalidateAllSegments, and dropping it before - calling afs_remunlink. - - Thanks to Chaskiel Grundman for reporting and diagnosing the problem. - - Reviewed-on: https://gerrit.openafs.org/14584 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit f02be4e3b89382317a3baa496f9cb672cdb4b32a) - - Change-Id: I38dc6e5d70b1743b96d2a227d28e58d1950b5835 - Reviewed-on: https://gerrit.openafs.org/15324 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Mark Vitale - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - Reviewed-by: Stephan Wiesand - -commit 1023b96ab1ea842c883c070e6197e71826dbe8be -Author: Marcio Barbosa -Date: Wed Apr 20 13:06:17 2022 +0000 - - cmdebug: Print AFSFid fields as unsigned integers - - Currently, AFSFid fields are printed as signed integers. As a result, - large numbers can be erroneously printed as negative numbers. - - To fix this problem, print AFSFid fields as unsigned integers. - - Reviewed-on: https://gerrit.openafs.org/14950 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 29a89c82ad422f88b0898ad07e773dc2e71be983) - - Change-Id: Ieb303354f1332abb8278e62252c4842baa2132c7 - Reviewed-on: https://gerrit.openafs.org/15302 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Stephan Wiesand - -commit d2429aec59fb3cc7d8a2cc94aa9e0ce8256ecb94 -Author: Andrew Deason -Date: Wed Jun 3 15:53:48 2020 -0500 - - vol: Introduce and use FDH_BLOCKSIZE - - A couple of places in src/volser currently have some logic to get the - size and blocksize of a file. The existing logic is nontrivial due to - platform-specific quirks, and ignores afs_fstat errors. - - To fix these issue and consolidate the code into one place, introduce - a new function, FDH_BLOCKSIZE, which gets the file size and blksize. - Update the places in src/volser to use the new function. - - Reviewed-on: https://gerrit.openafs.org/14662 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 939787565d5be55a8a803043dbc4f27b3f11b906) - - Change-Id: I32c73e87fa0b6b0b45971e06b8d8c5653f882f7b - Reviewed-on: https://gerrit.openafs.org/15303 - Reviewed-by: Michael Meffie - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 1eac15a85a50b1c322dd460f5c747538c88c1a31 +commit 4212d485cb2e0b1fa06b73bd21ca38ea8e3a8fa6 Author: Cheyenne Wills -Date: Mon Jan 10 18:11:58 2022 -0700 +Date: Thu May 25 15:51:10 2023 -0600 - afs.h: fix out of tree build failures - - There are several compiler errors and warnings when building an out of - tree program that includes "afs/afs.h". - - - Errors for unknown type names 'afs_ucred_t' and 'wait_queue_head' - .../afs/afs.h:1542:16: error: unknown type name ‘afs_ucred_t’ - ... | afs_set_cr_uid(afs_ucred_t *cred, uid_t uid) { - .../afs/afs.h:1605:5: error: unknown type name ‘wait_queue_head_t’ - ... | wait_queue_head_t cond; - - - Warnings about declaring structures within missing declarations for - the structs: osi_File, dcache and afs_FetchOutput - .../afs/afs.h:1486:36: warning: ‘struct osi_file’ declared inside - parameter list will not be visible outside of this definition or - declaration - ... | int (*read)(void *rock, struct osi_file *tfile, - afs_uint32 offset, - - - Unable to find the file for the include opr/jhash.h - - The missing type name 'afs_ucred_t' is due to miss-placed declarations - for some kernel only functions. - - The type name 'wait_queue_head' is a data type for Linux kernel modules. - - The warnings for the missing declarations are due to either references - to the structures before they are declared, or because they are not - available in any of the other public header files. - - To fix the unknown type name afs_ucred_t, relocate the function - declarations that reference 'afs_ucred_t' into the KERNEL only section - (since afs_ucred_t is a kernel specific type). - - To fix the unknown type name 'wait_queue_head', relocate the afs_event - structure and the afs_evhasht variable to be within the KERNEL only - section. - - To resolve the warnings associated with the structures, simply declare - the structure names before they are referenced. All references that - are resulting in the warnings are declarations for pointers. - - Relocate the include for opr/jhash.h and the define for VCSIZE into the - kernel block. - - Reviewed-on: https://gerrit.openafs.org/14857 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 92342b099dd5ea539efc5ad119d36a87647c0895) - - Change-Id: Ib321796e473495d7d8774133c5e690b53bb26c17 - Reviewed-on: https://gerrit.openafs.org/15299 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 80cb460a8b434fa7fb2dacf642d54de1c0af5314 -Author: Andrew Deason -Date: Sun Apr 5 16:29:52 2020 -0500 - - libafs: Serialize INSTDIRS/DESTDIRS and COMPDIRS - - Our libafs build logic involves a few targets that 'cd' into a - per-kernel subdir: notably INSTDIRS and DESTDIRS (the targets to 'make - install' or 'make dest' our kernel modules) and COMPDIRS (the target - to setup/build the kernel module). - - Both of these potentially 'cd' into a subdirectory (e.g. MODLOAD64), - and run some make rules. Since INSTDIRS and COMPDIRS are different - targets and don't depend on each other for many platforms, running - those rules can happen in parallel. After they 'cd' into the relevant - dir, they run a new 'make' in a subshell, and so underlying rules for - building e.g. AFS_component_version_number.c are not serialized. - - So for a parallel build on, say, Solaris, we can encounter errors when - two sub-makes try to make AFS_component_version_number.c at the same - time, which looks something like this (with various lines output from - other sub-processes mixed in): - - cd src && cd sys && gmake install - gmake[3]: Leaving directory '/[...]/src/libuafs' - rm -f AFS_component_version_number.c.NEW - /opt/developerstudio12.6/bin/cc [...] -D_KERNEL -DSYSV -dn -m64 -xmodel=kernel -xvector=%none -xregs=no%float -Wu,-save_args -o AFS_component_version_number.o -c AFS_component_version_number.c - mv: cannot access AFS_component_version_number.c.NEW - gmake[4]: *** [/[...]/src/config/Makefile.version:13: AFS_component_version_number.c] Error 2 - gmake[4]: Leaving directory '/[...]/src/libafs/MODLOAD64' - gmake[3]: *** [Makefile:85: solaris_instdirs] Error 2 - gmake[3]: *** Waiting for unfinished jobs.... - - To avoid this, just make INSTDIRS and DESTDIRS depend on COMPDIRS, so - we can make sure they don't run at the same time. - - Reviewed-on: https://gerrit.openafs.org/14137 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 3db8c37e8ef6bea0f03ef6b8f82ed93d52937d7d) - - Change-Id: Ied7875e885f51a6d3f00d65f1783df9439a18ae3 - Reviewed-on: https://gerrit.openafs.org/15298 - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 30dc7fd2acbe756d5e618a6da484f0eebaf07e07 -Author: Andrew Deason -Date: Sat Sep 22 01:58:17 2018 -0500 - - SOLARIS: Fix libafs $(KOBJ) parallel make race - - Currently, our COMPDIRS make rule for SOLARIS libafs builds looks like - this: - - ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}: - for t in $(KOBJ) ; do - # set some variables ; \ - cd $$t ; \ - $(MAKE) $@_libafs || exit $$? ; \ - cd ../ ;\ - done - - And Makefile.common has this: - - all: setup $(COMPDIRS) - - Where the 'setup' rule creates the $(KOBJ) dirs and sets up some - symlinks. - - For parallel builds, this means that our commands in the ${COMPDIRS} - target can be running in parallel with the 'setup' target, and so our - $(KOBJ) dirs may not exist by the time we try to 'cd $$t'. - - For single-KOBJ platforms this actually largely works, since the 'cd' - will fail, but then the subsequent 'make' will run (just in the wrong - dir), but this can cause us to wastefully re-compile the same source - files (and cause some possibly confusing error messages). For - platforms with multiple KOBJs, this causes obvious problems, since we - don't cd into each KOBJ dir. - - To solve this, just have the ${COMPDIRS}/etc rule depend on setup, so - we know that 'setup' has finished running. Also change our way of - 'cd'ing into each KOBJ dir to actually cause the rule to fail, to make - any errors here more obvious and consistent. - - Reviewed-on: https://gerrit.openafs.org/13344 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 00aa9200be86b187c903503e56b2af55639ea2b8) - - Change-Id: I4b68cc8aa7b50f792152c2c00da6c6e3684755b7 - Reviewed-on: https://gerrit.openafs.org/15297 - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 69839045c269af1b7023159e78dbc59e13e6202a -Author: Cheyenne Wills -Date: Wed Feb 9 14:00:13 2022 -0700 - - autoconf: Additional library test for ncurses - - Depending on how the ncurses libraries were built the external symbol - 'LINES' may be replaced with the '_nc_LINES' external symbol. Because - the symbol 'LINES' may or may not be present, the autoconf test can fail - to detect the correct libraries needed for curses support. - - Add an additional AC_CHECK_LIBs for the symbol _nc_LINES (within the - ncurses or tinfo libraries) when setting the $LIB_curses. - - This commit was adapted from the openSuSE source packaging for openafs. - - Background: when ncurses is built with --enable-reentrant, LINES is - defined as a C preprocessor macro that expands to a call to _nc_LINES - - Reviewed-on: https://gerrit.openafs.org/14889 - Tested-by: BuildBot - Reviewed-by: Ralf Brunckhorst - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c98994dd116121af75f6df6891e706957c6c953d) - - Change-Id: I6eb15897f48eb93d72739965c10b5f51b21d7336 - Reviewed-on: https://gerrit.openafs.org/15296 - Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit f7625760d515a4954596526e78b9a8c2a9e9ec13 -Author: Stephan Wiesand -Date: Wed Jan 18 14:18:08 2023 +0100 - - afs: check for non-NULL before memset in afs_LookupName - - Commit 981bc005f8161ca9ee52ea281c7d73e0e4e2461a refactored PNewStatMount - and PFlushMount by moving their common logic to a new function - afs_LookupName(). In this function, the output parameters are zeroed. - However, this is done before checking that their pointers are valid. - Add additional checks before memset(). - - Reviewed-on: https://gerrit.openafs.org/15283 - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e2890626bc11964dd96cde0d7d8dd7fdfcf90857) - - Change-Id: I213ea7e23e01e7902919919581ad1d8e596303a2 - Reviewed-on: https://gerrit.openafs.org/15292 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit cba2b88851c3ae0ab1b18ea3ce77f7f5e8200b2f -Author: Jeffrey Hutzelman -Date: Tue Mar 1 10:31:14 2022 -0500 - - LINUX 5.13: set .proc_lseek in proc_ops - - When using the proc_ops structure, set .proc_lseek explicitly rather - than leaving it unset. This field has always been present in proc_ops, - but prior to Linux 5.13, it could be unset, causing default_llseek to be - used. Starting with commit d4455faccd6 (proc: mandate ->proc_lseek in - "struct proc_ops"), this field is now mandatory. - - This fixes a problem which would cause an oops if llseek(2) is called - on /proc/fs/openafs/afs_ioctl. - - Reviewed-on: https://gerrit.openafs.org/14918 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 68851b782ca2cb5e4ae7457255841f44f3bef15c) - - Change-Id: Ifd3a517f595cfef7fd9dd1fdd3f3aca8fe1bc25f - Reviewed-on: https://gerrit.openafs.org/15286 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit b885159cc2bc6c746aec1d54cdd8a515d1115d14 -Author: Cheyenne Wills -Date: Wed Dec 14 13:40:48 2022 -0700 - - Linux: Replace lru_cache_add with folio_add_lru - - The Linux 6.2 commit: - "folio-compat: remove lru_cache_add()" (6e1ca48d0) - removed the lru_cache_add() function (which was introduced in Linux 5.8) - - The replacement function is folio_add_lru(), which was introduced with - the Linux 5.16 commit: - "mm/lru: Add folio_add_lru()" (0d31125d2d) - - Reviewed-on: https://gerrit.openafs.org/15227 - Reviewed-by: Benjamin Kaduk - Tested-by: Benjamin Kaduk - (cherry picked from commit cfac0df9cd7152be2672c665442aac84215494d6) - - Change-Id: I74535bf83cdd47c9dd60a7114ec7694ae9981c9b - Reviewed-on: https://gerrit.openafs.org/15281 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit f0fee2c7752d18ff183d60bcfba4c98c3348cd5f -Author: Cheyenne Wills -Date: Fri Nov 18 08:41:50 2022 -0700 - - Linux: Check for block_dirty_folio - - The build for the openafs Linux kernel module fails on RHEL9.1 with an - undefined function reference for block_dirty_folio(). - - RedHat 9.1 includes the Linux commit: - fs: Add aops->dirty_folio (6f31a5a261db) - which added the dirty_folio member to the address_space_operations - structure. - - However RedHat 9.1 does not include the following 2 Linux commits: - fs: Convert __set_page_dirty_buffers to block_dirty_folio (e621900ad2) - which introduced block_dirty_folio() as a function that could be used to - handle the address_space_operations's dirty_folio operation. - - And - fs: Remove aops ->set_page_dirty (3a3bae50af) - which removed the set_page_dirty member in the address_space_operations - structure. - - The openafs commit: - Linux-5.18 replace set_page_dirty with dirty_folio (6aa129e743e88) - introduced an autoconf test that checks for the presence of aops' - dirty_folio member and assumed that the Linux function - block_dirty_folio() was also provided (since all three of the above - Linux commits were added in Linux-5.18-rc1). - - Without the (e621900ad2) commit, the openafs Linux kernel module fails - to build since block_dirty_folio() is not defined by Linux. - - Introduce new autoconf tests that checks for the presence of the - block_dirty_folio() function. - - Change the preprocessor conditional within LINUX/osi_vnodeops.c to only - use dirty_folio if aops has dirty_folio and block_dirty_folio() is - available. When block_dirty_folio() is not available, we continue to - use the older set_page_dirty method, which remains a valid method until - its removal by the (3a3bae50af) Linux commit. - - Note: Reviewing the Linux source for RedHat 9.1 shows that there is only - one location that is defining the dirty_folio member and it is providing - its own function instead of relying on block_dirty_folio. - - Reviewed-on: https://gerrit.openafs.org/15199 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e7737edb932a1c4d55a2551a44e481b40310c96d) - - Change-Id: If29ad539c5530289ffa49aa1fa489f612e9f5c78 - Reviewed-on: https://gerrit.openafs.org/15228 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 9d217903f0c7f6b260f166fad6dbf77c67df7c2d -Author: Marcio Barbosa -Date: Thu Feb 13 00:39:00 2020 -0300 - - vos: take RO volume offline during convertROtoRW - - The vos convertROtoRW command converts a RO volume into a RW volume. - Unfortunately, the RO volume in question is not set as "out of service" - during this process. As a result, accesses to the volume being converted - can leave volume objects in an inconsistent state. - - Consider the following scenario: - - 1. Create a volume on host_b and add replicas on host_a and host_b. - - $ vos create host_b a vol_1 - $ vos addsite host_b a vol_1 - $ vos addiste host_a a vol_1 - - 2. Mount the volume: - - $ fs mkmount /afs/.mycell/vol_1 vol_1 - $ vos release vol_1 - $ vos release root.cell - - 3. Shutdown dafs on host_b: - - $ bos shutdown host_b dafs - - 4. Remove RO reference to host_b from the vldb: - - $ vos remsite host_b a vol_1 - - 5. Attach the RO copy by touching it: - - $ fs flushall - $ ls /afs/mycell/vol_1 - - 6. Convert RO copy to RW: - - $ vos convertROtoRW host_a a vol_1 - - Notice that FSYNC_com_VolDone fails silently (FSYNC_BAD_STATE), leaving - the volume object for the RO copy set as VOL_STATE_ATTACHED (on success, - this volume should be set as VOL_STATE_DELETED). - - 7. Add replica on host_a: - - $ vos addsite host_a a vol_1 - - 8. Wait until the "inUse" flag of the RO entry is cleared (or force this - to happen by attaching multiple volumes). - - 9. Release the volume: - - $ vos release vol_1 - - Failed to start transaction on volume 536870922 - Volume not attached, does not exist, or not on line - Error in vos release command. - Volume not attached, does not exist, or not on line - - To fix this problem, take the RO volume offline during the vos - convertROtoRW operation. - - Reviewed-on: https://gerrit.openafs.org/14066 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 32d35db64061e4102281c235cf693341f9de9271) - - Change-Id: I00a99819ac7d1d981695da3eae1bd60de1cb53ae - Reviewed-on: https://gerrit.openafs.org/15233 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 5a48ce589a24f2280b085e50718b05d08db918bd -Author: Marcio Barbosa -Date: Fri Mar 6 15:15:38 2020 +0000 - - vol: fix namei_ConvertROtoRWvolume return code - - Commit 8632f23d6718a3cd621791e82d1cf6ead8690978 introduced checks for - the return value of snprintf calls in namei_ops. On success, the value - returned by this function represents the number of written characters. - Unfortunately, the variable used to store this value is the same - variable that represents the status code returned by - namei_ConvertROtoRWvolume. Consequently, a successful execution of - namei_ConvertROtoRWvolume results in a status code different the 0 (and - equal to the number of written characters). - - To fix this problem, set the status code in question back to 0 after a - successful execution of namei_ConvertROtoRWvolume. - - Reviewed-on: https://gerrit.openafs.org/14065 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 957b06984b77cba74bd90217b723220c1844809b) - - Change-Id: If82cf4d2983e7b6f8975ca4a9fa104ee5e36b917 - Reviewed-on: https://gerrit.openafs.org/15232 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 3084117f10bd62acb1182cb54fc85b1d96738f70 -Author: Cheyenne Wills -Date: Fri Nov 4 08:33:39 2022 -0600 - - Linux: Fix functions without prototypes - - The Linux kernel build has -Wstrict-prototypes enabled and flags - functions without a proper prototype. With clang-16 these warnings are - reported as errors when the kernel is configured with CONFIG_WERROR or - when openafs is configured with --enable-checking. - - src/libafs/MODLOAD-6.1.0-rc3-SP/osi_alloc.c:339:32: error: a - function declaration without a prototype is deprecated in all - versions of C [-Werror,-Wstrict-prototypes] - osi_linux_verify_alloced_memory() - ^ - void - - Update function prototypes to comply with -Wstrict-prototypes. + clang: Don't redefine printf in salvage.c + + 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: + + 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. + + 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. + + Remove the: + #define printf Log + in src/dir/salvage.c and update callers to use Log() instead of + printf(). + + 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 with this commit. - Reviewed-on: https://gerrit.openafs.org/15194 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 63db2de22ef75292463ec1f0979e32afc05d0b95) - - Change-Id: I2e9c09c3b88ca3597720b1d8885537600d307418 - Reviewed-on: https://gerrit.openafs.org/15275 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit c990b0d086632aef51585beabb42fd9ff22d1fc4 -Author: Cheyenne Wills -Date: Thu Dec 1 10:00:06 2022 -0700 - - libadmin: Fix RPCStatsStateGet 'rpc' prototype - - clang-16 is flagging a incompatible-function-pointer-types warning which - results in build errors when --enable-warning is turned on. - - client.c:498:13: error: incompatible function pointer types passing - 'int (struct rx_connection *, afs_int32 *)' - (aka 'int (struct rx_connection *, int *)') to parameter of type - 'int (*)(struct rx_connection *, afs_RPCStatsState_p)' - (aka 'int (*)(struct rx_connection *, afs_RPCStatsState_t *)') - [-Wincompatible-function-pointer-types] - - (conn, RXSTATS_QueryPeerRPCStats, &state, &st)) { - ^~~~~~~~~~~~~~~~~~~~~~~~~ - - Update the 'util_RPCStatsStateGet()' function's parameter to match the - function type for the RPC functions actually being called. - - Reviewed-on: https://gerrit.openafs.org/15180 + Reviewed-on: https://gerrit.openafs.org/15462 Tested-by: BuildBot Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 97f0a20e50f027fe00adb22c39b71f0ac79f1ff7) - - Change-Id: Icbbbd137fa6a404090ef7af94621100bb552d502 - Reviewed-on: https://gerrit.openafs.org/15274 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 973c5c585f59c0e88a2852d290abcb5e8fdf2b86 -Author: Cheyenne Wills -Date: Thu Dec 1 12:09:09 2022 -0700 - - clang-16: Fix simple unused-but-set variables - - Clang-16 is flagging variables as unused-but-set-variables resulting in - build errors when --enable-warning is used. - - db_verify.c:996:9: error: variable 'builtinUsers' set but not used - [-Werror,-Wunused-but-set-variable] - int builtinUsers = 0; - ^ - Remove the variables that are set but never actually used. - - This commit fixes the simpler cases where variables are only set but - not used elsewhere. - - Reviewed-on: https://gerrit.openafs.org/15178 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit afafde158ff875d2459bb81ac373cde3e45dac03) - - Change-Id: I65cd27325b768ba192831401f4ac71e94071ecc7 - Reviewed-on: https://gerrit.openafs.org/15273 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit f336d0aa01d208b1a7f3c1c509e2bd5d4d11f095 -Author: Cheyenne Wills -Date: Wed Nov 2 14:47:04 2022 -0600 - - clang-16: Fix conditionally unused-but-set variables - - clang-16 is flagging unused-but-set variables which result in build - errors when --enable-warning is turned on. - - remote.c:485:15: error: variable 'pass' set but not used - [-Werror,-Wunused-but-set-variable] - afs_int32 pass; - ^ - These variables are actually used in specific cases depending on - build configuration (e.g. AFS_PTHREAD_ENV, etc.). - - Relocate these variables so they are fully defined or referenced within - preprocessor '#if' blocks. - - Reviewed-on: https://gerrit.openafs.org/15177 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 97018ace991d300a6ff75a1dcd1a69b4044f2b89) - - Change-Id: Iee3a196d9c23a8725171db4a3a884a077f0e95ac - Reviewed-on: https://gerrit.openafs.org/15277 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit fb3071563922df8172bab261e8f0c3e3e779b666 -Author: Cheyenne Wills -Date: Thu Dec 1 09:05:58 2022 -0700 - - clang-16: Fix unused-but-set 'for' control vars - - clang-16 is flagging unused-but-set variables which result in build - errors when --enable-warning is turned on. Several of these variables - are used within 'for(..)' loops but are not actually referenced anywhere - else. - - fcrypt.c:181:16: error: variable 'i' set but not used - [-Werror,-Wunused-but-set-variable] - afs_uint32 i, j; - ^ - Refactor the for statements to eliminate the unused variables. - - Note, this commit is a little more complex than simply removing unused - variables. - - Reviewed-on: https://gerrit.openafs.org/15176 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 05eb420829f9bca155c1d5af9fe96844db974770) - - Change-Id: I80506cb8ae1c4bef67225eb11e3f640e8de52d26 - Reviewed-on: https://gerrit.openafs.org/15271 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit b87081682dcc3035889c799d9752c6b35bdda87b -Author: Cheyenne Wills -Date: Mon Nov 14 15:55:41 2022 -0700 - - crypto: Define krb5_keytype as krb5_enctype - - When building with clang-16 and configured with --enable-checking, the - external source heimdal/krb5/crypto.c used in src/crypto/rfc3961 fails - with the following error: - - src/external/heimdal/krb5/crypto.c:702:28 - error: implicit conversion from enumeration type 'krb5_enctype' (aka - 'enum ENCTYPE') to different enumeration type 'krb5_keytype' (aka - 'enum krb5_keytype') [-Werror,-Wenum-conversion] - *keytype = e->keytype->type; /* XXX */ - ~ ~~~~~~~~~~~~^~~~ - - Replace the enum definition of krb5_keytype with a typedef to - krb5_enctype and create an anonymous enum mapping of KEYTYPE_ARCFOUR to - ETYPE_ARCFOUR_HMAC_MD5. - - It should be noted that krb5_keytype and KEYTYPE_ARCFOUR are only used - by the external file src/external/heimdal/krb5/crypto.c - - Changing the type for krb5_keytype was suggested by Andrew Deason - (adeason@sinenomine.net). - - Reviewed-on: https://gerrit.openafs.org/15189 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c9ac7cdfb6365e3fc1914de80019a10328de1f4f) - - Change-Id: I15a793b35cfa920e8db1a99c5575b4f3f55be0dd - Reviewed-on: https://gerrit.openafs.org/15270 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 334debcd4c9032aa7c71bb79bce2be8acafe78e2 -Author: Cheyenne Wills -Date: Wed Nov 2 14:53:21 2022 -0600 - - dumptool: Remove unused 'sflag' variable - - clang-16 is flagging unused-but-set variables which result in build - errors when --enable-warning is turned on. - - ./dumptool.c:1285:54: error: variable 'sflag' set but not used - [-Werror,-Wunused-but-set-variable] - int errflg = 0, lflag = 0, iflag = 0, Fflag = 0, sflag = 0, Rflag = 0; - - Within dumptool the '-s' option of the 'ls' subcommand sets the 'sflag' - variable, but the variable itself is never used anywhere else. - - Remove the variable 'sflag', and ignore the '-s' option. - - The sflag variable was unused in the commit that introduced the code: - "test-suite-pull-tools-directly-in-20020114" (fcb32c07ed6d) - - Reviewed-on: https://gerrit.openafs.org/15181 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 3e9d41c98ecf07519ff6d2a1413615547ace13b8) - - Change-Id: I4cd4584c6374a525714d392f98fb39be5406bdbc - Reviewed-on: https://gerrit.openafs.org/15269 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 241dcae439cb1646f053391b3ee57553003cf6fa -Author: Cheyenne Wills -Date: Fri Oct 28 17:53:15 2022 -0600 - - libuafs: include com_err.h in ukernel_swig.i - - clang-16 is flagging an implicit-function-definition which results in a - build error when --enable-warning is turned on. - - PERLUAFS/ukernel_swig_perl.c:1585:9: error: call to undeclared - function 'afs_com_err'; ISO C99 and later do not support - implicit function declarations [-Wimplicit-function-declaration] - afs_com_err("AFS::ukernel", code, "parsing line: '%s'", line); - ^ - - Add an include for afs/com_err.h to resolve the warning. - - Reviewed-on: https://gerrit.openafs.org/15179 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 4be3e5d31fa3fbe6c80ad0973430074124b157bc) - - Change-Id: I62785fe6248cb4b26f680c2db044f59511a1e02e - Reviewed-on: https://gerrit.openafs.org/15268 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 0b908b7b9b39e36fc1bf98701d7e28d9a7a2f310 -Author: Cheyenne Wills -Date: Fri Nov 4 08:24:09 2022 -0600 - - rx: Remove event_handler rx_pthread_* counters - - The event_handler() function contains several counters that are - set and incremented but are not actually used. Clang-16 is flagging - these with a 'unused-but-set-variable' warning resulting in build errors - when --enable-warnings is used. - - rx_pthread.c:136:19: error: variable 'rx_pthread_n_event_expired' set - but not used [-Werror,-Wunused-but-set-variable] - unsigned long rx_pthread_n_event_expired = 0; - - Several 'if' statements are used to conditionally set these variables, - but serve no other purpose. These 'if' statements can also be - eliminated. - - Remove the unused rx_pthread_* counter variables as well as the - associated 'if' statements. In addition the only purpose of the - 'error' variable was to conditionally increment one of the removed - variables, remove the 'error' variable. - - These variables have been 'unused but set' since the original commit - from IBM. - - Reviewed-on: https://gerrit.openafs.org/15175 - Reviewed-by: Benjamin Kaduk - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot - Reviewed-by: Andrew Deason - (cherry picked from commit f7cb492c7e755ec91226c96cc82ad9f567f01f11) - - Change-Id: I4dfdd7e536f6af642789fc51f6f055652c63a46d - Reviewed-on: https://gerrit.openafs.org/15267 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 5af53db475cdf4350d1cc41c9d4d955156eced57 -Author: Mark Vitale -Date: Sun Jan 26 20:17:40 2020 -0500 - - afs: silence bogus warning about dcListCount uninitialized - - Commit 3be5880d1d2a0aef6600047ed43d602949cd5f4d 'afs: Avoid panics in - afs_InvalidateAllSegments' is correct, but at least one compiler (gcc - 4.3.4 on SLES 11.3) is fooled into issuing a warning: - - [...]/afs_segments.c: In function 'afs_InvalidateAllSegments_once': - [...]/afs_segments.c:506: error: 'dcListCount' may be used uninitialized in this function - - To silence the bogus warning, initialize dcListCount when defined. - - Reviewed-on: https://gerrit.openafs.org/14048 - Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk - (cherry picked from commit 09ec1073b4c5d2eb70dcf5d8063018bc82e5a35e) + (cherry picked from commit df7f841f3852b5417a1d4ebc981780f2d7651b60) - Change-Id: I84b1d4b8b9041242d64b03a84ad4392ff9778950 - Reviewed-on: https://gerrit.openafs.org/15266 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 05a4adcdffaa75827fbdd80ab7b54195a2f0d243 -Author: Ganesh Chaudhari -Date: Fri Oct 7 21:52:40 2022 +0530 - - macos: Update postinstall instructions for MacOS 13 - - System preferences is getting replaced by System settings in MacOS 13. - So, this commit will address the required changes in the dialog box - which gets popped after installing OpenAFS. - - Signed-off-by: Ganesh Chaudhari - Reviewed-on: https://gerrit.openafs.org/15150 + Change-Id: I9a7d9e70184eb1dbd04f2b1a0e9a668138baaabe + Reviewed-on: https://gerrit.openafs.org/15548 Tested-by: BuildBot Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit c620c91416f726357d556ce043b6cc285cf87a8b) - - Change-Id: I6d8da31dc3735cab93c2b2226d436960c77b78ff - Reviewed-on: https://gerrit.openafs.org/15264 - Reviewed-by: Ganesh G. Chaudhari Reviewed-by: Michael Meffie - Tested-by: BuildBot + Reviewed-by: Indira Sawant + Reviewed-by: Kailas Zadbuke Reviewed-by: Stephan Wiesand -commit 9c6503e117f52dba91e10a09eb8d28c428550e34 -Author: Ganesh Chaudhari -Date: Fri Oct 7 19:13:34 2022 +0530 - - macOS: Add support for aarch64-*-darwin* sysname - - As of libtool 2.4.7, the supplied config.guess file modifies - the sysname returned on macOS arm64 from arm-*-darwin* to - aarch64-*-darwin*. As a result, trying to build OpenAFS on - macOS arm64 fails with the following message: - - configure: error: An AFS sysname is required - - To avoid this problem, added support for aarch64-*-darwin*. - - Signed-off-by: Ganesh Chaudhari - Reviewed-on: https://gerrit.openafs.org/15149 - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit d38b068627f5e84cead88af85f904fea0c8edb6d) - - Change-Id: I7685c2b75f62fe28b8723e00fba22f5f7fe795f1 - Reviewed-on: https://gerrit.openafs.org/15263 - Reviewed-by: Ganesh G. Chaudhari - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 41e46e12ac74fab70c692cf475aad13be0bdb518 -Author: Ganesh Chaudhari -Date: Wed Sep 14 15:57:27 2022 +0530 - - macos: Add support for MacOS 13.0 (Ventura) - - This commit introduces the new set of changes / files required to - successfully build the OpenAFS source code on OS X 13.0 “Ventura”. - - Thank you Kailas Zadbuke (IBM) and Harish Sharma (IBM) for your help. - - Reviewed-on: https://gerrit.openafs.org/15139 - Tested-by: BuildBot - Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit e5a97ef2b46c8821db81363f4917ef214fc34a5e) - - Change-Id: I5092fe02a3bc3b7a6cb4ecfd4c8660278da9b0e8 - Reviewed-on: https://gerrit.openafs.org/15262 - Reviewed-by: Ganesh G. Chaudhari - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit f6b088d2a7fe7fcabeb6b4635c8a01072c7219c4 -Author: Marcio Barbosa -Date: Sun Jun 20 00:52:36 2021 -0300 - - klog.krb5: remove "save and reuse password" logic - - In order to avoid repeated requests for the user's password, klog.krb5 - caches and reuses it whenever necessary. However, with the introduction - of commit 3a9a5783cd1fd73902655f0876e2069b42688c94, klog.krb5 always - requests a TGT regardless of the state of writeTicketFile, eliminating - the need for possible extra requests for the user's password. - - Moreover, krb5_get_init_creds_password() does not accept a custom - prompter on macOS (returns EINVAL). Consequently, if the -password - argument is omitted, klog.krb5 fails with the following error: - - klog: Invalid argument Unable to authenticate in realm - - Given that the user won't be prompted for a password multiple times, - remove the "save and reuse password" logic and use krb5_prompter_posix() - as the prompter function (instead of klog_prompter). - - Relevant issue identified by gangovind@in.ibm.com. - - Reviewed-on: https://gerrit.openafs.org/14643 - Tested-by: BuildBot - Reviewed-by: Ganesh G. Chaudhari - Tested-by: Ganesh G. Chaudhari - Reviewed-by: Benjamin Kaduk - (cherry picked from commit a10f99dbe025c74fb488b501daaf1f9574830cec) - - Change-Id: I6587283d93a2dc801c8a41f0663a6de1b5d8a045 - Reviewed-on: https://gerrit.openafs.org/15261 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 69f1ffb8989d8f1ac9a5ac4ea9459c358478e61d -Author: Marcio Barbosa -Date: Thu Apr 7 22:51:21 2022 +0000 - - DARWIN: On macOS 12, mount afs on user's directory - - Currently, /afs is mounted/unmounted by a LaunchDaemon. In order to - unmount /afs on restart/shutdown, this daemon runs umount -force /afs. - Unfortunately, SIP (System Integrity Protection) is not allowing the - LaunchDaemon in question to run this command successfully on macOS 12 - (exclusively on restart/shutdown): - -   umount: Operation not permitted - - In this situation, afs can't be turned off correctly, leaving many - unkillable afsd processes lingering around. As a result, the - restart/shutdown process gets stuck indefinitely. - - Fortunately, this problem doesn't happen if /afs is mounted on an user's - directory. That said, avoid this issue by mounting /afs on the current - user's directory (/Users/$USER/OpenAFS/afs). Notice that afs is still - accessible (including for other users) through a synthetic link added in - the root directory (/afs -> /Users/$USER/OpenAFS/afs). - - Reviewed-on: https://gerrit.openafs.org/14925 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 1c7eda8ea83bee3e674435109efccbc6082e4765) - - Change-Id: Idb013d76f00a78cfebd790900eabbcd6968029b7 - Reviewed-on: https://gerrit.openafs.org/15260 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit fd64dcd3fb49e5575bf0ac8f0bb36857953c4f8a -Author: Marcio Barbosa -Date: Tue Mar 15 10:58:16 2022 -0300 - - macos: Packaging support for MacOS X 12.0 - - This commit introduces the new set of changes / files required to - successfully create the dmg installer on OS X 12.0 "Monterey". - - Reviewed-on: https://gerrit.openafs.org/14924 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 873d803a3dc7acffd74c9432872bed4f6575abf9) - - Change-Id: I4cbbbeb5eb740b4f7979fa2137cb7faa9027d774 - Reviewed-on: https://gerrit.openafs.org/15259 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 046e787f1f87c6e18676510f7f89206ead1069bb -Author: Marcio Barbosa -Date: Thu Apr 7 03:16:45 2022 +0000 - - macos: Add support for MacOS 12.0 - - This commit introduces the new set of changes / files required to - successfully build the OpenAFS source code on OS X 12.0 "Monterey". - - Reviewed-on: https://gerrit.openafs.org/14923 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 7a862f940b2e2f2169e267fc6deb31db8f3534c0) - - Change-Id: I4f1b42002c670e15b3fecfd8d0cfb2f461b8d136 - Reviewed-on: https://gerrit.openafs.org/15258 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit fc80c74689ae6be3f428401aec071f0a273d4bff -Author: Mark Vitale -Date: Tue May 12 12:59:31 2020 -0400 - - DARWIN: disable kextutil check for versions requiring notarization - - Our kextutil signing check will fail for releases that require - notarization (Mojave 10.14.5 and up, Catalina 10.15 all versions), - because we aren't notarized yet at the time of the check. - - Instead, disable the check for those releases. - - Reviewed-on: https://gerrit.openafs.org/14222 - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit d2e755e33a266df17169a1fc05db1e540b5e76af) - - Change-Id: Ie191503cb3f57c60a2a9c31e638dc7f79c496591 - Reviewed-on: https://gerrit.openafs.org/15257 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 6652a632795aa23e1894c049f2d48c0881968add -Author: Mark Vitale -Date: Sun May 10 20:53:22 2020 -0400 - - DARWIN: ensure OpenAFS.pkg is signed - - Installation fails because the OpenAFS.pkg was inadvertently omitted - from the codesign logic. - - Ensure that the package is signed. - - Reviewed-on: https://gerrit.openafs.org/14221 - Reviewed-by: Marcio Brito Barbosa - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 336f5d91c6f4e93f77560d456fb29fbd82b237e5) - - Change-Id: I58c0ca157653b76562ee7071a567db681d33fc2e - Reviewed-on: https://gerrit.openafs.org/15256 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit d20def23d094b11b88265d1f7430fc5e4d55484a -Author: Mark Vitale -Date: Sun May 10 20:51:59 2020 -0400 - - DARWIN: ensure PrefPane materials are properly signed - - Notarization fails because some prefPane materials were inadvertently - omitted by the codesign logic. - - Ensure that these objects are properly signed. - - Reviewed-on: https://gerrit.openafs.org/14220 - Reviewed-by: Marcio Brito Barbosa - Tested-by: BuildBot - Reviewed-by: Benjamin Kaduk - (cherry picked from commit d3f8d8122880de9f5b25868b39efd1cc7d385ff6) - - Change-Id: Ice6c954e41e375fbe8ac670586d2616c565f0499 - Reviewed-on: https://gerrit.openafs.org/15255 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 35fde5873a1a9327333d15af399738ae55680e22 -Author: Marcio Barbosa -Date: Tue Mar 15 10:38:45 2022 -0300 - - DARWIN: Replace afs_osi_cred by allocated ucred - - Building the current version of OpenAFS on macOS Monterey arm64 results - in the following error: - - error: globals with authenticated null values are currently unsupported - afs_ucred_t afs_osi_cred; - - To avoid this problem, replace the global in question by a pointer to a - dynamically allocated afs_osi_cred (afs_osi_credp). Ideally we would - create a new credential with kauth_cred_create(), but this function is - not well documented and using it results in crashes. Moreover, if the - kauth_cred_dup() function were still available (private since XNU - 1456.1.26 - macOS 10.6), we could also duplicate the current user's - credential during startup (like commit f40f466c7f did for BSD). - - Reviewed-on: https://gerrit.openafs.org/14922 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 982d2f9dbe6586d06ffa2a61c02ea726b83b5902) - - Change-Id: I720132478d4d1b742f63576e6a98e96c7a935885 - Reviewed-on: https://gerrit.openafs.org/15254 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 29f7182c3fe25db9666871567a631e9173568ac8 -Author: Andrew Deason -Date: Mon Feb 25 11:35:24 2019 -0600 - - Remove references to SunOS 4 - - We already removed support for Solaris versions before Solaris 8, in - commit e4c2810f ("Remove support for Solaris pre-8"), but there are - still some references to SunOS (meaning SunOS 4) in the tree. This is - even older than Solaris (aka SunOS 5), so get rid of these. - - This commit removes most references to SunOS 4 regarding platform - support, and a few comments. This also removes a few comments that - were just wrong or nonsensical (e.g. CMAPPED in afs.h is used by - other platforms; some comments in platform-specific osi_file.c files - referenced SunOS for some reason). - - Reviewed-on: https://gerrit.openafs.org/13506 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 6e5638ac7297701a99ea396dee1df8f56a6a50da) - - Change-Id: I17821e2cd0050bb0a468bfadda2c446beafeb537 - Reviewed-on: https://gerrit.openafs.org/15253 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit 3ee628c2dc5128ac68dd861b439a20db8837cecf -Author: Andrew Deason -Date: Fri Sep 21 12:11:46 2018 -0500 - - Remove alpha_dux/alpha_osf references - - Several files were still referencing the alpha_dux* and alpha_osf* - sysnames. The code for these platforms has been removed, so get rid of - this cruft. - - Reviewed-on: https://gerrit.openafs.org/13339 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 809ee49b80d7bc0e720aaebe78fb9ecfd453065d) - - Change-Id: Iae1f642df6cfb4c2e757f0fc381cb98eb5bf448e - Reviewed-on: https://gerrit.openafs.org/15252 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 8ec429d0a3a7b3169d1eb24eb37e8084e5bc6a4f -Author: Marcio Barbosa -Date: Mon Mar 21 14:43:34 2022 -0300 - - DARWIN: Drop afs_event lock before destroying it - - On macOS arm64, a lock (lck_mtx_t) must be released (lck_mtx_unlock) - before it can be destroyed/freed (lck_mtx_free -> lck_mtx_destroy). If - this rules isn't respected, the operating system in question will panic - with the following message: - - panic("lck_mtx_assert(): mutex (%p) not owned", lock); - - Unfortunately, the current shutdown process of the osi_sleep module - doesn't respect this rule. As a result, macOS arm64 panics when the - OpenAFS client is shut down/restarted. To fix this problem, release - afs_event->lck (EVTLOCK_UNLOCK) before destroying it (EVTLOCK_DESTROY). - - Reviewed-on: https://gerrit.openafs.org/14933 - Tested-by: BuildBot - Reviewed-by: Mark Vitale - Tested-by: Mark Vitale - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 93b88935999ad25bc22daf64f9ebff30957e0a27) - - Change-Id: Ib81c3decc748c06b2f99cfa155095bffd1048f57 - Reviewed-on: https://gerrit.openafs.org/15251 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit b5dd4df6ec3e87c7f06d214b213e30270a358f13 -Author: Marcio Barbosa -Date: Thu Apr 7 22:35:02 2022 +0000 - - macos: Add support for Apple Silicon - - This commit introduces the new set of changes / files required to - successfully build the OpenAFS source code on Apple M1 (macOS 11+). - - Notice that kexts on Apple silicon must support the arm64e architecture, - since they run in kernel space and must support the same architecture - and restrictions as other kernel code. On the other hand, the utilities - that run on user space, like vos, fs, and others, have to be built for - arm64 (currently). - - Reviewed-on: https://gerrit.openafs.org/14746 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: Andrew Deason - (cherry picked from commit cdbcb6f947feff528adc324dd6487b21083e23aa) - - Change-Id: I854e7553b65956032a3c15aa427189bf8e4e3a0d - Reviewed-on: https://gerrit.openafs.org/15250 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 33bcff698f8b12c7830acf969f93eecad52a937f -Author: Marcio Barbosa -Date: Thu Apr 7 02:15:57 2022 +0000 - - macos: Refactor param.x86_darwin_200.h - - In preparation for a future commit, try to make param.x86_darwin_200.h - more readable. Also, rename this file to param.darwin_200.h so code from - other architectures can be included in this header. - - Reviewed-on: https://gerrit.openafs.org/14934 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 39b74c2c3725cfa39fc5076cd7803ee7d55923e3) - - Change-Id: I184591c24fac37b4c5a2b6fab7b42850b3004744 - Reviewed-on: https://gerrit.openafs.org/15249 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit b9c3dbc0a60a3295f1622bc79a05938173aa95b4 -Author: Marcio Barbosa -Date: Mon Feb 14 15:09:27 2022 -0800 - - build: Select param.h in sysname.m4 - - Currently, the way the file that will be used as param.h is selected - doesn't allow us to choose headers from other architectures, making - cross-compiling difficult. In an effort to facilitate this process, - select the header that will be used as param.h in sysname.m4. By doing - this, we will have more flexibility to select which header should be - used (in future commits). - - Reviewed-on: https://gerrit.openafs.org/14914 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit d456bd9b258445f60745867c34ef7c7a8c7be187) - - Change-Id: Iaaa372887ac17f352a6a4bb9c14b896e88e3b28b - Reviewed-on: https://gerrit.openafs.org/15248 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit 84b177ccc856519a6a1aac7e18cd30514fccac15 -Author: Marcio Barbosa -Date: Wed Apr 6 23:36:15 2022 +0000 - - macos: Build afscell for supported architectures - - Given that i386 is no longer supported, trying to build the current - version of afscell on macOS 11 (Big Sur) results in the following error: - - error: The i386 architecture is deprecated. You should update your ARCHS - build setting to remove the i386 architecture. - - To fix this problem, build afscell for all architectures listed in - ARCHS_STANDARD. - - For the macosx11.0 sdk: - - $ xcodebuild -showBuildSettings -scheme afscell -sdk macosx | grep ARCHS - - ARCHS = arm64 x86_64 - ARCHS_STANDARD = arm64 x86_64 - ARCHS_STANDARD_32_64_BIT = arm64 x86_64 i386 - ARCHS_STANDARD_32_BIT = i386 - ARCHS_STANDARD_64_BIT = arm64 x86_64 - ARCHS_STANDARD_INCLUDING_64_BIT = arm64 x86_64 - VALID_ARCHS = arm64 arm64e i386 x86_64 - - While here, add arm64 to the list of valid architectures. - - Reviewed-on: https://gerrit.openafs.org/14745 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit dc6ced5e6d63ad89b1ad6f6b236a28b823abb59d) - - Change-Id: I483c41a5954caa8ed080134d82f2e08a7c1973a4 - Reviewed-on: https://gerrit.openafs.org/15247 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: BuildBot - Reviewed-by: Stephan Wiesand - -commit a0898c2d90ed2928245576505f74e935a1ea2722 +commit d19554327fa92cee4eb2d914304fed02e20543e7 Author: Cheyenne Wills -Date: Mon Sep 19 16:25:13 2022 -0600 +Date: Tue Sep 24 15:59:47 2019 -0600 - UKERNEL: avoid double include of roken.h + Retire the AFS_PTR_FMT macro - Commit 'afs: Replace strcpy &co by safer alternatives' (419f0cd7aa75719) - added an include for roken.h into UKERNEL/afsincludes.h. Neither - UKERNEL/afsincludes.h or roken.h has a guard against a double include, - which can result in a build failure on older kernels (discovered on a - 2.6.18 build): + Originally '%x' was commonly used as the printf specifier for formatting + pointer values. - In file included from ~/openafs/src/afs/UKERNEL/afsincludes.h:30, - from ~/openafs/src/afs/UKERNEL/afs_usrops.h:15, - from ~/openafs/src/afs/UKERNEL/afs_usrops.c:24: - include/roken.h:89: error: redefinition of typedef 'rk_socket_t' - include/roken.h:89: error: previous declaration of 'rk_socket_t' was here - In file included from ~/openafs/src/afs/UKERNEL/afsincludes.h:30, - from ../afs/afsincludes.h:16, - from ../afs/afs_bypasscache.h:68, - from ~/openafs/src/afs/UKERNEL/afs_usrops.c:30: + 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. - Since roken.h is from an external source, we cannot update it to add - the necessary check. + 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. - Update UKERNEL/afsincludes.h to add a check to see if it has already - been included. + 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. - auth/ktc.c has a required include for roken.h, but it also can pull in - UKERNEL/afsincludes.h as well. This can result in a double include for - roken.h. - - Update auth/ktc.c to only include roken.h if not building UKERNEL. - - Reviewed-on: https://gerrit.openafs.org/15130 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Tested-by: BuildBot + Reviewed-on: https://gerrit.openafs.org/13830 Reviewed-by: Benjamin Kaduk - (cherry picked from commit cc0ffc56e85eec4133bcc5e745efa28f5d3c53a7) - - Change-Id: I4508c2d4bb878dadce649f0da2af16c9efa69b91 - Reviewed-on: https://gerrit.openafs.org/15265 - Reviewed-by: Michael Meffie Tested-by: BuildBot - Reviewed-by: Harish Sharma + 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 5993965112da00e29ebdb2be084b50bae5cbb90f -Author: Marcio Barbosa -Date: Wed Mar 23 17:58:41 2022 -0300 +commit e644e2fc7db3cf9186184fc3586b8c8320f458a5 +Author: Mark Vitale +Date: Sun Mar 3 20:51:45 2019 -0500 - DARWIN: Declare/include functions before using them + dir: check afs_dir_MakeDir return code in DirSalvage - Every function should be explicitly declared before it can be called. - Since -Wimplicit-function-declaration is usually a warning and not an - error, calling undeclared functions does not prevent us from building - the code. + 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. - However, apple-clang 12 makes this an error by default, prohibiting the - build of the current version on macOS 11 (Big Sur). + In preparation for a future commit, add a check for the return from + afs_dir_MakeDir and remove the comment. - To fix this problem, declare functions before calling them. Also, - include mach/thread_act.h into afs_call.c so the declaration of - thread_terminate() can be found on macOS. Last, given that the third - argument of PIOCTL() (if UKERNEL is defined) is a pointer, cast it to - 'long'. Doing so, we can avoid another inhibited warning. Notice that - this PIOCTL definition is scoped to a single file (src/auth/ktc.c). - - Reviewed-on: https://gerrit.openafs.org/14744 + 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 f9c96d0fd609e14fcb8ff7d9269024e026f742cb) + (cherry picked from commit 0639ca8d221231309d59882a63e5a95a10cfdac3) - Change-Id: I70dadc44d40e1fc877f9e0490e28636907432faa - Reviewed-on: https://gerrit.openafs.org/15246 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma + 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 - Tested-by: Stephan Wiesand -commit 34d869996dda2de2449a1623de051b86e262212c +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) + + Change-Id: I53f4d330c5a4c44ae8619619ba9584006375bf29 + Reviewed-on: https://gerrit.openafs.org/15544 + Tested-by: BuildBot + Reviewed-by: Marcio Brito Barbosa + Reviewed-by: Kailas Zadbuke + Reviewed-by: Indira Sawant + Reviewed-by: Stephan Wiesand + +commit 08a90850fd792718ec5abdda172ab0214abfced6 Author: Andrew Deason -Date: Fri Jan 21 17:54:48 2022 -0600 +Date: Tue Feb 7 22:48:23 2023 -0600 - afs: Organize setpag() declarations better + vol: Re-evaluate conditons for cond vars - The current declarations for setpag() are a mess (not to be confused - with many other setpag functions, like afs_setpag()), accumulated - across various commits over time. Shuffle the #ifdef logic around, so - this becomes a much more straightforward #ifdef ladder, with one - declaration per conditional. And move the LINUX declaration to be next - to all of the others (even the LINUX setpag() is declared in - osi_groups.c, not osi_misc.c, so it's in the wrong spot anyway). + Most users of cond vars follow this general pattern when waiting for a + condition: - The resulting #ifdef logic should be identical to the original code, - but is now easier to follow. For the BSDs, it may look like we have - changed the conditional for the case of "XBSD && !DFBSD && !FBSD && - !NBSD", but that's a very roundabout way of saying OBSD (OpenBSD). + while (!condition) { + CV_WAIT(cv, mutex); + } - Reviewed-on: https://gerrit.openafs.org/14883 - Tested-by: BuildBot - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit 738a6487ad088068d19a18c6330e01a40f2fd278) + But a few places in src/vol do this: - Change-Id: I9dc933fa96fc6e7839c010c5207e644179343898 - Reviewed-on: https://gerrit.openafs.org/15245 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: Andrew Deason - Reviewed-by: Stephan Wiesand - -commit b56d5cdfa8cfff3bd3c166a38204cfa4dceaaf73 -Author: Marcio Barbosa -Date: Wed Mar 23 17:31:54 2022 -0300 - - bucoord: Introduce ubik_Call_SingleServer_BUDB_* + if (!condition) { + CV_WAIT(cv, mutex); + } - In an effort to avoid the usage of undeclared functions, add wrappers - for ubik_Call_SingleServer() (_BUDB_GetVolumes(), _BUDB_DumpDB()) and - adjust its callers accordingly. + 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. - Also, make sure that ubik_Call_SingleServer() uses the same signature as - ubik_Call(). This change helps us to get rid of casting errors. + 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. - Reviewed-on: https://gerrit.openafs.org/14886 - Reviewed-by: Andrew Deason + 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. + + 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 Tested-by: BuildBot - (cherry picked from commit 981b3d723ec56dad553be570147d1b2aa632f4e1) + (cherry picked from commit 9bc06a059121207b354fdf97f65029d8c2b3df30) - Change-Id: I5893a939bc5cd64eec9dbbf1ce8a0dc5032c81f0 - Reviewed-on: https://gerrit.openafs.org/15244 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - Tested-by: Stephan Wiesand - -commit 1e6fd4ceae1f8146a5dfa7c66330289564dbe7be -Author: Marcio Barbosa -Date: Tue Apr 5 22:39:56 2022 +0000 - - afs: Ensure dirEntry->name has room for entry name - - Currently, the afs_dynroot_addDirEnt() function assumes that the caller - has allocated the directory to be large enough to hold the necessary - entry. In order to make sure that memory isn't being accidentally - stomped, use strlcpy to truncate instead of stomping on other memory. - That way, if the caller makes a mistake we don't silently corrupt memory. - - We specifically do not assert that there is no truncation or panic if - truncation occurs, since the effect of a truncated entry in the - dynamic AFS root volume is limited and does not justify bringing down - the entire client. - - Reviewed-on: https://gerrit.openafs.org/14938 + Change-Id: Ib1fdf06570e441b4a322a1e9b90ff084e07ad1fb + Reviewed-on: https://gerrit.openafs.org/15543 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Marcio Brito Barbosa - Reviewed-by: Benjamin Kaduk - (cherry picked from commit aa9180652876a3ba9157776b69a6995ac4201d1b) - - Change-Id: I21a402bb6e20f2546c61bdabde021817dd3827d8 - Reviewed-on: https://gerrit.openafs.org/15243 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma + Reviewed-by: Kailas Zadbuke Reviewed-by: Stephan Wiesand - Tested-by: Stephan Wiesand -commit 79c8c8639952fc3305b50152ba450ed8d858e7be +commit 088a77b99ba2104ed120e1fcdaf385767c477fc8 Author: Michael Meffie -Date: Wed Sep 1 12:38:14 2021 -0400 +Date: Mon Jul 18 19:17:26 2022 -0400 - fs: Trim trailing lsmount and flushmount path slashes + build: package ltmain.sh in the libafs_tree - Remove trailing slashes from paths given to `fs lsmount` and `fs - flushmount`. This makes for a more pleasant user experience when shell - tab completion is used to specify the paths. + 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. - Thanks to Stephan Wiesand for pointing out this issue. + 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. - Reviewed-on: https://gerrit.openafs.org/14779 + 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) + + 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 + 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 +Author: Cheyenne Wills +Date: Thu Feb 17 18:27:02 2022 -0700 + + cf: Avoid nested C functions built by autoconf + + 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': + + #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; + } + + 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. + + 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. + + (these were discovered by forcing a clang build of both the Linux kernel + and the openafs kernel module) + + Reviewed-on: https://gerrit.openafs.org/14901 + 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 +Author: Cheyenne Wills +Date: Wed May 25 12:54:50 2022 -0600 + + ukernel: Fix AFS_GUNLOCK panic in rx_ServerProc + + At the beginning of UKERNEL's rx_ServerProc a call to AFS_GUNLOCK + panics with 'afs global lock not held'. + + 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 AFS_GUNLOCK at the start and the AFS_GLOCK at the end of + UKERNEL's rx_ServerProc. + + Reviewed-on: https://gerrit.openafs.org/14963 + Tested-by: BuildBot + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 07076d63edfb9fe7a2311958e9410d5eadb227d9) + + 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() + + 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 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Cheyenne Wills + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 494ec08cd04da6f96be02c7dc22d9bb0c409d63b) + + Change-Id: I87b225de7d4ce81a4017f47f2d5088ebffd7c66a + Reviewed-on: https://gerrit.openafs.org/15538 + 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 - (cherry picked from commit a7a672cae871aa9cf9cc003a37579cb4df51b3fe) + Tested-by: BuildBot + (cherry picked from commit d91b92e308dc2ac2e489581839c1fc1bf9147e16) - Change-Id: I24a2ae323f64f2d73be8fbc26860fa2864e34bfe - Reviewed-on: https://gerrit.openafs.org/15242 + Change-Id: Id35b089855797541bbc2f59982b3da7b4fab824e + Reviewed-on: https://gerrit.openafs.org/15537 Reviewed-by: Michael Meffie - Reviewed-by: Cheyenne Wills - Reviewed-by: Harish Sharma + Tested-by: BuildBot + Reviewed-by: Marcio Brito Barbosa Reviewed-by: Stephan Wiesand - Tested-by: Stephan Wiesand -commit 91f11551714c6b6f653fd367bc8d184c8aba9e7b +commit 92ba67d5a6c62b84150de20e83af5db24e5665df Author: Andrew Deason -Date: Fri Aug 24 13:03:24 2018 -0500 +Date: Fri Jul 26 15:28:44 2019 -0500 - afs: Detect VIOCPREFETCH special case properly + afs: Let afs_ShakeLooseVCaches run longer - Currently, afs_syscall_pioctl handles the VIOCPREFETCH pioctl as a - special case, calling into a different code path to handle - backgrounding the prefetch operation. However, we detect that we're - handling a VIOCPREFETCH operation just by looking at the lower 8 bits - of the given opcode. This means that any pioctl that ends in 0x0F will - trigger this codepath, such as if we add a 'C' or 'O' pioctl that uses - code 0x0F. + 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. - We only want to catch VIOCPREFETCH requests for this code path, so fix - the check to also check if we're processing a 'V' pioctl. + 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: - Reviewed-on: https://gerrit.openafs.org/13301 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 252b3bcc75ea141ff93a7b3147865f4b952fcaca) + 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). - Change-Id: I12d0616059dd8115b109b1ffa4cafe6ddc4b1662 - Reviewed-on: https://gerrit.openafs.org/15241 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Tested-by: Andrew Deason - Reviewed-by: Stephan Wiesand - -commit 581450c74c57680eeb89bf937b4d42936df6196b -Author: Marcio Barbosa -Date: Wed Apr 6 20:59:56 2022 +0000 - - afs: Replace strcpy &co by safer alternatives + 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. - In addition to being unsafe, these functions (strcpy, strncpy, strcat, - and sprintf) are deprecated on macOS. Replace these functions by safer - alternatives (strlcpy, strlcat, snprintf, and afs_strdup). + 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. - Notice that, in order to use afs_strdup(), this commit adds the afs_util - library to the AFSPAGOBJS list. Given that afs_strcasecmp() is also - implemented in afs_util.c, src/crypto/hcrypto/kernel/strcasecmp.c can be - removed from the tree. + 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. - No functional change should be incurred by this commit. - - This commit is a continuation of a patch initially developed by - cwills@sinenomine.net. - - Reviewed-on: https://gerrit.openafs.org/14743 - Reviewed-by: Andrew Deason + Reviewed-on: https://gerrit.openafs.org/14254 Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 419f0cd7aa75719dcf4df97e603ad4f0d936ddd9) - - [cwills@sinenomine.net] - Part of the (419f0cd7aa) changes to afs_callback.c were pulled in to a - 1.8.x specific commit: - "afs: Avoid unbounded string copy in SRXAFSCB_GetLock()" (79a04c344) - In order to resync the code, the include roken.h in afs_callback.c - introduced in that commit needed to be removed. - - Change-Id: Ica0e9bdc82de2b1e89e6d4b513e775b2809fbc34 - Reviewed-on: https://gerrit.openafs.org/15240 - Reviewed-by: Michael Meffie - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - Tested-by: Stephan Wiesand - -commit c7048f9a5c29df5816b6bcebaa42965bccb12557 -Author: Mark Vitale -Date: Thu Jun 14 14:38:54 2018 -0400 - - afs: remove dead code - - afs_CheckLocks has been dead code since openafs-ibm-1_0. - - No functional change incurred. - - Reviewed-on: https://gerrit.openafs.org/13210 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk - (cherry picked from commit 0839a3326858f7d7a0042614710dcf7316bb6018) + (cherry picked from commit cd65475e95e25c8e7071e099a682bdcc03d2cce1) - Change-Id: I1c564255990803dac7abe1789f2941bf4fa30b58 - Reviewed-on: https://gerrit.openafs.org/15239 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit fc5be911a0ef216b9af79a0ec6bc32512085d398 -Author: Marcio Barbosa -Date: Wed Mar 23 16:04:46 2022 -0300 - - UKERNEL: Remove flock -> usr_flock redirection - - In order to replace 'struck flock' with 'struct usr_flock' and 'flock()' - with 'usr_flock()', the current version of src/afs/UKERNEL/sysincludes.h - defines flock to usr_flock. This can cause problems when trying to use - libroken in UKERNEL code, because roken.h redefines flock. - - To avoid conflicts with libroken (included in a future commit), add a - new UKERNEL specific AFS_FLOCK -> usr_flock redirection. Doing so, the - flock -> usr_flock redirection can be removed. While here, also remove - 'usr_flock()' as it shouldn't be called and is not defined in any header - file. - - Reviewed-on: https://gerrit.openafs.org/14913 + Change-Id: I6c8e440a3c4dec5e6d769f40d9638a3edc6ad333 + Reviewed-on: https://gerrit.openafs.org/15536 Reviewed-by: Andrew Deason - Reviewed-by: Cheyenne Wills - Reviewed-by: Benjamin Kaduk Tested-by: BuildBot - (cherry picked from commit 51c0387aaa5ec507c6e29063ef56d98e2931402d) - - Change-Id: I3c2d9de056bae3f2fed68f1ec183540b63584a43 - Reviewed-on: https://gerrit.openafs.org/15238 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma + Reviewed-by: Marcio Brito Barbosa Reviewed-by: Stephan Wiesand -commit 276632ea7334fd27972585823f358e92b448da59 +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: Thu Jan 27 14:49:15 2022 -0600 +Date: Mon Jul 29 18:17:21 2019 -0500 - UKERNEL: Remove socket -> usr_socket redirection + afs: Skip IsDCacheSizeOK for CDirty/VDIR - Currently, src/afs/UKERNEL/sysincludes.h #defines 'socket' to - 'usr_socket', in order for 'struct socket' declarations to use struct - usr_socket. Redefining a simple word/function like 'socket' can easily - cause issues, and currently makes it difficult to introduce libroken - callers in UKERNEL code. There are already several instances of - '#undef socket' in the tree for UKERNEL, suggesting that this wasn't a - good idea to start with. + 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: - Fortunately, this redefinition of 'socket' in UKERNEL seems - unnecessary, since the only place 'struct usr_socket' is actually - deferenced is inside src/rx/UKERNEL/rx_knet.c. So we can treat 'struct - usr_socket' as a struct definition that's just internal to rx_knet.c, - and no other code even needs to know about the struct, or think that - it's equivalent to 'struct socket'. + - 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. - Most code in rx_knet.c already explicitly casts between 'struct - socket' and 'struct usr_socket'. The only exception is rxi_Recvmsg - starting in commits near 27c42be1 (ukernel-rx-knet-deref-20060126), - but this is easily fixed by adding an additional explicit cast. + - Directories may be modified locally instead of being fetched from + the fileserver, which can sometimes result in a directory blob of + differing sizes. - Reviewed-on: https://gerrit.openafs.org/14887 + 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 - Tested-by: BuildBot - (cherry picked from commit 17b16cb3989d1f41e314795515daf6c9b41cf1de) + (cherry picked from commit e6b97b337bc97fdb1c8e4f1a0572c62dfc82d979) - Change-Id: I35c7b7fc61c1c741be928fa7beb889d8848f0b81 - Reviewed-on: https://gerrit.openafs.org/15237 - Reviewed-by: Andrew Deason - Reviewed-by: Michael Meffie + Change-Id: I177020c37ba92d8730fe4c68ca610f1b39c3d69b + Reviewed-on: https://gerrit.openafs.org/15533 Tested-by: BuildBot + Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand -commit f2f0be5e04f2a700b721f647a87cbffe2ccd606a -Author: Marcio Barbosa -Date: Wed Mar 23 15:10:15 2022 -0300 +commit b46d63252b7b8575dd7a79fbd779725f63202afc +Author: Andrew Deason +Date: Thu Jan 17 16:21:25 2019 -0600 - afs: Save size of sysname_info->name + afs: Check dcache size when checking DVs - In preparation for a future commit, save the size of sysname_info->name - by adding a new field (name_size) into the sysname_info struct. Also, - remove the sysname_info->allocked field, since now we can find out if - memory has been allocated by checking if sysname_info->name_size is - different than zero. + 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). - No functional change should be incurred by this commit. + 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. - Reviewed-on: https://gerrit.openafs.org/14912 - Reviewed-by: Andrew Deason - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills + 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 - (cherry picked from commit c40c0bd00b7e49e67377e13f5b902c13a0e4478c) - - Change-Id: I5a7d0d733dfc48d4d4eb5d00ef959ad980722e17 - Reviewed-on: https://gerrit.openafs.org/15236 - Reviewed-by: Michael Meffie Tested-by: BuildBot - Reviewed-by: Harish Sharma + (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 6ba75f842f307e94db86b95c9da98e9e40d11c35 +commit b7ac4842a146fb4250095aa22419f5859e92dae8 Author: Marcio Barbosa -Date: Thu Jul 1 10:47:50 2021 -0300 +Date: Sat Aug 11 14:00:18 2018 -0400 - fs: add option to evaluate symlink or mtpt + volser: warn if older version of volume is restored - Currently, several fs subcommands for Windows offer an option (-literal) - to evaluate symlink / mount point rather than the object it refers to. - Provide the same option on Unix for fs_getfid. + 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). - Reviewed-on: https://gerrit.openafs.org/14542 + 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 Tested-by: Benjamin Kaduk - (cherry picked from commit 83d947c150322c3c7c65130ecf08719e466cae04) + (cherry picked from commit c4c16890d9d2829f6bef1ef58feafb30b1d59da3) - Change-Id: Ife60e046c149f3586dbdad0e9b3fd6059967ece1 - Reviewed-on: https://gerrit.openafs.org/15235 - Reviewed-by: Michael Meffie + Change-Id: I54cc9156b98320d04fe6f7bb595a150d5ba87b49 + Reviewed-on: https://gerrit.openafs.org/15523 Tested-by: BuildBot - Reviewed-by: Harish Sharma + Reviewed-by: Michael Meffie + Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand -commit f1fd9c9cae8438635ea6e64fff05507921046ef3 -Author: Marcio Barbosa -Date: Tue Aug 17 19:52:11 2021 +0000 - - afs: refactor PNewStatMount and PFlushMount - - Both functions use the same logic to find a name in a given directory. - To avoid repetition, move this logic to a separate function called - afs_LookupName(). - - No functional change is incurred by this commit. - - Reviewed-on: https://gerrit.openafs.org/14541 - Reviewed-by: Benjamin Kaduk - Tested-by: BuildBot - (cherry picked from commit 981bc005f8161ca9ee52ea281c7d73e0e4e2461a) - - Change-Id: I11f03146da86c91f83ad682df7ad1943cb4ab68f - Reviewed-on: https://gerrit.openafs.org/15234 - Reviewed-by: Michael Meffie - Tested-by: BuildBot - Reviewed-by: Harish Sharma - Reviewed-by: Stephan Wiesand - -commit b17625959386459059f6f43875d8817383554481 +commit 63801cfd1fc06ec3259fcfd67229f3a3c70447ed Author: Cheyenne Wills -Date: Thu Dec 1 14:18:36 2022 -0700 +Date: Thu Jul 13 10:54:22 2023 -0600 - cf: Handle autoconf linux checks with -Werror + Linux 6.5: Use register_sysctl() - When the linux kernel has been configured with CONFIG_WERROR=y, several - autoconf configure checks used to detect linux features fail due to the - compiler performing additional coding checks (e.g. unused variables, - uninitialized variables, etc.). Typically these additional coding - checks produce compiler warnings, but with CONFIG_WERROR=y these - warnings are reported as compiler errors, resulting in a misconfigured - build environment. + 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. - When testing for kernel features, turn off -Werror in the autoconf - functions AC_CHECK_LINUX_BUILD and AC_CHECK_LINUX_FUNC by explicitly - setting the compiler '-Wno-error' flag. + Add an autoconf test for the Linux function register_sysctl and add a + call to register_sysctl when available. - In addition, fix the commented description for AC_CHECK_LINUX_BUILD to - match the actual parameters + 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. - Reviewed-on: https://gerrit.openafs.org/15191 - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk + The function register_sysctl_table was marked as deprecated with the + Linux 6.3 commit: + 'proc_sysctl: enhance documentation' (1dc8689e4c) + + Reviewed-on: https://gerrit.openafs.org/15500 Tested-by: BuildBot - (cherry picked from commit e2ad1ca5f7355062e808f1717e7410b7ae893371) + Reviewed-by: Benjamin Kaduk + (cherry picked from commit fb31d299e6caa015f6288ba9186da6277d3d6a8d) - Change-Id: I2c8ba4c421ed751aa6ff2899ea173c1e84053322 - Reviewed-on: https://gerrit.openafs.org/15231 + Change-Id: I60f68f1dd95c32bada7179e98250fd44d7c2ddf3 + Reviewed-on: https://gerrit.openafs.org/15522 Tested-by: BuildBot Reviewed-by: Michael Meffie + Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand -commit 57df4dff496ca9bea04510759b8fdd9cd2cc0009 -Author: Cheyenne Wills -Date: Thu Dec 1 12:55:26 2022 -0700 - - cf: Detect how to pass CFLAGS to linux kbuild - - The autoconf test LINUX_KBUILD_USES_EXTRA_CFLAGS fails on modern kernels - when detecting how to pass CFLAGS to the compiler when building a Linux - kernel module. The result of this test is used by configure when - testing for Linux kernel features. - - In addition the EXTRA_CFLAGS method of passing compiler parameters has - been deprecated since Linux 2.6.24 commit: - "kbuild: introduce ccflags-y, asflags-y and ldflags-y" (f77bf01425b) - - The currently preferred method is to use the make variable 'ccflags-y' - to set compiler flags. - - Replace the autoconf function LINUX_KBUILD_USES_EXTRA_CFLAGS with a new - test, LINUX_KBUILD_FIND_CFLAGS_METHOD, that checks the various ways to - pass compiler flags when building the kernel module. - - Set the build variable "LINUX_KBUILD_CFLAGS_VAR" with the determined - method for setting kbuild compiler flags. - - Update the AC_TRY_KBUILD26 autoconf function and the - make_kbuild_makefile.pl script to use the determined method for setting - the compiler flags for the kbuild process. - - Background: - - The autoconf test, LINUX_KBUILD_USES_EXTRA_CFLAGS, is used to determine - when to use either CFLAGS for EXTRA_CFLAGS when performing other - autoconf tests for Linux kernel features. The test was added with the - openafs commit: - "linux-2624-20071123" (af7cf697ef8) - - LINUX_KBUILD_USES_EXTRA_CFLAGS relied on the Linux 2.6.24 commit: - "kbuild: check for wrong use of CFLAGS" (0c53c8e6eb4) - which caused a build failure if CFLAGS where used instead of - EXTRA_CFLAGS. - - Later with the Linux 4.20 commit: - "kbuild: remove old check for CFLAGS use" (0d91bf584fe) - which removed the build failure when CFLAGS were set and this resulted - in LINUX_KBUILD_USES_EXTRA_CFLAGS failing to properly determining how to - set compiler flags in the kbuild process. - - As mentioned above, the EXTRA_CFLAGS method itself has been deprecated - in Linux 2.6.24, but support for using it has still present in the - kbuild processes. - - Reviewed-on: https://gerrit.openafs.org/15196 - Tested-by: BuildBot - Reviewed-by: Cheyenne Wills - Reviewed-by: Andrew Deason - Reviewed-by: Benjamin Kaduk - (cherry picked from commit f81b01de1a51f02798ac764fb2f6948b592639da) - - Change-Id: Ib1e07bf6b8734a427a2682ca694fbe2e083f1ecd - Reviewed-on: https://gerrit.openafs.org/15230 - Tested-by: BuildBot - Reviewed-by: Michael Meffie - Reviewed-by: Stephan Wiesand - -commit 2cf76b31ce4c912b1151c141818f6e8c5cddcab2 +commit d15c7ab50c92671052cbe9a93b0440c81156d8aa Author: Andrew Deason -Date: Fri Jun 28 14:14:48 2019 -0500 +Date: Thu Jul 18 22:56:48 2019 -0500 - LINUX: Run the 'sparse' checker if available + LINUX: Make sysctl definitions more concise - The Linux kernel module buildsystem supports running an external tool - (by default, the 'sparse' tool) during the build to run additional - static checks on the source code to flag various warnings. + 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. - Tell the kernel build to run such a tool, if 'sparse' is installed. - This causes various new warnings in the build, such as: - - CHECK /.../src/libafs/MODLOAD-4.9.0-8-amd64-MP/afs_tokens.c - /.../src/libafs/MODLOAD-4.9.0-8-amd64-MP/afs_tokens.c:73:1: warning: symbol 'afs_FreeOneToken' was not declared. Should it be static? - /.../src/libafs/MODLOAD-4.9.0-8-amd64-MP/afs_tokens.c:160:1: warning: symbol 'afs_IsTokenExpired' was not declared. Should it be static? - /.../src/libafs/MODLOAD-4.9.0-8-amd64-MP/afs_tokens.c:187:1: warning: symbol 'afs_IsTokenUsable' was not declared. Should it be static? - - None cause the build to fail currently, but are just printed for - potential further investigation. - - To control detecting 'sparse', add the --with-sparse configure option - and SPARSE configure variable. Default to checking if sparse is - available, and enabling it if so. - - Further information on using sparse in the Linux kernel is available - in Documentation/sparse.txt in the Linux tree. - - Using 'sparse' during the build was suggested by yadayada@in.ibm.com. - - Reviewed-on: https://gerrit.openafs.org/13665 - Reviewed-by: Cheyenne Wills - Tested-by: BuildBot + Reviewed-on: https://gerrit.openafs.org/13700 Reviewed-by: Benjamin Kaduk - (cherry picked from commit 1210a8d6d96db2d84595d35ef81ec5d176de05e8) + Tested-by: Benjamin Kaduk + (cherry picked from commit 1b0bb8a7fcbd69d513ed30bb76fd0693d1bd3319) - Change-Id: I5d52b1eed48564956a687fba0419185b01621b13 - Reviewed-on: https://gerrit.openafs.org/15229 + Change-Id: Ib656634ed956b845c89656069aa297253acce785 + Reviewed-on: https://gerrit.openafs.org/15521 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie + Reviewed-by: Mark Vitale + Reviewed-by: Stephan Wiesand + +commit fef245769366efe8694ddadd1e1f2ed5ef8608f4 +Author: Cheyenne Wills +Date: Sun Jul 9 18:52:23 2023 -0600 + + Linux 6.5: Replace generic_file_splice_read + + The Linux 6.5 commit: + 'splice: Remove generic_file_splice_read()' (c6585011bc) + replaces the function generic_file_splice_read() with the function + filemap_splice_read(). + + The Linux function 'filemap_splice_read()' was introduced with the + Linux 6.3 commits: + + 'splice: Add a func to do a splice from a buffered file without + ITER_PIPE' (07073eb01c) + 'splice: Export filemap/direct_splice_read()' (7c8e01ebf2) + + With updates in Linux 6.5: + 'splice: Fix filemap_splice_read() to use the correct inode' + (c37222082f) -- which fixes a problem in the code. + 'splice: Make filemap_splice_read() check s_maxbytes' (83aeff881e) + + Due to the fact that there could be problems with splice support prior + to Linux 6.5 (where filemap_splice_read()'s use was expanded to + additional filesystems other than just cifs), we only want to use + 'filemap_splice_read()' in Linux 6.5 and later. + + The LINUX/osi_vnodeops.c file is updated to use 'filemap_splice_read()', + for Linux 6.5 and later, for the splice_read member of the + file_operations structure. + + Reviewed-on: https://gerrit.openafs.org/15486 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Benjamin Kaduk + (cherry picked from commit 0e06eb78f293bb295b0fe12da24abd8dc1160149) + + 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 + 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 +Author: Mark Vitale +Date: Fri May 12 23:51:48 2023 -0400 + + vol: Don't leak volume bitmaps + + 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. + + Instead, free any existing bitmap before allocating a new one. + + Discovered via Solaris libumem.so.1. + + Reviewed-on: https://gerrit.openafs.org/15428 + 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 +Author: Andrew Deason +Date: Fri Apr 7 16:09:30 2023 -0500 + + LINUX: Make 'fs flush*' invalidate dentry + + 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.) + + 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. + + For example: + + $ 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-by: Benjamin Kaduk + Tested-by: BuildBot + (cherry picked from commit d460b616ebad763f7e480e194b2bffc28df99721) + + Change-Id: I184046469c396b0421752d91c47477ebe8eaed13 + Reviewed-on: https://gerrit.openafs.org/15515 + Reviewed-by: Andrew Deason + Tested-by: BuildBot + Tested-by: Michael Meffie + 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 +Author: Andrew Deason +Date: Fri Oct 25 19:04:44 2019 -0500 + + pts: Use cmd_AddParmAtOffset for common parms + + Update pts to use cmd_AddParmAtOffset and symbolic constants for our + common parameters, instead of using bare literals like '16'. + + Reviewed-on: https://gerrit.openafs.org/13946 + Reviewed-by: Cheyenne Wills + Reviewed-by: Benjamin Kaduk + Tested-by: BuildBot + (cherry picked from commit d0941e81b2f1f499cebb57d8a81d82802913d9be) + + 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 + 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) + + Change-Id: I96ccf89a7316449a0492d08dbfc0e625e143d933 + Reviewed-on: https://gerrit.openafs.org/15507 + 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 + + 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 + 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.10 b/RELNOTES-1.8.10 deleted file mode 100644 index 5f1e8db..0000000 --- a/RELNOTES-1.8.10 +++ /dev/null @@ -1,65 +0,0 @@ - User-Visible OpenAFS Changes - -OpenAFS 1.8.10 - - All platforms - - * Improved error messages and diagnostics (15302 15313) - - * Fixes for parallel or out of tree builds (15297..9) - - * Fixed "make clean" to remove several artifacts overlooked in the past - (15377) - - * Fixed the autoconf check for ncurses to catch libs built with - "--enable-reentrant" (15296) - - * Removed the obsolete kdump debugging tool (15315) - - * Avoid some more possible string buffer overflows (15240) - - All client platforms - - * Take the readonly volume offline during "vos convertROtoRW" (15233) - - * Updated the CellServDB to the latest version from grand.central.org - (15323) - - All UNIX/Linux client platforms - - * Trim trailing slashes from paths given to "fs lsmount" and - "fs flushmount" (15242) - - * Provide the "-literal" option for the "fs getfid" command, which allows - querying a symlink or mount point rather than the object pointed to - (15235) - - * Avoid some potential kernel panics (15295 15324 15331) - - AIX - - * Improved support for this platform, including releases 7.1, 7.2 and 7.3 - (15309 15368..76 15378..86 15403 15422 15424..5 15441..2) - - macOS - * Added support for Apple Silicon and macOS releases up to 13 ("Ventura") - (15246 15250..1 15254 15258..64) - - * Fixes around signing and notarization of the OpenAFS packages (15255..7) - - * Build "afscell" on supported platforms, and only those (15247) - - Linux - - * Support building for newer distributions and compilers (15266..71 - 15273..5 15277) - - Linux clients - - * Support mainline kernels up to 6.4 and distribution kernels - derived from those (15228 15281 15388..9 15410..11) - - * Fixes and enhancements around the kernel module build (15229..31 15265) - - * Fixed potential cache inconsistencies for symbolic link metadata (15443) - diff --git a/RELNOTES-1.8.11pre1 b/RELNOTES-1.8.11pre1 new file mode 100644 index 0000000..0f2e28a --- /dev/null +++ b/RELNOTES-1.8.11pre1 @@ -0,0 +1 @@ + User-Visible OpenAFS Changes diff --git a/d15c7ab.diff b/d15c7ab.diff deleted file mode 100644 index 8e37263..0000000 --- a/d15c7ab.diff +++ /dev/null @@ -1,312 +0,0 @@ -From d15c7ab50c92671052cbe9a93b0440c81156d8aa Mon Sep 17 00:00:00 2001 -From: Andrew Deason -Date: Thu, 18 Jul 2019 22:56:48 -0500 -Subject: [PATCH] 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 -Tested-by: Benjamin Kaduk -(cherry picked from commit 1b0bb8a7fcbd69d513ed30bb76fd0693d1bd3319) - -Change-Id: Ib656634ed956b845c89656069aa297253acce785 -Reviewed-on: https://gerrit.openafs.org/15521 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Michael Meffie -Reviewed-by: Mark Vitale -Reviewed-by: Stephan Wiesand ---- - -diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c -index 8e7dd70..894c494 100644 ---- a/src/afs/LINUX/osi_sysctl.c -+++ b/src/afs/LINUX/osi_sysctl.c -@@ -18,6 +18,8 @@ - #include - #endif - -+#ifdef CONFIG_SYSCTL -+ - /* From afs_util.c */ - extern afs_int32 afs_md5inum; - -@@ -31,206 +33,48 @@ - extern afs_int32 afs_pct1; - extern afs_int32 afs_pct2; - --#ifdef CONFIG_SYSCTL -+# ifdef STRUCT_CTL_TABLE_HAS_CTL_NAME -+# ifdef CTL_UNNUMBERED -+# define AFS_SYSCTL_NAME(num) .ctl_name = CTL_UNNUMBERED, -+# else -+# define AFS_SYSCTL_NAME(num) .ctl_name = num, -+# endif -+# else -+# define AFS_SYSCTL_NAME(num) -+# endif -+ -+# define AFS_SYSCTL_INT2(num, perms, name, var) { \ -+ AFS_SYSCTL_NAME(num) \ -+ .procname = name, \ -+ .data = &var, \ -+ .maxlen = sizeof(var), \ -+ .mode = perms, \ -+ .proc_handler = &proc_dointvec \ -+} -+# define AFS_SYSCTL_INT(num, perms, var) \ -+ AFS_SYSCTL_INT2(num, perms, #var, var) -+ - static struct ctl_table_header *afs_sysctl = NULL; - - static struct ctl_table afs_sysctl_table[] = { -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 1, --#endif --#endif -- .procname = "hm_retry_RO", -- .data = &hm_retry_RO, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 2, --#endif --#endif -- .procname = "hm_retry_RW", -- .data = &hm_retry_RW, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 3, --#endif --#endif -- .procname = "hm_retry_int", -- .data = &hm_retry_int, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 4, --#endif --#endif -- .procname = "GCPAGs", -- .data = &afs_gcpags, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 5, --#endif --#endif -- .procname = "rx_deadtime", -- .data = &afs_rx_deadtime, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 6, --#endif --#endif -- .procname = "bkVolPref", -- .data = &afs_bkvolpref, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 7, --#endif --#endif -- .procname = "afs_blocksUsed", -- .data = &afs_blocksUsed, -- .maxlen = sizeof(afs_int32), -- .mode = 0444, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 8, --#endif --#endif -- .procname = "afs_blocksUsed_0", -- .data = &afs_blocksUsed_0, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 9, --#endif --#endif -- .procname = "afs_blocksUsed_1", -- .data = &afs_blocksUsed_1, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 10, --#endif --#endif -- .procname = "afs_blocksUsed_2", -- .data = &afs_blocksUsed_2, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 11, --#endif --#endif -- .procname = "afs_pct1", -- .data = &afs_pct1, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 12, --#endif --#endif -- .procname = "afs_pct2", -- .data = &afs_pct2, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 13, --#endif --#endif -- .procname = "afs_cacheBlocks", -- .data = &afs_cacheBlocks, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -- { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 14, --#endif --#endif -- .procname = "md5inum", -- .data = &afs_md5inum, -- .maxlen = sizeof(afs_int32), -- .mode = 0644, -- .proc_handler = &proc_dointvec -- }, -+ AFS_SYSCTL_INT(1, 0644, hm_retry_RO), -+ AFS_SYSCTL_INT(2, 0644, hm_retry_RW), -+ AFS_SYSCTL_INT(3, 0644, hm_retry_int), -+ -+ AFS_SYSCTL_INT2(4, 0644, "GCPAGs", afs_gcpags), -+ AFS_SYSCTL_INT2(5, 0644, "rx_deadtime", afs_rx_deadtime), -+ AFS_SYSCTL_INT2(6, 0644, "bkVolPref", afs_bkvolpref), -+ -+ AFS_SYSCTL_INT( 7, 0444, afs_blocksUsed), -+ AFS_SYSCTL_INT( 8, 0644, afs_blocksUsed_0), -+ AFS_SYSCTL_INT( 9, 0644, afs_blocksUsed_1), -+ AFS_SYSCTL_INT(10, 0644, afs_blocksUsed_2), -+ -+ AFS_SYSCTL_INT( 11, 0644, afs_pct1), -+ AFS_SYSCTL_INT( 12, 0644, afs_pct2), -+ AFS_SYSCTL_INT( 13, 0644, afs_cacheBlocks), -+ AFS_SYSCTL_INT2(14, 0644, "md5inum", afs_md5inum), -+ - { - .procname = 0 - } -@@ -238,13 +82,7 @@ - - static struct ctl_table fs_sysctl_table[] = { - { --#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME) --#if defined(CTL_UNNUMBERED) -- .ctl_name = CTL_UNNUMBERED, --#else -- .ctl_name = 1, --#endif --#endif -+ AFS_SYSCTL_NAME(1) - .procname = "afs", - .mode = 0555, - .child = afs_sysctl_table -@@ -257,11 +95,11 @@ - int - osi_sysctl_init(void) - { --#if defined(REGISTER_SYSCTL_TABLE_NOFLAG) -+# if defined(REGISTER_SYSCTL_TABLE_NOFLAG) - afs_sysctl = register_sysctl_table(fs_sysctl_table); --#else -+# else - afs_sysctl = register_sysctl_table(fs_sysctl_table, 0); --#endif -+# endif - if (!afs_sysctl) - return -1; - diff --git a/fef2457.diff b/fef2457.diff deleted file mode 100644 index f1dc281..0000000 --- a/fef2457.diff +++ /dev/null @@ -1,61 +0,0 @@ -From fef245769366efe8694ddadd1e1f2ed5ef8608f4 Mon Sep 17 00:00:00 2001 -From: Cheyenne Wills -Date: Sun, 09 Jul 2023 18:52:23 -0600 -Subject: [PATCH] Linux 6.5: Replace generic_file_splice_read - -The Linux 6.5 commit: - 'splice: Remove generic_file_splice_read()' (c6585011bc) -replaces the function generic_file_splice_read() with the function -filemap_splice_read(). - -The Linux function 'filemap_splice_read()' was introduced with the -Linux 6.3 commits: - - 'splice: Add a func to do a splice from a buffered file without - ITER_PIPE' (07073eb01c) - 'splice: Export filemap/direct_splice_read()' (7c8e01ebf2) - -With updates in Linux 6.5: - 'splice: Fix filemap_splice_read() to use the correct inode' - (c37222082f) -- which fixes a problem in the code. - 'splice: Make filemap_splice_read() check s_maxbytes' (83aeff881e) - -Due to the fact that there could be problems with splice support prior -to Linux 6.5 (where filemap_splice_read()'s use was expanded to -additional filesystems other than just cifs), we only want to use -'filemap_splice_read()' in Linux 6.5 and later. - -The LINUX/osi_vnodeops.c file is updated to use 'filemap_splice_read()', -for Linux 6.5 and later, for the splice_read member of the -file_operations structure. - -Reviewed-on: https://gerrit.openafs.org/15486 -Tested-by: BuildBot -Reviewed-by: Andrew Deason -Reviewed-by: Benjamin Kaduk -(cherry picked from commit 0e06eb78f293bb295b0fe12da24abd8dc1160149) - -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 ---- - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index ccec382..dd8b39d 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -960,7 +960,11 @@ - # else - .splice_write = generic_file_splice_write, - # endif -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,5,0) -+ .splice_read = filemap_splice_read, -+# else - .splice_read = generic_file_splice_read, -+# endif - #endif - .release = afs_linux_release, - .fsync = afs_linux_fsync, diff --git a/openafs-1.8.10-doc.tar.bz2 b/openafs-1.8.10-doc.tar.bz2 deleted file mode 100644 index 1de5b9a..0000000 --- a/openafs-1.8.10-doc.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c3809e8afea017d8af2528f60cf0e0f9fa8454fac86533a3e67221f2eb5fb5d -size 3770320 diff --git a/openafs-1.8.10-doc.tar.bz2.md5 b/openafs-1.8.10-doc.tar.bz2.md5 deleted file mode 100644 index ff9b585..0000000 --- a/openafs-1.8.10-doc.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -b7c71e48198ab210a5be0bb40fcdda1d openafs-1.8.10-doc.tar.bz2 diff --git a/openafs-1.8.10-doc.tar.bz2.sha256 b/openafs-1.8.10-doc.tar.bz2.sha256 deleted file mode 100644 index 23bacc9..0000000 --- a/openafs-1.8.10-doc.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -9c3809e8afea017d8af2528f60cf0e0f9fa8454fac86533a3e67221f2eb5fb5d openafs-1.8.10-doc.tar.bz2 diff --git a/openafs-1.8.10-src.tar.bz2 b/openafs-1.8.10-src.tar.bz2 deleted file mode 100644 index b990e01..0000000 --- a/openafs-1.8.10-src.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9fec11364623549e8db7374072f5c8f01b841f6bfe7e85673cbce35ff43ffb07 -size 14845228 diff --git a/openafs-1.8.10-src.tar.bz2.md5 b/openafs-1.8.10-src.tar.bz2.md5 deleted file mode 100644 index 4f2642f..0000000 --- a/openafs-1.8.10-src.tar.bz2.md5 +++ /dev/null @@ -1 +0,0 @@ -9e8676d04ff3d95d60eaee5e7429a6bb openafs-1.8.10-src.tar.bz2 diff --git a/openafs-1.8.10-src.tar.bz2.sha256 b/openafs-1.8.10-src.tar.bz2.sha256 deleted file mode 100644 index 90a1c25..0000000 --- a/openafs-1.8.10-src.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -9fec11364623549e8db7374072f5c8f01b841f6bfe7e85673cbce35ff43ffb07 openafs-1.8.10-src.tar.bz2 diff --git a/openafs-1.8.11pre1-doc.tar.bz2 b/openafs-1.8.11pre1-doc.tar.bz2 new file mode 100644 index 0000000..e44ce78 --- /dev/null +++ b/openafs-1.8.11pre1-doc.tar.bz2 @@ -0,0 +1,3 @@ +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 new file mode 100644 index 0000000..68d1874 --- /dev/null +++ b/openafs-1.8.11pre1-doc.tar.bz2.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..76f62e2 --- /dev/null +++ b/openafs-1.8.11pre1-doc.tar.bz2.sha256 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..8a6a418 --- /dev/null +++ b/openafs-1.8.11pre1-src.tar.bz2 @@ -0,0 +1,3 @@ +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 new file mode 100644 index 0000000..f6fd060 --- /dev/null +++ b/openafs-1.8.11pre1-src.tar.bz2.md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..3317200 --- /dev/null +++ b/openafs-1.8.11pre1-src.tar.bz2.sha256 @@ -0,0 +1 @@ +dfdb4bcd79e060180ebfd127d0447eceb716be0fbe07712ee7f9ac1904b42c82 openafs-1.8.11pre1-src.tar.bz2 diff --git a/openafs.changes b/openafs.changes index 5933b31..b42819f 100644 --- a/openafs.changes +++ b/openafs.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Mon Jan 29 09:56:45 UTC 2024 - Christof Hanke + +- update to openafs-1.8.11~pre1 +- remove intermediate patches for newer Linux-kernels: + * fef2457.diff + * d15c7ab.diff + * 63801cf.diff + * 538f450.diff + * 6de0a64.diff + * 5b647bf.diff + * 6413fdb.diff + * 4f1d810.diff + ------------------------------------------------------------------- Mon Dec 11 04:58:30 UTC 2023 - Christof Hanke diff --git a/openafs.spec b/openafs.spec index 8306271..3c581f8 100644 --- a/openafs.spec +++ b/openafs.spec @@ -1,7 +1,7 @@ # # spec file for package openafs # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -57,11 +57,11 @@ # used for %setup only # leave upstream tar-balls untouched for integrity checks. -%define upstream_version 1.8.10 +%define upstream_version 1.8.11pre1 Name: openafs -Version: 1.8.10.1 +Version: 1.8.11~pre1 Release: 0 Summary: OpenAFS Distributed File System License: IPL-1.0 @@ -104,15 +104,6 @@ Source98: kmp_only.files Source99: openafs.changes # PATCH-FIX-UPSTREAM fix build with kernel 6.5 -Patch1: fef2457.diff -Patch2: d15c7ab.diff -Patch3: 63801cf.diff -Patch4: 538f450.diff -Patch6: 6de0a64.diff -# PATCH-FIX-UPSTREAM fix build with kernel 6.6 -Patch5: 5b647bf.diff -Patch7: 6413fdb.diff -Patch8: 4f1d810.diff # PATCH-HANDLE-BACKPORTS # some kernel-features from 6.5 are apparently in 6.4 Patch99: handle_backports.diff @@ -326,14 +317,6 @@ for src_file in %{S:0} %{S:1}; do done %setup -q -n openafs-%{upstream_version} -T -b 0 -b 1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 %if 0%{?sle_version} == 150600 %patch99 -p1 %endif