commit d8eab602c3279378f344cdde2f14fe05707ac71d
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu May 30 16:56:18 2024 -0400

    Make OpenAFS 1.8.12pre1
    
    Update version strings for the first 1.8.12 prerelease.
    
    Change-Id: I0a314eb7d96183c40c995b9415aaf1c679defee5
    Reviewed-on: https://gerrit.openafs.org/15759
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 1ccee780e109c06917612390c54978bb13fce767
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu May 23 20:20:11 2024 -0400

    Update NEWS for OpenAFS 1.8.12pre1
    
    Add news items for the upcoming 1.8.12 pre-release.
    
    Change-Id: Iab9167e93526f7f5b83a7bc47341a76c8ad54c52
    Reviewed-on: https://gerrit.openafs.org/15753
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 308ee38a30549afd38ad1f83bb537fd6b43513a8
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu May 30 12:54:57 2024 -0400

    afs: Correct comment typo in DNew()
    
    Commit aed4a0c4b91c5ce185547e83bfff443f3d3831f9 "afs: avoid panic in
    DNew when afs_WriteDCache fails" introduced Doxygen comments for DNew().
    However, due to a cut-and-paste error, the name of the second parameter
    is incorrect.
    
    Correct the Doxygen comments.
    
    No functional change is incurred by this commit; it is just
    documentation.
    
    Reviewed-on: https://gerrit.openafs.org/15757
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit abb15d449ca6792d9145c13c01d573ce32545916)
    
    Change-Id: Ie540b13a040ac47bbaa2f753a9bbd21c046d4b49
    Reviewed-on: https://gerrit.openafs.org/15758
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 4022359253fb6a645b01f99b820b7331c019115a
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Fri Jul 19 14:41:55 2019 -0400

    afs: avoid panic in DNew when afs_WriteDCache fails
    
    afs_WriteDCache may fail for an IO error, or if interrupted (EINTR).
    Unfortunately, DNew will panic in this case, crashing the entire
    machine.
    
    In order to avoid an outage in this case, don't panic.  Instead, reflect
    the error back to the caller of DNew.
    
    While here, add Doxygen comments to DNew.
    
    Reviewed-on: https://gerrit.openafs.org/13804
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit aed4a0c4b91c5ce185547e83bfff443f3d3831f9)
    
    Change-Id: I634ce4b3c7c8b6029c5236b51f6ab8c0a5463ce9
    Reviewed-on: https://gerrit.openafs.org/15744
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 837e6a4ad28588f22b4e9ace9bfa4bb4f412485c
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Wed Feb 5 17:49:03 2020 -0500

    dir: check DNew return code
    
    Commit 0284e65f97861e888d95576f22a93cd681813c39 'dir: Explicitly state
    buffer locations for data' changed DNew and DRead to return a return
    code.  However, the callers of DNew were not modified to check the new
    return code.  (This commit applied only to the implementations dealing
    with AFS directories, in afs/afs_buffer.c and dir/dir.c.  The ubik
    implmentations of DNew and DRead, dealing with ubik databases, were not
    modified.)
    
    Modify all (non-ubik) callers of DNew to check the return code.  In
    addition, modify code as needed so return codes are properly propagated
    to the callers.
    
    While here, add Doxygen comments for AddPage and FindBlobs.
    
    Reviewed-on: https://gerrit.openafs.org/13801
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 6bd94fe29d1aa6ce61ba02e681defea79770ccdd)
    
    Change-Id: I8d036748fa18365b843a69f2f0710eab31aa723d
    Reviewed-on: https://gerrit.openafs.org/15743
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit db39f77f0ec931816ba5cc265e87954173b435e2
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Sun Mar 3 20:20:58 2019 -0500

    dir: check afs_dir_Create return code in afs_dir_MakeDir
    
    afs_dir_MakeDir() ignores the return code from afs_dir_Create() for the
    '.' and '..' ("dot" and "dotdot") directories.  This has been the case
    from the earliest implementation (MakeDir() calling Create()) in the
    original IBM import.
    
    Instead, check the return codes to prevent the possibility of creating
    malformed directories.
    
    Reviewed-on: https://gerrit.openafs.org/13800
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit dcce956df4fc8d368962cb36d8b3c801be69a85a)
    
    Change-Id: Ib7066ab307fe6ab0e78407566d0fd32bd6827859
    Reviewed-on: https://gerrit.openafs.org/15742
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 3ff310182926ab783f0f07fa8667d1ebaabbc5de
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Apr 25 15:58:49 2024 -0500

    afs: Reintroduce and use DFlushDCache()
    
    This reverts commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39 (afs:
    Remove DFlushDCache()). This also re-adds the caller of DFlushDCache()
    removed by commit 4045f3d5350955de91e019b09ad2ed7941f6dadb
    (disconnected-shadow-directory-fixes-20090121), and the prototype
    removed by commit 5ad1e6cb904b953fbb04603f3ce1466dcc38cd48 (dir:
    Prototype and function name cleanup).
    
    The removal of the DFlushDCache() call in commit 4045f3d535 seems like
    a mistake. If the directory in question has dirty pages in memory, we
    need to flush those to the cache before making a copy of the
    directory's data, because we read the existing dir's data from the
    cache. If we don't flush, afs_MakeShadowDir() might make a copy of the
    dcache that is missing updates to the directory blob.
    
    Reviewed-on: https://gerrit.openafs.org/15740
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    (cherry picked from commit 799d789fbaefc8c4dbcb803b885deb35f4947d26)
    
    Change-Id: I3bffab4bae4214503591ac102aba59c7072b39af
    Reviewed-on: https://gerrit.openafs.org/15741
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit de7bc4890e4368b88f20e15a7d795fc1c54cef29
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Apr 15 08:22:37 2024 -0600

    Linux-6.9: file_lock mbrs moved to file_lock_core
    
    In the Linux 6.9 commit:
     'filelock: split common fields into struct file_lock_core' (a69ce85ec9)
    several fields were relocated into a new structure, file_lock_core,
    which was added as a member the file_lock structure.  The names where
    changed (fl_x to flc_x).
    
    Add a configure test to determine if the new members (flc_type, flc_pid,
    and flc_flags) are available as part of the file_lock_core structure.
    
    Add static inline getter/setter routines to handle accessing the
    flc_type or flc_pid members in the file_lock_core structure, or the
    fl_type, fl_pid members in the file_lock structure as appropriate. Add
    static inline function to clear FL_SLEEP in the flc_flag in the
    file_lock_core structure or the fl_flag in the file_lock structure as
    appropriate.
    
    Minor surrounding white space cleanup.
    
    Reviewed-on: https://gerrit.openafs.org/15708
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9937cce3f35f4e3aad0802189457bf16b84d7ab4)
    
    Change-Id: I51343e1c2e360b68eabe2cc4069c25948b6c0729
    Reviewed-on: https://gerrit.openafs.org/15739
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 95e67f9c3e6e605da07081b9521ed2eaa2add648
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Mar 15 16:24:05 2024 -0600

    tests: rx/perf wait for server init before client
    
    The rx/perf test can occasionally fail due to the rxperf server not
    being fully initialized before the client started. This can cause test
    errors, even without changes to the rx code.
    
     C_TAP_VERBOSE=1 make check TESTS="rx/perf"
     ...
     rx/perf
    
     1..4
     ok 1 - Started rxperf server
     not ok 2 - single threaded client ran successfully
     RPC: threads   30, times       1, write bytes  1048576, read bytes...
     ok 3 - multi threaded client ran succesfully
     ok 4 - Server exited succesfully
     FAILED 2 (exit status 1)
    
    Add a routine that waits for the rx_perf server to become available.
    Loop several times trying the connection via the rx_perf client, with
    a short delay between retries.  If the connection cannot be established,
    fail the test.
    
    Clean up trailing whitespace on a couple of lines.
    
    Note: This failure was observed in an OpenAFS buildbot worker that
    included a make tests, and which would occasionally fail when there was
    no rx related code changes. The intermittent failure could be duplicated
    on a slower virtual test system, but would not fail on a faster system.
    
    Thanks to mmeffie@sinenomine.net for the 'wait_for_server' contribution.
    
    Reviewed-on: https://gerrit.openafs.org/15676
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit 6ace773fdcff0486663a0cc4381d7b6ce2352c04)
    
    Change-Id: I75c6cd1e4e724d4803b62e2f74e5307cb8fcb14d
    Reviewed-on: https://gerrit.openafs.org/15736
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 4fc27548be88947ef58e2a3a3654a08ec6c334d9
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Tue Apr 9 10:57:26 2024 -0400

    rxperf: Add -o option to rxperf client
    
    Add the -o (output) option to the rxperf client specify the output file.
    
    If not specified, the output is written to stdout, as before.
    
    Reviewed-on: https://gerrit.openafs.org/15731
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e6bc50524e1bde199f6643d9784fe331577bee90)
    
    Change-Id: I94a2f43c70f9cb5236c3ab4c5d2de66906eb68b3
    Reviewed-on: https://gerrit.openafs.org/15735
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit dfb6b53a6802e90f6bc2cd3cd39da467ce8e4488
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Wed Apr 3 11:36:54 2024 -0600

    Linux: Define afs_thread_wrapper() as static
    
    When building against a Linux 6.8 kernel, functions that are missing
    prototypes or declarations are flagged.
    
    We can add the static attribute to functions that are not referenced
    outside of the file that implements them to avoid having these functions
    flagged by the compiler.
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    This is an openafs-1.8.x specific commit.
    
    The function afs_thread_wrapper() in LINUX/osi_misc.c on the master
    branch was changed to a static function with commit:
     'afs: Drop GLOCK for various Rx calls' (d5e1428a3b)
    However this is a larger change than needed to fix the build problem and
    the commit could have a significant impact for 1.8.x since it is
    changing rx locking.  To avoid introducing such a change, just change
    the afs_thread_wrapper() to static as a 1.8.x specific commit.
    
    There are no functional changes in this commit.
    
    Change-Id: I4edc61e6a4989c16ccf41b935e205dbf209bf2a5
    Reviewed-on: https://gerrit.openafs.org/15727
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit d1a42401fddc51bd2f16da39dfebe0f60fc670ad
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 29 17:58:17 2024 -0700

    Linux: Remove weak attribute for key_type_keyring
    
    The reference to the Linux symbol key_type_keyring uses a weak
    attribute to assist in determining if the symbol is exported.  This
    method was introduced in commit: 'keyring-updated-20080310' (b7fb842b1c)
    as a way to detect if the symbol was exported by the Linux kernel.  A
    later commit: 'linux-keyring-export-check-20090701' (4ca66112c2)
    introduced an autoconf test that eliminated the need for using the weak
    attribute, but the commit did not remove the attribute.
    
    On a Debian-12 system on ARM64 the use of the weak attribute in this
    case causes an error when loading the kernel module:
      "ERROR: could not insert 'openafs': Exec format error".
    The error is due to the Linux module loader not supporting the
    relocation entry type in the openafs kernel module for the
    key_type_keyring.  Further investigation showed that this problem could
    occur with gcc-12 on a ARM64 system (see below for additional
    information).
    
    The code in osi_groups.c uses a pointer, __key_type_keyring, to the
    key_type_keyring.  When this symbol is exported by the Linux kernel, the
    loader would resolve the address and __key_type_keyring would contain
    the address.  If the key_type_keyring symbol was not exported,
    __key_type_keyring would be set to NULL (due to the weak attribute
    associated with key_type_keyring).
    
    Remove the weak attribute for key_type_keyring when the configure
    test, introduced in the 4ca66112c2 commit, determines that the symbol
    is exported (EXPORTED_KEY_TYPE_KEYRING is defined).  When the symbol
    isn't exported (pre Linux 2.6.22), just set the pointer,
    __key_type_keyring to NULL.
    
    NOTE:
    
    The load error was reported on the openafs IRC channel by "clarkb"
    
    The problem of loading the openafs kernel module was also observed
    on a NixOS system as well, and is described in the NixOS ticket
    
      https://github.com/NixOS/nixpkgs/issues/284501
    
    A Debian-11 system did not have a problem loading the openafs kernel
    module. Investigation of the differences between Debian-11 and Debian-12
    showed that the problem is due to a series of fixes in the toolchain
    (in particular gcc-12) to address 'Cortex-A53 erratum #843419', which
    deals with how the ARM64 ADRP instruction is used. With gcc-12, the
    code generated uses a R_AARCH64_ADR_GOT for this particular case (which
    isn't supported by the Linux kernel module loader).  Gcc-11 created a
    R_AARCH64_ABS64 relocation entry type for the symbol.
    
    Reviewed-on: https://gerrit.openafs.org/15668
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2f260825b96b76556aba82fc364c841357a23a7d)
    
    Change-Id: Ifce08cb01f0b642ee9c2d90480b8a1766dfc52ff
    Reviewed-on: https://gerrit.openafs.org/15728
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 7b4802efaf29ef76969c8b931a31e93dd4fbb000
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Mar 11 09:05:33 2024 -0600

    Linux 6.8: Use roken's strlcpy() in kernel module
    
    The Linux 6.8 commit 'string: Remove strlcpy()' (d26270061a) removed the
    the strlcpy function from the Linux kernel.  The replacement function,
    strscpy(), cannot be used as a drop-in replacement as its currently a
    Linux kernel specific function and there are differences in the returned
    value.
    
    We can use roken's strlcpy() (provided in roken/strlcpy.c).
    
    Create a configure test to that defines its own strlcpy() to test
    if the kernel doesn't provide one itself. Note, we need to use a
    different function signature for strlcpy() from what the kernel might
    have otherwise the test build succeeds when the kernel does provide a
    strlcpy().
    
    Update the OpenAFS kernel specific roken.h to define the prototype for
    strlcpy when it's not present in the Linux kernel.  We need to match the
    defines used in the 'real' roken.h so the roken/strlcpy.c can build
    properly. Add defines for ROKEN_LIB_FUNCTION, ROKEN_LIB_CALL and
    ROKEN_LIB_VARIABLE to the kernel roken.h
    
    Update Linux's osi_machdep.h to include roken.h so the strlcpy protoype
    is available.
    
    Update the Linux MakefileProto to include the strcpy-kernel object
    when building the kernel module.
    
    Reviewed-on: https://gerrit.openafs.org/15646
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 30b18c165752e6d0ce7b6daa6a90453f5e5e6d17)
    
    Change-Id: I8013623e8f735d15bb7d4ac84ed0867f12b77783
    Reviewed-on: https://gerrit.openafs.org/15706
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 6333fae573f8a7b7656e9c1b05d445a37b951b88
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Mar 5 08:37:47 2024 -0700

    Linux 6.8: Remove ctl_table sentinels
    
    The Linux 6.8 commit 'sysctl: Remove the now superfluous sentinel
    elements from ctl_table array' (c8a65501d3) was a clean up commit
    that removed the sentinel entry in the ctl_table array (e.g. the
    "null" entry at the end of the table).
    
    As of Linux 6.8, including the sentinel entry (.procname =) in the
    ctl_table is unnecessary, but doesn't yet break anything.  But it is
    likely that including the sentinel will start to cause runtime errors in
    future Linux versions very soon, so avoid the sentinel when we can, to
    avoid possible problems in the future.
    
    Define a new macro that can be used as the last entry of a ctl_table
    that will either add a "null" entry, or nothing.
    
    There is not a specific build test we can use within configure, so we
    must explicitly test the Linux version to decide if we need to use a
    sentinel or not when defining the macro.  We are selecting 6.8 to match
    the version where the Linux kernel is removing the sentinels from the in
    kernel filesystems.
    
    Note: See the Linux merge commits 'Merge tag 'sysctl-6.8-rc1' of
    git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux' (a05aea98d4)
    for more details behind the staged removal of the sentinels in the
    ctl_table structures and the potential future change for removing the
    actual check for the sentinel within the Linux kernel.
    
    Reviewed-on: https://gerrit.openafs.org/15645
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 35c8c1bf0b1cb48178f676ba5bcf16ad59c5a33b)
    
    Change-Id: I34cb7586003e10a6c7438d7205123d57af30585e
    Reviewed-on: https://gerrit.openafs.org/15705
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 18a2a932df9c1b6b3c7513a6c161d4259f052ca9
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Feb 12 12:31:30 2024 -0700

    Linux 6.8: use hlist iteration for dentry children
    
    Linux 6.8 commit 'dentry: switch the lists of children to hlist'
    (da549bdd15) replaces the dentry lists d_subdirs/d_child with the hlist
    d_children/d_sib.
    
    Add an autoconf test for a d_children member in the dentry structure.
    
    Define a macro that uses the applicable Linux function for iterating
    over a dentry's children.
    
    Reviewed-on: https://gerrit.openafs.org/15632
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8e0bbe6a07523dd2e7efb3c9d1b4ad9e19fc9bb7)
    
    Change-Id: Ief4c334c4ef3e54822e068dcdf654541e86b9176
    Reviewed-on: https://gerrit.openafs.org/15704
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit fef1fc6f740c6f7395cf51ce99ed296652579c7d
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Mar 5 07:40:08 2024 -0700

    rxgen: Declare generated PKG_OpCodeStats()
    
    The function {PKG}_OpCodeStats() is generated by rxgen, however a
    prototype for the function is not generated.
    
    The functions h_ProcMainBody_setup() and h_HeadofOldStyleProc_setup()
    in rpc_parse.c emit prototypes for {PKG}_ExecuteRequest() and
    {PKG}_TranslateOpCode(), but do not emit a prototype for
    {PKG}_OpCodeStats().
    
    Update rxgen to emit a function prototype for {PKG}_OpCodeStats() in the
    generated header file.
    
    Use a variable to point to "PackagePrefix[PackageIndex]" in
    h_ProcMainBody_setup to improve readability.
    
    {PKG}_OpCodeStats(), specifically RXSTATS_OpCodeStats(), is flagged due
    to a missing prototype when building against a Linux 6.8 kernel (which
    sets the -Wmissing-declarations and -Wmissing-prototypes compiler flags
    as default). Linux 6.8 commit:  'Makefile.extrawarn: turn on
    missing-prototypes globally' (0fcb70851f). When building against a
    kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15631
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 26bb4d143b31ba027cf2721ac731df67a174c43b)
    
    Change-Id: I9072d22d142b5b7a2f59b0cfc4026066ef1d9501
    Reviewed-on: https://gerrit.openafs.org/15703
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 57e0192a690942c2a0f4f1f685cfadf2106b763a
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Dec 7 15:43:35 2021 -0600

    rxgen: Declare generated PKG_TranslateOpCode()
    
    Ever since commit 5c77a6ca (rxgen: add *TranslateOpcode functions to
    XDR code), rxgen generates a PKG_TranslateOpCode function in the
    relevant .xdr.c source, which can translate an RPC opcode into the RPC
    name. But we never declare this function in a header file, making it
    impossible to use without compiler warnings (unless the caller
    declares the function itself).
    
    To make it possible to actually use this function, declare this
    function in the generated header file.
    
    Reviewed-on: https://gerrit.openafs.org/14871
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9b2c27fc6d299cb0b23eca3e8cb25b7e0c41b11a)
    
    Change-Id: I2479ff7f6579769b3319b2939ffde60fe570c880
    Reviewed-on: https://gerrit.openafs.org/15702
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 4c92936aefede187e57a9a433c0c192af2fc5e84
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 15:30:23 2024 -0700

    rx: Add static attribute to internal functions
    
    When building against a Linux 6.8 kernel, functions that are missing
    prototypes or declarations are flagged.
    
    We can add the static attribute to functions that are not referenced
    outside of the file that implements them to avoid having these functions
    flagged by the compiler.
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    There are no functional changes in this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15626
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 55adceba2d561ec4e89235de329782a68e603a11)
    
    Change-Id: I1b2a6e1c07bd4b75b7b83e177f17865eb903e488
    Reviewed-on: https://gerrit.openafs.org/15701
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 195f154aaf2d8aff1f6debdb47c0db8f07cb5c5e
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 29 17:53:31 2024 -0700

    afs: Add static attribute to internal functions
    
    When building against a Linux 6.8 kernel, functions that are missing
    prototypes or declarations are flagged.
    
    We can add the static attribute to functions that are not referenced
    outside of the file that implements them to avoid having these functions
    flagged by the compiler.
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    There are no functional changes in this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15625
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit efee796f28b53bf3ffc03186f81790c36c23c94c)
    
    Change-Id: I0d923a65731f825d6c190056b0ccc3d362236706
    Reviewed-on: https://gerrit.openafs.org/15700
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 90b8dcff36e9b03ec01550ad1a070a0ab7db8c46
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Feb 9 09:01:33 2024 -0700

    afs: fix 'ops' variable may be used uninitialized
    
    When the function rxfs_storeInit() has the static attribute, gcc flags
    the variable 'ops' as possibly uninitialized.
    
    In function 'afs_CacheStoreDCaches',
        inlined from 'afs_CacheStoreVCache' at
         .../src/afs/afs_fetchstore.c:630:14:
         .../afs/afs_fetchstore.c:535:17: error: 'ops' may be used
         uninitialized [-Werror=maybe-uninitialized]
          535 |         code = (*ops->destroy)(&rock, code);
              |                ~^~~~~~~~~~~~~~
         ...src/afs/afs_fetchstore.c: In function 'afs_CacheStoreVCache':
         ...src/afs/afs_fetchstore.c:567:22: note: 'ops' was declared here
          567 |     struct storeOps *ops;
              |                      ^~~
         cc1: all warnings being treated as errors
    
    This is a false positive report by the gcc compiler.
    
    The function rxfs_storeInit() returns a 0 only when it has successfully
    assigned a value to the ops variable, and afs_CacheStoreDcaches() is
    only called if the return value from rxfs_storeInit() is 0.
    
    The ops variable is only used within a block that is within a for loop,
    which could leave a stray value if the variable isn't initialized within
    that loop.
    
    Assigning a NULL to ops is sufficient to avoid the compiler error, and
    relocating the declaration of the ops variable into the block where it
    is actually used ensures that it's always initialized before its use
    within the loop.
    
    Clean up whitespace in the statement that follows the new location for
    the ops variable.
    
    Note, this commit is being added before a commit that adds the static
    attribute to the rxfs_storeInit() function which also "fixes" the
    compiler error (see: afs: Add static attribute to internal functions).
    
    Reviewed-on: https://gerrit.openafs.org/15630
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 36e4c02ff27b9d66755b9544778896b9b1e5c391)
    
    Change-Id: I9d8a07e576c6bf889f8f182c6fc0d34dc997c004
    Reviewed-on: https://gerrit.openafs.org/15699
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 09f9660fbbb4f3c20ba9f2283169818372c3f474
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Wed Feb 7 19:34:29 2024 -0700

    rx: Add function prototypes to rx_prototypes.h
    
    The prototype for rxk_NewSocketHost() is not in a header file, but is
    defined in the referencing .c file. The ARCH/rx_knet.c files that
    implement rxk_NewSocketHost() do not have a prototype (but when the
    rx_kcommon.c implementation is used it does have a prototype, since
    rx_kcommon.c is the "referencing .c file").
    
    Add the prototype for rxk_NewSocketHost() to rx_prototypes.h and
    remove the prototype from rx_kcommon.c
    
    The prototypes for the functions rx_DebugOnOff() and rx_StatsOnOff()
    are defined within rx_prototypes.h, but are within a preprocessor
    conditional for AFS_NT40_ENV, however the implementation for these
    2 functions do not have the preprocessor conditional.
    
    Rearrange the prototypes for rx_DebugOnOff() and rx_StatsOnOff() so they
    are outside the AFS_NT40_ENV preprocessor conditional.
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    There are no functional changes in this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15624
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8528c36b96fe2935f42188caabf4feed0d5dbcbd)
    
    Change-Id: Ieae8be7f89f5c675c6580d8cfb02ea77ce4088f7
    Reviewed-on: https://gerrit.openafs.org/15698
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 53752b01bc734f4bd5f5da24ac116c7fcb2ac07f
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Feb 12 09:43:29 2024 -0700

    afs: Remove SRXAFSCB* protos from afs_prototypes.h
    
    The prototypes for the afscbint RPC functions (SRXAFSCB_*) implemented
    in afs_callback.c are defined in 2 locations, afs_protypes.h and
    afscbint.h (which is generated by rxgen).
    
    Remove the protoypes for the SRXAFSCB_* functions from afs_prototypes.h
    as they are redundant and are currently out of sync (the prototypes
    for SRXAFSCB_GetCellByNum() and SRXAFSCB_TellMeAboutYourself() are
    not present in afs_prototypes.h).  Also remove a redundant prototype for
    afs_RXCallBackServer() which was prototyped both before and in the
    middle of the SRXAFSCB* prototypes.
    
    Since afs_callback.c only pulled in afs_prototypes.h and not afscbint.h,
    add an include for afscbint.h to ensure that the all the prototypes for
    the SRXAFSCB_* functions are present.
    
    The 2 functions listed above are flagged due to missing prototypes when
    building against a Linux 6.8 kernel (which sets the
    -Wmissing-declarations and -Wmissing-prototypes compiler flags as
    default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15644
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit fae4003b403420d0b548920c7837a2d2b6e432ae)
    
    Change-Id: I7d435455fc60cc10200ee91d0d76534367ab5883
    Reviewed-on: https://gerrit.openafs.org/15697
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 96932160fa8ef1cf4422e9e1d1ca2a449f8ffe93
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Feb 12 08:59:32 2024 -0700

    afs: Add afs_xioctl prototyes to afs_prototypes.h
    
    Several .c files have external function prototypes for the afs_xioctl
    function, while the implementing files do not have the prototype.
    
    Move these prototypes into afs_prototypes.h so that the prototypes are
    available to both the caller and the implementation.
    
    Because the file holding the implementation does not have a prototypes,
    afs_xioctl() is being flagged when building against a Linux 6.8 kernel
    (which sets the -Wmissing-declarations and -Wmissing-prototypes compiler
    flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a Linux kernel with CONFIG_WERROR=y, the build
    fails.
    
    Note that the function afs_xioctl() has platform specific
    implementations.
    
    Reviewed-on: https://gerrit.openafs.org/15643
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 575d986aa6c18ac27ea42fb66ae8b8cb0e27fe6c)
    
    Change-Id: If746111fdcf6a00459f524711623d322d5fc7942
    Reviewed-on: https://gerrit.openafs.org/15696
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit c04c2d07226583846c3949a4855c7db4316438da
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 15 09:00:05 2024 -0700

    afs: Move function prototypes into headers
    
    Several .c files contain external function prototypes, while the
    implementing files do not have these prototypes.
    
    Move these prototypes into header files so that the prototypes are
    available to both the caller and the implementation.
    
    Because the file holding the implementation does not have prototypes,
    these functions are flagged when building against a Linux 6.8 kernel
    (which sets the -Wmissing-declarations and -Wmissing-prototypes compiler
    flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Add the prototypes for the following to afs_prototypes.h:
      exporter_add
      afs_syscall (AFS_LINUX_ENV)
      BlobScan
    
    Remove the prototypes from the .c files where they are referenced.
    
    Reviewed-on: https://gerrit.openafs.org/15642
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 85781d7e83ae4501d8ab267bf55ef63f90f63101)
    
    Change-Id: I74333e99e08af88bebdcbff4767d79397acac358
    Reviewed-on: https://gerrit.openafs.org/15695
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 8b516820abf1edace60276152e9ed18a0b30fc13
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Feb 12 08:25:47 2024 -0700

    afs: Add includes to pick up function prototypes
    
    The functions defined in LINUX/osi_crypto.c, osi_pagecopy.c,
    osi_probe.c, and osi_syscall.c have function prototypes defined in
    existing header files, however either due to missing includes or
    preprocessor conditionals that skip the includes, these function
    prototypes are not being pulled in.
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Add the necessary includes to osi_crypto.c and osi_pagecopy.c and
    re-arrange the includes in osi_probe.c and osi_syscall.c to ensure that
    the function prototypes are present when building the Linux kernel
    module.
    
    Reviewed-on: https://gerrit.openafs.org/15641
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3683f15278e34e13d7272928eaf666f0acc4e1e9)
    
    Change-Id: Iac704fc98d0d685358224049f383d68aa7a105f8
    Reviewed-on: https://gerrit.openafs.org/15694
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 25e17fe7196fd4a46e6a9408d135812ca53ddf80
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 8 11:50:16 2024 -0700

    afs: Declare init_hckernel_mutex()
    
    The function init_hckernel_mutex() (in rand.c) is flagged due to a
    missing prototype when building against a Linux 6.8 kernel (which sets
    the -Wmissing-declarations and -Wmissing-prototypes compiler flags as
    default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Add a function prototype for init_hckernel_mutex() to afs_osi.h and
    remove the prototype from afs_osi.c
    
    There are no functional changes with this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15622
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ccc2af429710104793fb4659b10697cceab182b3)
    
    Change-Id: Ic5eb4584a980657a01a1cb4411c0c1f03b1f3560
    Reviewed-on: https://gerrit.openafs.org/15693
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit b1c93f13870e24795b857cb483320871703d00e8
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Wed Feb 7 15:25:10 2024 -0700

    Linux 6.8: Add function prototypes for krb5
    
    The external files for heimdal/krb5 do not provide function prototypes
    in a header file that is used when building files that we use from
    heimdal/krb5 (e.g. crypto.c).
    
    These functions are flagged due to missing prototypes when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    We cannot modify the external source files, however there is the local
    OpenAFS include file, krb5_locl.h, that does contain OpenAFS specific
    changes.
    
    Add declarations to krb5_locl.h for the functions defined in the
    heimdal/krb5 source.
    
    There are no functional changes with this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15621
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 612927dd1dd44bbd08eda790de12b24213583156)
    
    Change-Id: Iaae28186a24c3c5ca4407de9563c8cfed9644921
    Reviewed-on: https://gerrit.openafs.org/15692
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 15357006d9e8e45ac0be9e0c7e87456ee3857d90
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Jan 30 20:44:48 2024 -0600

    roken: Declare ct_memcmp in hcrypto kernel roken.h
    
    Currently, we build roken's ct.c for our kernel module to provide
    ct_memcmp(). We declare a prototype for ct_memcmp() in krb5_locl.h,
    and all of our kernel callers of ct_memcmp() include krb5_locl.h, so
    all callers get a prototype and avoid "implicit declaration" compiler
    warnings.
    
    However, roken's ct.c itself does not include krb5_locl.h, so it
    doesn't get a prototype for ct_memcmp(). This is dangerous, since if
    the prototype ever slightly differs from the implementation for any
    reason, it could cause a variety of issues.
    
    This also causes warnings when building against a Linux 6.8 kernel
    (which sets the -Wmissing-declarations and -Wmissing-prototypes
    compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    We cannot change ct.c, since it is an external source file. To fix
    this, instead move the prototype of ct_memcmp() to our stub
    kernel-only roken.h header, which is included by ct.c. Make
    krb5_locl.h also include roken.h when building kernel code, so all of
    the ct_memcmp() callers also get the prototype.
    
    While we're here, add some informative comments and an include guard
    to our previously-blank roken.h stub.
    
    Written in collaboration with cwills@sinenomine.net.
    
    Reviewed-on: https://gerrit.openafs.org/15620
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit be236069e9d26339ed5f9939965bca0dd3f8bf4e)
    
    Change-Id: I1112881938b0585263871f8f83d63b8909b12f0d
    Reviewed-on: https://gerrit.openafs.org/15691
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 5d2c4a0a8ada4a87d7f39dc21dbce14b3b2a978f
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 15:52:57 2024 -0700

    afs: Add declaration for RXAFS_ResidencyCmd()
    
    The function RXAFS_ResidencyCmd() is 'manually' defined within the
    afsint.xg, so a prototype for the function is not defined.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Add a prototype for RXAFS_ResidencyCmd
    
    There are no functional changes with this commit
    
    The function RXAFS_ResidencyCmd() was introduced with commit:
    'rename-residency-from-mrafs-to-osd-20090427' (8655541d1e)
    
    Reviewed-on: https://gerrit.openafs.org/15619
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1d6cfbc5f627abf3808aae97afb72662301483b5)
    
    Change-Id: I42d0868b83e119b0c3348a3af8aaf5961c040bb2
    Reviewed-on: https://gerrit.openafs.org/15690
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 73844a4939a7b8198bf11d4dcbce9e28b621bd11
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 8 16:10:57 2024 -0700

    afs: Remove afs_DbgDisconFiles()
    
    The function afs_DbgDisconFiles() is not referenced anywhere within the
    source tree.
    
    Remove the function afs_DbgDisconFiles().
    
    The commit: 'disconnected-rw-20080922' (433afd4779) introduced
    afs_DbgDisconFiles(), but the function was never used.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15640
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 32bb90047782f41df521bba5ab4aba8b4ed34203)
    
    Change-Id: I61d06515845dbb18a370f7856285596514242e99
    Reviewed-on: https://gerrit.openafs.org/15689
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit be8001f1d64a2d9da4fdaeff59fdc40e205d4526
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Feb 8 12:22:13 2024 -0700

    afs: Remove SRXAFSCB_FetchData/StoreData
    
    Commit 'client-64bit-file-size-support-20011031' (971b18bc42) introduced
    the RPC functions SRXAFSCB_FetchData() and SRXAFSCB_StoreData with RPC
    numbers of 65536 and 65537 respectively.
    
    Commit 'more-64bit-file-size-support-20011031' (c5b1a3775f) removed the
    references from afscbint.xg, but did not remove the actual code. The
    65536 RPC number was reassigned to SRXAFSCB_GetCE64, and the commit:
    'This is mostly a rewrite of src/afs/afs_cell.c, and associated changes'
    (629d08065) assigned the 65537 RPC to SRXAFSCB_GetCellByNum.
    
    Remove the 2 functions since there are no references other than the
    prototype in afs_prototypes.h.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    Reviewed-on: https://gerrit.openafs.org/15639
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 379f7fc51d411990189ec28e48c91edc87d76120)
    
    Change-Id: I1a3539227d22e6df89d78245634dfeb14943035a
    Reviewed-on: https://gerrit.openafs.org/15688
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit bb7eaafb2e87d313eeb0a7bedebe2aa7a797b005
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 08:56:31 2024 -0700

    afs: Remove DFlushDCache()
    
    The function DFlushDcache() is not referenced anywhere within the
    source tree.
    
    Remove the function DFlushDCache().
    
    The commit: 'disconnected-shadow-directory-fixes-20090121' (4045f3d535)
    removed the code reference to DFlushDCache() and the commit:
    "dir: Prototype and function name cleanup" (5ad1e6cb90) removed the
    function prototype.  The function was introduced in the commit:
    "disconnected-flush-before-shadowing-20090119" (e1cc987ea5).
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     "Makefile.extrawarn: turn on missing-prototypes globally" (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15615
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 432ac5810e51bb5bb2cf1df0bfebc64d1c4d7a39)
    
    Change-Id: Ib8ab79c76c633632215e02235f47fdb1d744e721
    Reviewed-on: https://gerrit.openafs.org/15684
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit bd2828f1ab4c88b95a5d075e29a942922aa86dba
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 09:28:02 2024 -0700

    afs: Remove dummy_PSetAcl()
    
    The function dummy_PSetAcl() is not referenced anywhere within the
    source tree.
    
    Remove the function dummy_PSetAcl().
    
    The commit: 'doxygen-comments-20081010' (4b72f8765c)
    introduced the function, but dummy_PSetAcl() has never been referenced
    or defined within a header file.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15618
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 05ca98687d882c72915e91430e29a4f2a36c502c)
    
    Change-Id: Ie4420a365e07d2d8564530e004df75330e86bea5
    Reviewed-on: https://gerrit.openafs.org/15687
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit cc8053e86eef75bff308e7606f2618e9fdc4ec5d
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 09:13:27 2024 -0700

    afs: Remove afs_osi_UnmaskUserLoop()
    
    The function afs_osi_UnmaskUserLoop() is not referenced anywhere within
    the source tree.
    
    Remove the function afs_osi_UnmaskUserLoop().
    
    The commit: 'darwin-afsdb-handler-signal-mask-20040728' (9728182c00)
    introduced the function, but afs_osi_UnmaskUserLoop() has never been
    referenced or defined within a header file.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Reviewed-on: https://gerrit.openafs.org/15617
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 587cfce29cb4e014e5b8d96e0433c5e7d2c6729a)
    
    Change-Id: I0fe91a41e8f00773cb1d5976a8c3e39e4415f6bc
    Reviewed-on: https://gerrit.openafs.org/15686
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 4881af8e3cf3f7d09670ba4b5bb9b644a329530d
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 12 09:09:39 2024 -0700

    afs: Remove afs_MemExtendEntry()
    
    The function afs_MemExtendEntry() is not referenced anywhere within
    the source tree.
    
    Remove the function afs_MemExtendEntry().
    
    The commit: 'memcache: add extend-entry function' (f821c7e5c8)
    introduced the function, but afs_MemExtendEntry() has never been
    referenced or defined within a header file.
    
    This function is flagged due to a missing prototype when building
    against a Linux 6.8 kernel (which sets the -Wmissing-declarations and
    -Wmissing-prototypes compiler flags as default). Linux 6.8 commit:
     'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
    
    When building against a kernel with CONFIG_WERROR=y, the build fails.
    
    Note, afsMemExtendedEntry() was a wrapper for the function
    _afs_MemExtendedEntry(), which is still used.
    
    Reviewed-on: https://gerrit.openafs.org/15616
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit eab2a4ae758876bb7547d289f936f9cfc4227cf5)
    
    Change-Id: I37f241a6df33ab15249c6708d5ca820353c8b413
    Reviewed-on: https://gerrit.openafs.org/15685
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit ef7b8c578790d84c89f09c3236f1718725770e75
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Wed Feb 7 14:51:23 2024 -0700

    cf: Add function prototypes for linux conftest
    
    The Linux 6.8 commit:
      'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f)
    
    added the compiler flags -Wmissing-declarations and -Wmissing-prototypes
    as defaults for all kernel modules builds.  This change causes configure
    to fail for various Linux kernel tests.
    
    Update the template used to create the conftest.c file to provide a
    function declaration for conftest().
    
    Use a 'static' attribute when defining functions used within tests.
    
    Note: 2 configure tests (LINUX_INIT_WORK_AS_DATA and
    LINUX_IOP_CREATE_TAKES_MODE_T) defined nested functions.  Relocate the
    nested functions to outside the body of conftest() to avoid compiler
    errors due to nested function definitions.
    
    Reviewed-on: https://gerrit.openafs.org/15614
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1440843b80e28db908bd8c264b8adbfb2c95b4d9)
    
    Change-Id: I38acb7b0cb08dec8e9bca5f3792fbf981884a74c
    Reviewed-on: https://gerrit.openafs.org/15683
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 05ac6149f2f7998b6110c403d26757151b8e8ffe
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Mar 11 15:36:54 2021 -0500

    afs: remove dead ICL (fstrace) code
    
    The ICL code (afs/afs_icl.c) which supports fstrace includes a number of
    functions that have been dead code since the original IBM code import.
    Some of these seem to have been intended to support fine-grained event
    tracing, but the implementation was never completed.
    
    Remove the dead code.  No functional change is incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/14555
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ba58d9912cff07a6f2af7275017cf70115f1a88d)
    
    Change-Id: Ic0a6d5dac200e7e130fa8df66005bdaf291cf088
    Reviewed-on: https://gerrit.openafs.org/15682
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 9f052c137d1184a783c8ac3182c3544b275484f5
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Sat Jan 9 12:50:03 2021 -0600

    afs: Remove SRXAFSCB_GetDE
    
    The GetDE RPC has been commented out from afscbint.xg effectively
    since it was introduced, but we still define the SRXAFSCB_GetDE server
    stub for it.
    
    This is useless, but also potentially dangerous, since the stub
    routine just returns success, without populating the output arguments.
    One of the output arguments is a string, and so if this RPC is
    actually run, the rxgen-generated server code will try to xdr_string()
    that string. Since we never set it to anything, this will result in
    xdr_string trying to dereference a NULL pointer.
    
    None of this actually happens currently, since the GetDE RPC is
    commented out. But to avoid the above situation if it's ever
    uncommented, remove the useless SRXAFSCB_GetDE function.
    
    Reviewed-on: https://gerrit.openafs.org/14488
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 444a971edc47c34efbefed6e332ee6e843ae072b)
    
    Change-Id: I83846d79ce3143571923cb6023075620091f093d
    Reviewed-on: https://gerrit.openafs.org/15681
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit 1e1bf8ebcd3c18b05326cd7b26a471db804aeaeb
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Jul 24 23:22:01 2018 -0500

    LINUX: Minor osi_vfsop.c cleanup
    
    - Fix the formatting on afs_mount/afs_get_sb definitions
    
    - Declare a couple of functions static that are not referenced outside
      of this file
    
    Reviewed-on: https://gerrit.openafs.org/13282
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit fa15fbda0aa0c3810695d9b867d3258b60e76b7c)
    
    Change-Id: I8a32475bf2ddb9c7206aef679947021925697c5a
    Reviewed-on: https://gerrit.openafs.org/15680
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

commit fca6fd911e493a344c040a95ea4ab820e2828802
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Jun 28 12:50:52 2018 -0500

    afs: Make afs_AllocDCache static
    
    Nothing using afs_AllocDCache outside of afs_dcache.c. Declare the
    function static, to ensure that nobody else uses it, and to maybe
    allow for more compiler optimization.
    
    Reviewed-on: https://gerrit.openafs.org/13226
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4ab70de9641807bd06056f0c1ac79550453b9574)
    
    Change-Id: I6fd9e31c4b2e862174402f731a77c91599893223
    Reviewed-on: https://gerrit.openafs.org/15679
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>