commit e93cc9adb2c223841b11358867f95c4729221e4e Author: Michael Meffie Date: Fri Sep 11 09:54:58 2026 -0400 Make OpenAFS 1.8.17pre1 Update version strings for the 1.8.17pre1 release. Change-Id: If4dc36cc3142fa42c2846e89724806d79f6c648e Reviewed-on: https://gerrit.openafs.org/16965 Reviewed-by: Mark Vitale Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit c45883b49afa844bc64523ba05c0d2f89b6b9d82 Author: Michael Meffie Date: Thu Sep 10 14:56:21 2026 -0400 Update NEWS for OpenAFS 1.8.17pre1 Change-Id: I0b48fb54e7d9b9cc9f3164ed6be350fd9a98df78 Reviewed-on: https://gerrit.openafs.org/16964 Reviewed-by: Michael Meffie Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit b52839f04d91d79b5716c2690ba7f76de990453e Author: Andrew Deason Date: Tue May 19 15:45:49 2026 -0500 LINUX: Grab unixuser refs in osi_proc.c In order to implement the 'unixusers' /proc pseudo-file, osi_proc.c contains code to iterate over unixusers. The uu_*() functions are seq_operations callbacks that are called approximately like this pseudocode: p = uu_start(); while (p != NULL) { uu_show(p); p = uu_next(p); } uu_stop(p); Since commit 89b22dfe86 (libafs: Implement unixuser RW locks) in OpenAFS 1.7.1, uu_show() drops the ref for the current unixuser 'tu' before acquiring afs_xuser. If 'tu' is freed while we're waiting for afs_xuser, we'll dereference freed memory when uu_next() examines tu->next to get the next unixuser. Change osi_proc.c to grab and release unixuser refs while traversing unixusers, like we did for other files in change I849132fc08 (afs: Introduce and use afs_UserScan()). In uu_start(), this simply involves using afs_UserScan(), but in other callers, grab the refs manually, since we iterate over unixusers one at a time instead of directly via a for() loop. In uu_next(), also acquire AFS_GLOCK(), since we are now manipulating tu->refCount for various users. FIXES 135623 Reviewed-on: https://gerrit.openafs.org/16833 Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Reviewed-by: Cheyenne Wills Reviewed-by: Marcio Brito Barbosa Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 6db6df90e3827f751a3507f73a22b838a741511f) Change-Id: I97397b25337231d2ec7afa5d2c17d4b441c5d396 Reviewed-on: https://gerrit.openafs.org/17008 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Mark Vitale Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk commit f8469c5694f297b4361520144611f4c8c37fd99f Author: Andrew Deason Date: Tue May 19 15:37:13 2026 -0500 afs: Introduce and use afs_UserScan() Since before OpenAFS 1.0, PUnlog() drops and reacquires the afs_xuser lock while looping through the unixuser list. It obtains a reference to the current unixuser, but drops the reference before reacquiring afs_xuser. If afs_GCUserData() runs while we are waiting for afs_xuser, the current unixuser may have been freed. We then dereference tu->next for the next iteration of the loop, possibly using freed memory. In addition, since commit dde2a200a3 (userland-cachemgr-zero-token-times-on-unlog-to-trigger-gc-20010605) included in OpenAFS 1.1.0, we clear tu->tokenTime for UKERNEL potentially after 'tu' has been freed. To fix both of these issues, grab and release a reference to the current unixuser as the very first and last things we do for each iteration of the loop. To make this easier to do consistently, introduce a new macro, afs_UserScan(), to implement the for() loop, similar to using opr_queue_Scan() to iterate over a queue. Convert all unixuser-iterating code to use afs_UserScan(), except for two exceptions: - This commit does not convert the code in LINUX/osi_proc.c; that will be handled in a separate commit, since structure of code in there looks very different. - This commit does not convert code in afs_user.c itself to use afs_UserScan(), since some of those functions involve more complex loops or need special handling for unixuser refcounts. This commit treats afs_UserScan() as an interface that code outside of afs_user.c should use, and afs_user.c itself is allowed to do its own scanning logic manually. Besides those two exceptions, this commit updates all unixuser-iterating code to use afs_UserScan(). Many converted for() loops don't have the same problem as PUnlog() since they don't drop/acquire locks during the loop; convert them anyway just in case, and to keep the code paths more consistent. FIXES 135623 Reviewed-on: https://gerrit.openafs.org/16832 Tested-by: BuildBot Reviewed-by: Marcio Brito Barbosa Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk (cherry picked from commit 52647e10a2e4e47ef4b4ce3a92e86316efe01afc) Change-Id: I5af08a31708ce5b99f65a16d6b2caad9f19ca715 Reviewed-on: https://gerrit.openafs.org/17007 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Mark Vitale Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk commit 4680045b6149cf1d71d529c9be05d29a75a47009 Author: Andrew Deason Date: Tue Sep 15 14:47:50 2026 -0500 WINNT: Remove strcpy() in ktc_ForgetTokensByCell() Since OpenAFS 1.0, ktc_ForgetTokensByCell() (then ktc_ForgetToken()) has strcpy()d the cell from the provided arguments into the stack-local "tbuffer" before passing the cell to the VIOCDELTOK pioctl. There's no reason to use an intermediate stack buffer; just pass the given string pointer directly to the pioctl, so we don't risk overrunning the "tbuffer" with an unsafe strcpy() call. Reviewed-on: https://gerrit.openafs.org/16976 Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk (cherry picked from commit 151ed20e14eb0a22140190c2ad0c4548c6927a5d) Change-Id: I10ae0ad24d19e1f8c7c3043de199878e02fee630 Reviewed-on: https://gerrit.openafs.org/17006 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk commit f74beebfeb318ac7ba48d44528b13dcd19dc17b2 Author: Andrew Deason Date: Fri Sep 4 13:58:15 2026 -0500 WINNT: Implement ktc_ForgetTokensByCell() Commit ab9bc6c57a (log: Add ktc_ForgetTokensByCell()) added the new ktc_ForgetTokensByCell() function to ktc.c and relevant libtool symbol files, but did not implement the function in ktc_nt.c for WINNT. To allow the function to exist and be usable on WINNT, implement ktc_ForgetTokensByCell() in ktc_nt.c, using existing logic from ktc_ForgetToken(). Also change ktc_ForgetToken() to be implemented in terms of ktc_ForgetTokensByCell(). Add ktc_ForgetTokensByCell() to afsauthent.def, so it's usable via libafsauthent on WINNT. Also add ktc_ForgetTokensByCell() to afsauthent.exp, to make sure it's usable on all platforms (although afsauthent.exp is possibly unused at this point and will be removed in future commits). Reviewed-on: https://gerrit.openafs.org/16958 Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Gaurav Saxena Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk (cherry picked from commit e14f3b607dee98fccb408079c93668650f46127d) Change-Id: I9b0539e9ebaf818c5784181e2525758aa7e65e1c Reviewed-on: https://gerrit.openafs.org/16988 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Mark Vitale Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk commit d2d7287ec6abcc8c48157901832b4bf87c42102d Author: Michael Meffie Date: Tue Jan 28 18:50:24 2025 +0100 DARWIN: ANSIfy functions Convert the remaining K&R style function declarations to ANSI in the DARWIN source and and clean up nearby whitespace errors. [1.8: This fixes build errors on macOS 27 Golden Gate and Xcode beta 5, such as: /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:10: error: unknown type name 'fs' 31 | getinode(fs, dev, inode, vpp, perror) | ^ /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:14: error: unknown type name 'dev' 31 | getinode(fs, dev, inode, vpp, perror) | ^ /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:19: error: unknown type name 'inode' 31 | getinode(fs, dev, inode, vpp, perror) | ^ /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:26: error: unknown type name 'vpp' 31 | getinode(fs, dev, inode, vpp, perror) | ^ /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:31: error: unknown type name 'perror' 31 | getinode(fs, dev, inode, vpp, perror) | ^ /Users/devlab/src/openafs/src/afs/DARWIN/osi_inode.c:31:38: error: expected ';' after top level declarator 31 | getinode(fs, dev, inode, vpp, perror) | ^ | ; ] Reviewed-on: https://gerrit.openafs.org/16152 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason (cherry picked from commit 2da2d6d09556585246c6190ac6365ebd0386174c) Change-Id: Iaf748be665553c03daf984aa195a67e656c2fd9a Reviewed-on: https://gerrit.openafs.org/16955 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Ganesh G. Chaudhari Tested-by: Ganesh G. Chaudhari Reviewed-by: Benjamin Kaduk Reviewed-by: Kailas Zadbuke commit 364003e22d16d1171d6f1068ba84afe1b83810de Author: Mark Vitale Date: Mon Aug 17 17:24:07 2026 -0400 DARWIN: Eliminate "incompatible function pointer" build error When building OpenAFS under macos 27 beta (Golden Gate) with Xcode 27 beta 5, the following build error occurs: /Users/devlab/src/openafs/src/afs/DARWIN/osi_file.c:202:17: error: incompatible function pointer types assigning to 'int (*)(struct osi_file *, afs_int32)' (aka 'int (*)(struct osi_file *, int)') from 'int (*)(void)' [-Wincompatible-function-pointer-types] 202 | afile->proc = (int (*)())0; | ^ ~~~~~~~~~~~~ Change the assignment to a simple NULL. Reviewed-on: https://gerrit.openafs.org/16948 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Marcio Brito Barbosa Tested-by: BuildBot (cherry picked from commit 2f8b7da15ff15d7def18af4feff7950ecab3e9cc) Change-Id: I42ffc679acff8ec4bad25efdfb6b7629ba49a617 Reviewed-on: https://gerrit.openafs.org/16954 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Ganesh G. Chaudhari Tested-by: Ganesh G. Chaudhari Reviewed-by: Benjamin Kaduk Reviewed-by: Kailas Zadbuke commit 5866be780c5fef276081b9a66ecd4e4e68388f5a Author: GANESH CHAUDHARI Date: Wed Jul 15 15:35:58 2026 +0530 macos: Add support for macOS 27 (Golden Gate) Added the required configuration changes and new files to enable building and packaging OpenAFS on macOS 27 (Golden Gate). MacOS Tahoe used Darwin kernel version 25.x, which corresponds to the Darwin version suffix 250 in the configuration files. MacOS Golden Gate beta showcase Darwin kernel version 27.x (skips 26.x), so the corresponding configuration suffix is 270. As a result, there is no Darwin 260 configuration. This version numbering change is driven by Apple's kernel versioning and we expect no impact on OpenAFS functionality. Since macOS 27 no longer supports Intel-based Macs, no x86-specific configuration changes are introduced. Reviewed-on: https://gerrit.openafs.org/16883 Reviewed-by: Michael Meffie Reviewed-by: Marcio Brito Barbosa Reviewed-by: Mark Vitale Tested-by: BuildBot Reviewed-by: Andrew Deason (cherry picked from commit e78d6fb06ed85ed591b8d76ed8589a8753b261b3) Change-Id: I2d21a00415e30ab69853494139963f418f041866 Reviewed-on: https://gerrit.openafs.org/16953 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Ganesh G. Chaudhari Reviewed-by: Benjamin Kaduk commit 9a8b359c3ee4dd813279650f6018a38e01acec89 Author: Andrew Deason Date: Thu Jun 2 12:22:06 2022 -0500 rx: Check rxi_AddRpcStat currentFunc bounds Our rxgen-generated server and client RPC stubs contain some code for recording call statistics that looks like this (for BOZO_GetStatus, for example; the 4th function in the BOZO_ package): if (rx_enable_stats) { rx_RecordCallStatistics(z_call, BOZO_STATINDEX, 3, BOZO_NO_OF_STAT_FUNCS, 0); } This eventually calls rxi_AddRpcStat with similar arguments. If a stat struct doesn't exist for the given package (BOZO_STATINDEX), rxi_AddRpcStat allocates a new struct rx_interface_stat, which can accomodate up to 'totalFunc' different functions (BOZO_NO_OF_STAT_FUNCS in the above example). If a struct already exists for the given package, we'll use the existing struct. When we update the stats for the current call, we update 'rpc_stat->stats[currentFunc]' (were 'currentFunc' is 3 in the above example). We assume rpc_stats->stats has enough entries allocated for this to be okay, but we never actually check. We just assume that 'currentFunc' is always less than 'totalFunc', and we assume that the caller always provides the same 'totalFunc' for that package. Normally this is true, but this is not checked or verified anywhere. If two packages accidentally use the same statindex, this may not always be true. For example, say someone defines a new service under package FOO_, with 2 functions, and specifies 'statindex 1' in the .xg file. This means that FOO_STATINDEX will be 1, and FOO_NO_OF_STAT_FUNCS will be 2. If someone calls one of the FOO_ RPCs, rxi_AddRpcStat will allocate a struct that can accommodate stats for 2 functions. Later on, say that someone calls a BOZO_ RPC. rxi_AddRpcStat will look for a struct for BOZO_STATINDEX (which is also 1), and it finds one, since we just created one for the FOO_ call before (since FOO_STATINDEX is also 1). If the BOZO_ RPC is BOZO_GetStatus, 'currentFunc' will be 3, which means 'rpc_stat->stats[currentFunc]' will go beyond the end of the array allocated for rpc_stat->stats, since space has only been allocated for 2 functions. This will silently corrupt whatever memory follows the original allocation for 'rpc_stats', every time someone calls BOZO_GetStatus (or any other BOZO_ RPC beyond the first 2 RPCs). If someone calls BOZO_CreateBnode instead, this won't corrupt memory, since the 'currentFunc' given is 0, which will fit into the allocated 'rpc_stat->stats' array. But the stats will be meaningless, since it will contain data for a FOO_ function and some other unrelated BOZO_ function. This never happens in the current tree, and should never happen normally since different services shouldn't use the same statindex. But it can happen by accident, even if no 'statindex' is defined (without a defined statindex, the default value is derived from the service ID and port; someone could define different services on the same port/service). And if it does happen, it can silently corrupt memory. So, to make sure this doesn't corrupt memory by mistake, check that 'currentFunc' actually fits in the 'rpc_stats->stats' array before updating the stats. If it doesn't, just don't update the stats. We could assert instead, since this situation should never happen, but failing to update our stats is a rather minor side effect, and so asserting doesn't seem worth it (especially if we're running in the kernel). Also ignore the stats if the given 'totalFunc' doesn't match what's in an existing stats struct. This avoids the case with the BOZO_CreateBnode example mentioned above, where there is no memory corruption, but the resulting stats are meaningless. Reviewed-on: https://gerrit.openafs.org/15026 Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Andrew Deason (cherry picked from commit 34a46993434d046a8831c513c84cf1024ef1de16) Change-Id: I65879b47b70d2d29f1f84fa9a322e6eb06f04468 Reviewed-on: https://gerrit.openafs.org/16229 Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason Reviewed-by: Michael Meffie Reviewed-by: Kailas Zadbuke Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit dd1dc35068587ac88bc24199a35878d83fa4113c Author: Cheyenne Wills Date: Tue Jul 7 15:53:16 2026 -0600 linux: replace strncpy with strscpy The Linux 7.2 commit: 'string: Remove strncpy() from the kernel' (079a028d6327e) removed the strncpy() function. As a replacement, we can use the strscpy() function that was introduced by the Linux 4.3 commit: 'string: provide strscpy()' (30035e45753b7) strncpy() is only used on LINUX in the macro osi_procname(), and osi_procname() is only used to log the process name with afs_warn(). We don't need the NUL-padding behavior or the return value of strncpy(), so using strscpy() as a drop-in replacement for strncpy() is fine. Add a configure test to verify that strscpy is available in the Linux kernel headers and update the 'osi_procname' macro to use strscpy() instead of strncpy() when it is available. Note, since strscpy() was introduced in Linux 4.3, this commit is retroactive. Reviewed-on: https://gerrit.openafs.org/16872 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Marcio Brito Barbosa (cherry picked from commit c4387834c5e5a33847c68be9564a5d5535523cf8) Change-Id: I544cc248e2a248d1d3d6ebd167266e9ef680aa6a Reviewed-on: https://gerrit.openafs.org/16928 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit de32db0b657cf95ab65d5ae5b5ac639eb3caa7ab Author: Andrew Deason Date: Thu Dec 1 22:55:41 2022 -0600 LINUX: Disable osi_dnlc The DNLC ("directory name lookup cache") is our cross-platform way of caching lookups of directory items, so we can sometimes avoid hitting the (disk) cache when running afs_lookup(). The Linux kernel has its own (much more sophisticated) directory name caching layer: the dcache, represented by 'struct dentry's (unrelated to our data cache / 'struct dcache'). Maintaining our own cache is rather pointless, and just adds overhead and creates more possibilities to make mistakes (as can be seen by the number of special cases in afs_lookup() to avoid the DNLC). So, just disable the DNLC on LINUX by default by setting the existing afs_usednlc global to 0. At least for now, still build the DNLC code to avoid bitrot if we want to turn it back on. Add a sysctl for afs_usednlc so developers can turn it back on for benchmarking or other testing. Declare afs_usednlc in afs_prototypes.h next to the other osi_dnlc routines. Reviewed-on: https://gerrit.openafs.org/15213 Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Tested-by: BuildBot Reviewed-by: Andrew Deason (cherry picked from commit b7f4d36241e143a855ead90bd133cc0664fb9ff6) Change-Id: I22277d71baac7862a3dedce091c9ad4d98b33183 Reviewed-on: https://gerrit.openafs.org/16927 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit e5e639568946a10ca256a645417c3f9c69b095dd Author: Koustubh Mattikalli Date: Sun May 24 08:54:00 2026 +0530 log: Optimize token unlogging by cell name Use new API function ktc_ForgetTokensByCell() introduced in Change-Id "Ia3f3767adeb52ee357b19aec337870d99cb2e33b". This function allows forgetting tokens for a specific cell without affecting tokens for other cells. This simplifies the unlog implementation by eliminating the need of listing all tokens, forget them all, and then re-register all except those specified by the -cell option. However, the old implementation of forgetting and re-registering tokens is still run if the kernel does not support the ktc_ForgetTokensByCell() operation. The old code path will be removed later in a future commit. This change reduces code complexity and improves performance by avoiding unnecessary token listing and re-registration operations. Co-authored-by: Kailas S Zadbuke Co-authored-by: Amar Bhandari Reviewed-on: https://gerrit.openafs.org/16802 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Cheyenne Wills Reviewed-by: Marcio Brito Barbosa Reviewed-by: Andrew Deason (cherry picked from commit 98e433d736437a36e66a765d12b4968d0b5c9e60) Change-Id: Ib0bf2bdcb52db08f343d65398311d4d40a02bf9f Reviewed-on: https://gerrit.openafs.org/16898 Reviewed-by: Michael Meffie Reviewed-by: Kailas Zadbuke Reviewed-by: Koustubh Mattikalli Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 581d5f4bc3f36ab7471950f1cda36a40e2186eda Author: Koustubh Mattikalli Date: Tue Aug 25 14:48:29 2026 -0600 log: Add ktc_ForgetTokensByCell() In I23ee8bde66e1e743febe22ae7e4ec822ff2ae7e0 commit (afs: Add new pioctl PUnlogCell), new pioctl call has been introduced which provide a mechanism to remove tokens for a specific cell. To use this new pioctl call, introduce new functions ktc_ForgetTokensByCell() and ForgetTokensByCell() that allows forgetting tokens for a specific cell without affecting tokens of other cells. Co-authored-by: Kailas S Zadbuke Co-authored-by: Amar Bhandari Reviewed-on: https://gerrit.openafs.org/16621 Reviewed-by: Andrew Deason Reviewed-by: Marcio Brito Barbosa Reviewed-by: Cheyenne Wills Reviewed-by: Michael Meffie Tested-by: BuildBot (cherry picked from commit ab9bc6c57af509488efa4dd28bfb4be67f57924c) Conflicts: src/auth/liboafs_auth_krb.la.sym - N/A for 1.8.x Change-Id: If180bb0d404c0a26293934f1a9c16199067f27ac Reviewed-on: https://gerrit.openafs.org/16897 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk commit f780844bf86d4ce1a1b08e6b5f7101444d33625e Author: Koustubh Mattikalli Date: Fri Aug 29 16:37:49 2025 +0530 log: Keep rxgk tokens for unlog -cell The current implementation of unlog removes all rxgk tokens regardless of the "-cell" option provided, leading to unintended token deletions. This happens because "unlog -cell" currently works by discarding all tokens and then re-adding all tokens that don't match the given -cell. But it is using the old ktc_GetToken() interface, which only works for rxkad tokens, so any non-rxkad tokens (including rxgk tokens) get discarded, regardless of cell. To fix this, replace calls to ktc_ListTokens(), ktc_GetToken(), and ktc_SetToken() with their newer counterparts ktc_ListTokensEx(), ktc_GetTokenEx(), and ktc_SetTokenEx(), which work with all tokens. Change struct tokenInfo to use a struct ktc_setTokenData for use with these new functions, instead of the old struct ktc_token/ktc_principal fields. Also change unlog_CheckUnlogList() to take a cell name directly, instead of a ktc_principal, since we no longer have a struct ktc_principal to give it. Co-authored-by: Kailas Zadbuke Co-authored-by: Amar Bhandari Reviewed-on: https://gerrit.openafs.org/16531 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Cheyenne Wills Reviewed-by: Andrew Deason (cherry picked from commit d3087641058a8fe982a7280401f07f7c2ce72499) Change-Id: I4d30e3deaacaf9736b2d694a80d993df89a437fa Reviewed-on: https://gerrit.openafs.org/16896 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Koustubh Mattikalli Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk commit 8f4a1b03dfbdc663e0537adf11bf5c3e1cee2a87 Author: Kailas S Zadbuke Date: Thu Nov 13 12:50:29 2025 +0530 afs: Add new pioctl PUnlogCell The current implementation of PUnlog removes all tokens and it does not provide a mechanism to remove tokens for a specific cell. In a multi-cell environment, this behavior is inefficient because it removes tokens for all cells, even when only a single cell’s tokens need to be invalidated. To address this limitation, introduce a new pioctl, PUnlogCell (pioctl code O.3), which removes tokens only for the specified cell. This avoids unintended token removal for other cells and eliminates the need for additional pioctl calls to re-acquire tokens that are unnecessarily revoked by PUnlog. Co-authored-by: Koustubh Mattikalli Co-authored-by: Amar Bhandari Reviewed-on: https://gerrit.openafs.org/16620 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Cheyenne Wills Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie (cherry picked from commit e9de8ffd492dcf03a268596bdef56e41552230ff) Change-Id: I1a4da9abbd8a0b260c636a07eed9de8e864d3081 Reviewed-on: https://gerrit.openafs.org/16910 Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk commit 3ec6d84001cc5769cea0fb31298599bc064d5520 Author: Jeffrey Altman Date: Thu Oct 5 13:38:56 2023 -0400 config: move VIOC_SETBYPASS_THRESH define to vioc.h 9d63160cccf88d554e47e4bed8e3bbe26f14f8c2 ("bypasscache-20080922") allocated the _OVICEIOCTL(2) code point and added the definition to venus.h instead of src/config/vioc.h. Reviewed-on: https://gerrit.openafs.org/15588 Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot (cherry picked from commit 20272f0cddb3b3bce84305f914796b5e9dbc774d) Change-Id: I8de86ba58d9caf06841bf935d99ef3a76ac269c9 Reviewed-on: https://gerrit.openafs.org/16909 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit fdc55ca791e8da97fd0098428cd57120bf0a4c24 Author: Jeffrey Altman Date: Sun Sep 24 21:48:36 2023 -0400 config: remove VIOC_STATISTICS _VICEIOCTL(68) Added to OpenAFS declarations by 405cd3e8e0b8f72244fda6cbdb1a9ba9b9ad150c ("add-new-arla-pioctl-20010710") but the assignment made by the registrar was Group Code Name Purpose / Usage ===== ==== ========================= ============================ A 1 AIOC_STATISTICS arla: fetch statistics as it is an Arla specific pioctl. This change removes the unused declaration from OpenAFS src/config/vioc.h. Reviewed-on: https://gerrit.openafs.org/15583 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Cheyenne Wills Tested-by: BuildBot (cherry picked from commit 882de5b105472af2e1798083c5ef1779abc296dc) Change-Id: Ie5225e552d0e1a084c90c0c0fa3e594e395f6e82 Reviewed-on: https://gerrit.openafs.org/16918 Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 11467ce5efbc9c028173373fd76c69d144228a95 Author: Jeffrey Altman Date: Sun Sep 24 17:35:43 2023 -0400 config: Document ioctl/pioctl namespace management The ioctl and pioctl namespaces are separated into multiple code groups with distinct management rules for each code group. This commit documents the code groups used by OpenAFS. New OpenAFS ioctl and pioctl codes should be introduced into the 'O' (OpenAFS) code group unless the ioctl or pioctl is being coordinated with another implementation. Link: https://registrar.central.org/pioctls.txt Reviewed-on: https://gerrit.openafs.org/15581 Reviewed-by: Andrew Deason Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Tested-by: BuildBot (cherry picked from commit 7c22b918835e4d2b24546048df921f61e4454f4a) Change-Id: I4b39f38bce10e49ee663bd7ec6e89c7f2a0b761f Reviewed-on: https://gerrit.openafs.org/16907 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit aab796d55f2ee1b3b02746a09e29580aff2c30d8 Author: Marcio Barbosa Date: Mon Aug 31 19:56:56 2020 +0000 Revert "vos: take RO volume offline during convertROtoRW" This reverts commit 32d35db64061e4102281c235cf693341f9de9271. While that commit did fix the mentioned problem, depending on "vos" to set the volume to be converted as "out of service" is not ideal. Instead, this volume should be set as offline by the SAFSVolConvertROtoRWvolume RPC, executed on the volume server. The proper fix for this problem will be introduced by another commit. Reviewed-on: https://gerrit.openafs.org/14339 Reviewed-by: Cheyenne Wills Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 85893ac3df0c2cb48776cf1203ec200507b6ce7d) [cwills@sinenomine.net] For 1.8.x, this commit reverts the commit: 9d217903f0c7f6b260f166fad6dbf77c67df7c2d (gerrit 15233) Note The pullup to 1.8.x (15233) and this revert are duplicates of an earlier pullup and revert (gerrits 14310/14361). Change-Id: I48f83a0f43b61b5195929bf33e737615f30fae20 Reviewed-on: https://gerrit.openafs.org/16895 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk Reviewed-by: Andrew Deason