commit a0b7f71122285f71c3ff0d006d1f9a77b1481732
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Thu Jun 29 23:20:28 2023 +0200

    Make OpenAFS 1.8.10
    
    Update version strings for the 1.8.10 release, and add the
    finishing touch to NEWS.
    
    Change-Id: I5ade3bf8eb05474c5e4344e7c727545e807a0053
    Reviewed-on: https://gerrit.openafs.org/15490
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a48dc74d793a95790c34e9701bbcbe02080308bc
Author: Stephan Wiesand <stephan.wiesand@desy.de>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 30e83126649e8aeeecf1c10436f6f9a315e459b6
Author: Stephan Wiesand <stephan.wiesand@desy.de>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit abeed74bb0d0bd7a3a5dbd13b9e953a994fb78e6
Author: Andrew Deason <adeason@sinenomine.net>
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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2b32b130f534068251ce9fd1b621de6e480d56d7)
    
    Change-Id: I194308e2a4783cc3205c6cfd54880421635f6b38
    Reviewed-on: https://gerrit.openafs.org/15443
    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: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4394a3ee84ffaba559bbe9102c8e6d801f8d6625
Author: Andrew Deason <adeason@sinenomine.net>
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 <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 6b96a49eb6268adf9fc7e077fe849af7802a1575)
    
    Change-Id: Iebb35b323ceb50f9603387c46168b80ec800735d
    Reviewed-on: https://gerrit.openafs.org/15422
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Tested-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ee6944d96d7692244438cb1aa7f84a102aebff76
Author: Benjamin Kaduk <kaduk@mit.edu>
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 <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e51ed7be3849025e9b47d1a644a4fcd99b774b30)
    
    Change-Id: I06ac2155170d8f005afd9551c69d5ef3e60afff3
    Reviewed-on: https://gerrit.openafs.org/15442
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Tested-by: Ben Huntsman <ben@huntsmans.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e4e9122365a3ec05c01add5333b532f2c19e1732
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c2db41258370159c1257ee79df10afa4a2a2d9e8)
    
    Change-Id: I433e4842b684c5f0f453e20d2f5d455b10a792eb
    Reviewed-on: https://gerrit.openafs.org/15441
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 332b5593d487c25d0091c5572519364c57cace90
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4810cca10bc32df7ba7809fc2bf095d20e2febd8)
    
    Change-Id: I687caa6daae83fc7986e76d370b55f90f5ca53cc
    Reviewed-on: https://gerrit.openafs.org/15425
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Tested-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a2ab598bae94a9ce0c95034c1a54bcd8e12d5a87
Author: Ben Huntsman <ben@huntsmans.net>
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
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8a2d4faa73d0f2e03a4016d7f84c5d5437040cec)
    
    Change-Id: I5a2fc4ad1a829f1ee30387da20ce477c84fa020f
    Reviewed-on: https://gerrit.openafs.org/15424
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Tested-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit af58c5cd15ad7b93a93892247fd1c4119e806767
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 795ef90d4041f1a5a1139435cc70f96457e0f64b)
    
    Change-Id: Id037e2e548c27b23e2746f804ddcaf7b79d905c4
    Reviewed-on: https://gerrit.openafs.org/15411
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 12ce31ce1dbd86dff47a036b36ce6ad506bd7b75
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 5a7630acfd8bfd462b633475a6e195d9dbdfb451)
    
    Change-Id: I3a803f76ab84f1e055e91cf4f2be96440f141746
    Reviewed-on: https://gerrit.openafs.org/15410
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0967702c3f71c5d61e33f905c3272d029303743e
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5e282943ff00fbd5c9ba3056c25959794f8a1144
Author: Andrew Deason <adeason@sinenomine.net>
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 <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 5aaed53f07fae0856e6da9defc408960e72364a7)
    
    Change-Id: I107c01917512da6c1043880cb93754be37919c47
    Reviewed-on: https://gerrit.openafs.org/15401
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7f9445bbeb72bcb8257ba0e0608746e31efae40e
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ee7019a7630d01f29fecebd89ca69ad8a37e24e2)
    
    Change-Id: I2a34a0d8fd7b6c3721ede0c40c212c3993402235
    Reviewed-on: https://gerrit.openafs.org/15400
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f6fbb85c00411bf97e9855be73baf49bd6b061d7
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 858ee34545e57acab1e4e5813cd1b9a011538b9e)
    
    Change-Id: If89c6f401db04826ef45de83b91240f106cca616
    Reviewed-on: https://gerrit.openafs.org/15389
    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: Kailas Zadbuke <kailashsz@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7a3ad3bc1c87e525698f7dda1e4b0fbbd913da03
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit 6873dc925c5acc0ce7d65cf778ffee09c82a9898)
    
    Change-Id: If131bee5b466a119f54b05388a065e6af23698cf
    Reviewed-on: https://gerrit.openafs.org/15388
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 30cf5d8f934afdaa5a2a28b2e5fac8adde70808b
Author: Ben Huntsman <ben@huntsmans.net>
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
    <sys/libsysp.h>.  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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ca67e8c84891200398e577d76c0125966d22b01e)
    
    Change-Id: Icc3e241e09876a4e9ed3e779c1ba904e0762f92c
    Reviewed-on: https://gerrit.openafs.org/15386
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e83ce49c2dfff64b87a265a4250957a2e62c94d2
Author: Ben Huntsman <ben@huntsmans.net>
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 <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit b713b62b3358482a818436a54975596188cb002b)
    
    Change-Id: I726cf21a2c70305c24c3f43f2504e70a98536aa7
    Reviewed-on: https://gerrit.openafs.org/15385
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9b94108664330ac4b95a026a8be6c1e260c507fc
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d03723e87a16e19a34950ca84a6139095a0694f9)
    
    Change-Id: I6727512ee343b3ee4cbb03c1e6242a69f407b987
    Reviewed-on: https://gerrit.openafs.org/15384
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c962d1b91141daceb66c58b30f2acef9e22f36c0
Author: Ben Huntsman <ben@huntsmans.net>
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 <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4580f213b3a25dd57e6fd721f7ecc0ecad84fb07)
    
    Change-Id: I3e0d62258e57ff6a54fae2e49a427c764e03a9ae
    Reviewed-on: https://gerrit.openafs.org/15383
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit cff8ef661ba272027e44a0b21d77c3cc4e69b0ef
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f4fc18b80e81f10b17729ef06cca6a9548d36130)
    
    Change-Id: I0fcc1429111eaafa489adec330b5eb900022293e
    Reviewed-on: https://gerrit.openafs.org/15382
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c6a391f6212860e381373f3c915885ff92a755cf
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1aeac365712f09ac90fe251c90b889548e25ac89)
    
    Change-Id: I469d94701d3554e74cfdc78686a83e7333210ad4
    Reviewed-on: https://gerrit.openafs.org/15381
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3a88fb9a73b612473090c505a67d3bd4d707f4ba
Author: Ben Huntsman <ben@huntsmans.net>
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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0c43fe64dd885aed1ec1be4a2419e6396e583ec5)
    
    Change-Id: I68315c09eb3d6b2e30ea759d4f9bf5726a98e5d7
    Reviewed-on: https://gerrit.openafs.org/15380
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b6696e67bc7a85d892531a5e7c3a0f03998ba64b
Author: Ben Huntsman <ben@huntsmans.net>
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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ba3e1410d5df4454dc4dc63e1404a261977b0f60)
    
    Change-Id: I7ec71522f8e35ede3532e3b1d77623ef25510561
    Reviewed-on: https://gerrit.openafs.org/15379
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 927f906f3d0cfdbe6f38608a56f9f92700806f1e
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 54dbd474a5bd43cf62a226802593b062069509ce)
    
    Change-Id: Ie59450a91fcb374b1362f0bd88a93f258597a22d
    Reviewed-on: https://gerrit.openafs.org/15378
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2826b3271aea8608fec44174d8b7e1ea7e805d99
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ad2b880c3791046883f8c0ef15f327c85e013b5b)
    
    Change-Id: Iaef185ec0e045ded8453f6b276e6b6b9075b3388
    Reviewed-on: https://gerrit.openafs.org/15377
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9d2bfcab35eac3dc0040be10681269daba30f866
Author: Ben Huntsman <ben@huntsmans.net>
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 <tkeiser@sinenomine.net>
      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 <buildbot@rampaginggeek.com>
    Reviewed-by: Jeffrey Altman <jaltman@auristor.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 615681710a38bd1a92f2c476df9fdab7ac1d9bdd)
    
    Change-Id: I3fcfc1c7e3e26e927d0a8e2a233c4c12b0781308
    Reviewed-on: https://gerrit.openafs.org/15376
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d00e6d6fb5ec4cf2520ae2c71f38091d950ec785
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 319d361499af933451425acaeabac9bc6548c96b)
    
    Change-Id: I252de19363824ae23187b7b9da878137814ab09d
    Reviewed-on: https://gerrit.openafs.org/15375
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 99ea3deeb5b082bdcbd14c41b6a2c11a900bccb4
Author: Ben Huntsman <ben@huntsmans.net>
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 <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit c0968b6c69c3f16468a7fe4a234d8421731e20e0)
    
    Change-Id: I060b7b102c963a517d79bad41b5e4c827cbccad8
    Reviewed-on: https://gerrit.openafs.org/15374
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0d845973f05ef70991f0ee8007fb1a2dfdea3ea1
Author: Ben Huntsman <ben@huntsmans.net>
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_<RPC Name>" 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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 91532e3142751468aa8f7bbabe7de087b77259bf)
    
    Change-Id: Ia665937002137dca1a8ec4573b4fe8932fc90dd0
    Reviewed-on: https://gerrit.openafs.org/15373
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c0cfe72f072ad27c7958b110678134adad7cebbd
Author: Ben Huntsman <ben@huntsmans.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 448d2b1184e872f977a662c3f48af04029f9a112)
    
    Change-Id: Iff910b63174c9b046e031285dd30672b0f592c1a
    Reviewed-on: https://gerrit.openafs.org/15372
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b768ba5f1fa15763177cad3ed35e1da5316e7f14
Author: Ben Huntsman <ben@huntsmans.net>
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 <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1a4da8868fd32e928def64599bb6ec9d6b455423)
    
    Change-Id: I575d89164ef386d1cdf562b2206b502b3c2e8582
    Reviewed-on: https://gerrit.openafs.org/15371
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f3cdd139d83fc74f89d16ab6f685ec25ea40edf4
Author: Ben Huntsman <ben@huntsmans.net>
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 <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit b5b34278b26ca22eea988fb18d738969dd608ede)
    
    Change-Id: Icb91b47d819f1bcc0e277a482f2a22d87dc8bc6c
    Reviewed-on: https://gerrit.openafs.org/15370
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 75578909c5071d45eb2a5989917a3e4a9234aace
Author: Andrew Deason <adeason@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit a912db315b4f29673808a7f900eb038ebd7b89c2)
    
    Change-Id: Ic106b893f212b33c85bded8443bcb782205f290c
    Reviewed-on: https://gerrit.openafs.org/15369
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 567c987992b2e027668186e75017423e5637308b
Author: Andrew Deason <adeason@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 7acd66ae39db2049c8f80f4fceb4fcd15fe8e8b8)
    
    Change-Id: I94e74b56379fe1103d966883835b8af8a0d98f7e
    Reviewed-on: https://gerrit.openafs.org/15368
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c8a92c4a7e1badfaf81517303440cd9ac7a55dd0
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu Mar 15 18:53:59 2018 -0400

    roken: do not clobber __attribute__
    
    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.
    
    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.
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/12961
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 388eaec3452ed4b18a95ee34efcbe4cf64814701)
    
    Change-Id: Id93ec414a59a2f5866e503601b7e42bbb4f8d66a
    Reviewed-on: https://gerrit.openafs.org/15367
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c08c7ba8fbf37018176ee87b980650dd34124678
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Feb 24 13:05:29 2023 -0700

    rx: Revert RXS_DestroyConnection()'s return type
    
    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.
    
    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.
    
    This is a 1.8.x specific commit
    
    Change-Id: I9685ac884a10298ae8faad012717499874f25316
    Reviewed-on: https://gerrit.openafs.org/15334
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1da00dfa9446c4c881e8659ec48a5e00262828ca
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Apr 12 18:21:23 2021 -0500

    afs: Assert avc->lock is held in afs_IAS_once
    
    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 <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 72223e0958c2d7cddd968970547dd73fc3cc1351)
    
    Change-Id: I9acf5599a8ef1e724a00cf362695fe34ca87c0bf
    Reviewed-on: https://gerrit.openafs.org/15331
    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: Stephan Wiesand <stephan.wiesand@desy.de>

commit 002c5a0c758aeb023c0fb2caa2247e8574fff1aa
Author: Andrew Deason <adeason@sinenomine.net>
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 <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2630e70550defc664efa0952589cf82ed3c51796)
    
    Change-Id: Ib37b92cfccbf161d72d2db73eeaea6fd8b312961
    Reviewed-on: https://gerrit.openafs.org/15316
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 363a3050610ec66483c71c8052ba40337fead942
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Thu Jan 26 19:30:04 2023 +0100

    CellServDB update 09 May 2022
    
    Update all three copies in the tree, and the rpm specfile.
    
    Reviewed-on: https://gerrit.openafs.org/15305
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1b92c766f1cf52b3bae3a00e08d40a2334bf9f24)
    
    Change-Id: I26fb3ff045d41b840fc6565d1a17aca8e75fcd30
    Reviewed-on: https://gerrit.openafs.org/15323
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4a0f5562915b1058de15ec46649c09cdbddce269
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Wed Jul 7 11:08:10 2021 -0600

    Remove kdump
    
    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 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.
    
    The intended functionality of kdump has been replaced by various kernel
    debugging tools, such as dtrace or systemtap.
    
    Reviewed-on: https://gerrit.openafs.org/14623
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 489cfb587a87ab53817ad0b4eccd65d9f7b332e2)
    
    Change-Id: Idf9582fd65482f32e7f13af0bf734c2b970da757
    Reviewed-on: https://gerrit.openafs.org/15315
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4e4ffde5d0a17e48f82c4b67e921a8881ffc4fe5
Author: Andrew Deason <adeason@dson.org>
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 <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e0c288416df59a117cd818ada930fd1259955983)
    
    Change-Id: Ie188b9f108bf55cfae7fcb358a1de21bad076f11
    Reviewed-on: https://gerrit.openafs.org/15314
    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: Stephan Wiesand <stephan.wiesand@desy.de>

commit 85df2442240c9384822e6658e9aad4f83c19d6e3
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Tue Mar 9 23:12:50 2021 -0500

    DARWIN: correct size of fstrace ICL_TYPE_LONG and ICL_TYPE_POINTER
    
    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.
    
    Move the definition of ICL_LONG from afs_icl.c to icl.h so fstrace.c may
    share the ICL_LONG logic and value.
    
    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.
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/14558
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit adf08b464efa8c29256dc7b261b10b60cc31119d)
    
    Change-Id: Ie3ef988d209a984839751051d7bd9a62369b5b11
    Reviewed-on: https://gerrit.openafs.org/15313
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 37d01094b929a6bb745aeb00a3f5a40fd8fe5822
Author: Ben Huntsman <ben@huntsmans.net>
Date:   Wed Aug 17 17:19:55 2022 -0700

    rx: Only use printf in the AIX kernel
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/15118
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8b1beaffb40c93ddab50c75b37f3de5ae517a849)
    
    Change-Id: Id06478cbc87b6965c021f26902e13bdfc2ef83d5
    Reviewed-on: https://gerrit.openafs.org/15309
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7c3c93db2977765a8b82426f0524b380f896b82f
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Jan 14 10:51:42 2020 -0600

    afs: Properly type afs_osi_suser cred arg
    
    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:
    
        func(afs_ucred_t **credpp)
        {
            afs_ucred_t **acred = *acredpp; /* incorrect assignment */
            if (afs_osi_suser(acred)) {
                /* ... */
            }
        }
    
    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*.
    
    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().
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/14085
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4ce922d339777faf647f7129f5ae3f173a7870b1)
    
    Change-Id: I1a6ce7788e86c32e554f87785f96f1d7b56d1496
    Reviewed-on: https://gerrit.openafs.org/15308
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit bfb3125fc1b73ae17a346d33a1a34e51379db9c4
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon May 4 15:55:07 2020 -0400

    Add static assert for size of osi_timeval32_t
    
    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 <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 10c5ba12ace51440c7e98add83465a7018961e6f)
    
    Change-Id: I9584a53154ffe673d19191a0bd9f6a92d6daf140
    Reviewed-on: https://gerrit.openafs.org/15304
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9433217b56afe3f23b2eeeefdb8fa644c2185e4a
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Jun 14 16:13:57 2021 -0600

    rx: Cleanup rx.h
    
    Fix up indentation and white space within preprocessor statements.
    
    Remove multiple blank lines
    
    Fix #endif comments so they match the #if
    
    Split long #define lines
      RX_PACKET_TYPES
      rx_MaxUserDatasize,
      RXS_OP
      RXS_SetConfiguration
    
    Note, this commit does not refactor any preprocessor statements.
    
    Reviewed-on: https://gerrit.openafs.org/14629
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 21df433134a059de8d3b3b46bb0892b34d910364)
    
    Change-Id: I197897f4f7e81bd2f931e3decefe447caae0c5d9
    Reviewed-on: https://gerrit.openafs.org/15301
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit bfc7688475fe5d2a178072a8978cf75635a15400
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 635594d6cceba6de4e09be5a9e9b908f7d16697d)
    
    Change-Id: I800516335f6ab0d01d2b29dd0ceba9213dafde59
    Reviewed-on: https://gerrit.openafs.org/15300
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 48d9848c5eef99bf1d8552acc055d3b91b2fbcc0
Author: Yadavendra Yadav <yadayada@in.ibm.com>
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 <buildbot@rampaginggeek.com>
    Tested-by: Jonathan Billings <jsbillings@jsbillings.org>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit 9e043e1a0cdca7624de3e27872273263c57027ed)
    
    Change-Id: If85d992c2639e59af7578ebc295f91d4f8462b69
    Reviewed-on: https://gerrit.openafs.org/15295
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b1bbe87643462ae88f8564044d9bff2703fd5123
Author: Mark Vitale <mvitale@sinenomine.net>
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 <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f02be4e3b89382317a3baa496f9cb672cdb4b32a)
    
    Change-Id: I38dc6e5d70b1743b96d2a227d28e58d1950b5835
    Reviewed-on: https://gerrit.openafs.org/15324
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1023b96ab1ea842c883c070e6197e71826dbe8be
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 29a89c82ad422f88b0898ad07e773dc2e71be983)
    
    Change-Id: Ieb303354f1332abb8278e62252c4842baa2132c7
    Reviewed-on: https://gerrit.openafs.org/15302
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d2429aec59fb3cc7d8a2cc94aa9e0ce8256ecb94
Author: Andrew Deason <adeason@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 939787565d5be55a8a803043dbc4f27b3f11b906)
    
    Change-Id: I32c73e87fa0b6b0b45971e06b8d8c5653f882f7b
    Reviewed-on: https://gerrit.openafs.org/15303
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1eac15a85a50b1c322dd460f5c747538c88c1a31
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Jan 10 18:11:58 2022 -0700

    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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 92342b099dd5ea539efc5ad119d36a87647c0895)
    
    Change-Id: Ib321796e473495d7d8774133c5e690b53bb26c17
    Reviewed-on: https://gerrit.openafs.org/15299
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 80cb460a8b434fa7fb2dacf642d54de1c0af5314
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3db8c37e8ef6bea0f03ef6b8f82ed93d52937d7d)
    
    Change-Id: Ied7875e885f51a6d3f00d65f1783df9439a18ae3
    Reviewed-on: https://gerrit.openafs.org/15298
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 30dc7fd2acbe756d5e618a6da484f0eebaf07e07
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 00aa9200be86b187c903503e56b2af55639ea2b8)
    
    Change-Id: I4b68cc8aa7b50f792152c2c00da6c6e3684755b7
    Reviewed-on: https://gerrit.openafs.org/15297
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 69839045c269af1b7023159e78dbc59e13e6202a
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Ralf Brunckhorst <rbrunckhorst@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c98994dd116121af75f6df6891e706957c6c953d)
    
    Change-Id: I6eb15897f48eb93d72739965c10b5f51b21d7336
    Reviewed-on: https://gerrit.openafs.org/15296
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f7625760d515a4954596526e78b9a8c2a9e9ec13
Author: Stephan Wiesand <stephan.wiesand@desy.de>
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 <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e2890626bc11964dd96cde0d7d8dd7fdfcf90857)
    
    Change-Id: I213ea7e23e01e7902919919581ad1d8e596303a2
    Reviewed-on: https://gerrit.openafs.org/15292
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit cba2b88851c3ae0ab1b18ea3ce77f7f5e8200b2f
Author: Jeffrey Hutzelman <jhutz@cmu.edu>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 68851b782ca2cb5e4ae7457255841f44f3bef15c)
    
    Change-Id: Ifd3a517f595cfef7fd9dd1fdd3f3aca8fe1bc25f
    Reviewed-on: https://gerrit.openafs.org/15286
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b885159cc2bc6c746aec1d54cdd8a515d1115d14
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit cfac0df9cd7152be2672c665442aac84215494d6)
    
    Change-Id: I74535bf83cdd47c9dd60a7114ec7694ae9981c9b
    Reviewed-on: https://gerrit.openafs.org/15281
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f0fee2c7752d18ff183d60bcfba4c98c3348cd5f
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e7737edb932a1c4d55a2551a44e481b40310c96d)
    
    Change-Id: If29ad539c5530289ffa49aa1fa489f612e9f5c78
    Reviewed-on: https://gerrit.openafs.org/15228
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9d217903f0c7f6b260f166fad6dbf77c67df7c2d
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 32d35db64061e4102281c235cf693341f9de9271)
    
    Change-Id: I00a99819ac7d1d981695da3eae1bd60de1cb53ae
    Reviewed-on: https://gerrit.openafs.org/15233
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5a48ce589a24f2280b085e50718b05d08db918bd
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 957b06984b77cba74bd90217b723220c1844809b)
    
    Change-Id: If82cf4d2983e7b6f8975ca4a9fa104ee5e36b917
    Reviewed-on: https://gerrit.openafs.org/15232
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3084117f10bd62acb1182cb54fc85b1d96738f70
Author: Cheyenne Wills <cwills@sinenomine.net>
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.
    
    There are no functional changes with this commit.
    
    Reviewed-on: https://gerrit.openafs.org/15194
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 63db2de22ef75292463ec1f0979e32afc05d0b95)
    
    Change-Id: I2e9c09c3b88ca3597720b1d8885537600d307418
    Reviewed-on: https://gerrit.openafs.org/15275
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c990b0d086632aef51585beabb42fd9ff22d1fc4
Author: Cheyenne Wills <cwills@sinenomine.net>
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
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 97f0a20e50f027fe00adb22c39b71f0ac79f1ff7)
    
    Change-Id: Icbbbd137fa6a404090ef7af94621100bb552d502
    Reviewed-on: https://gerrit.openafs.org/15274
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 973c5c585f59c0e88a2852d290abcb5e8fdf2b86
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit afafde158ff875d2459bb81ac373cde3e45dac03)
    
    Change-Id: I65cd27325b768ba192831401f4ac71e94071ecc7
    Reviewed-on: https://gerrit.openafs.org/15273
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f336d0aa01d208b1a7f3c1c509e2bd5d4d11f095
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 97018ace991d300a6ff75a1dcd1a69b4044f2b89)
    
    Change-Id: Iee3a196d9c23a8725171db4a3a884a077f0e95ac
    Reviewed-on: https://gerrit.openafs.org/15277
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fb3071563922df8172bab261e8f0c3e3e779b666
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 05eb420829f9bca155c1d5af9fe96844db974770)
    
    Change-Id: I80506cb8ae1c4bef67225eb11e3f640e8de52d26
    Reviewed-on: https://gerrit.openafs.org/15271
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b87081682dcc3035889c799d9752c6b35bdda87b
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c9ac7cdfb6365e3fc1914de80019a10328de1f4f)
    
    Change-Id: I15a793b35cfa920e8db1a99c5575b4f3f55be0dd
    Reviewed-on: https://gerrit.openafs.org/15270
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 334debcd4c9032aa7c71bb79bce2be8acafe78e2
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3e9d41c98ecf07519ff6d2a1413615547ace13b8)
    
    Change-Id: I4cd4584c6374a525714d392f98fb39be5406bdbc
    Reviewed-on: https://gerrit.openafs.org/15269
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 241dcae439cb1646f053391b3ee57553003cf6fa
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4be3e5d31fa3fbe6c80ad0973430074124b157bc)
    
    Change-Id: I62785fe6248cb4b26f680c2db044f59511a1e02e
    Reviewed-on: https://gerrit.openafs.org/15268
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0b908b7b9b39e36fc1bf98701d7e28d9a7a2f310
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit f7cb492c7e755ec91226c96cc82ad9f567f01f11)
    
    Change-Id: I4dfdd7e536f6af642789fc51f6f055652c63a46d
    Reviewed-on: https://gerrit.openafs.org/15267
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5af53db475cdf4350d1cc41c9d4d955156eced57
Author: Mark Vitale <mvitale@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 09ec1073b4c5d2eb70dcf5d8063018bc82e5a35e)
    
    Change-Id: I84b1d4b8b9041242d64b03a84ad4392ff9778950
    Reviewed-on: https://gerrit.openafs.org/15266
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 05a4adcdffaa75827fbdd80ab7b54195a2f0d243
Author: Ganesh Chaudhari <gangovind@in.ibm.com>
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 <gangovind@in.ibm.com>
    Reviewed-on: https://gerrit.openafs.org/15150
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c620c91416f726357d556ce043b6cc285cf87a8b)
    
    Change-Id: I6d8da31dc3735cab93c2b2226d436960c77b78ff
    Reviewed-on: https://gerrit.openafs.org/15264
    Reviewed-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9c6503e117f52dba91e10a09eb8d28c428550e34
Author: Ganesh Chaudhari <gangovind@in.ibm.com>
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 <gangovind@in.ibm.com>
    Reviewed-on: https://gerrit.openafs.org/15149
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit d38b068627f5e84cead88af85f904fea0c8edb6d)
    
    Change-Id: I7685c2b75f62fe28b8723e00fba22f5f7fe795f1
    Reviewed-on: https://gerrit.openafs.org/15263
    Reviewed-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 41e46e12ac74fab70c692cf475aad13be0bdb518
Author: Ganesh Chaudhari <gangovind@in.ibm.com>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e5a97ef2b46c8821db81363f4917ef214fc34a5e)
    
    Change-Id: I5092fe02a3bc3b7a6cb4ecfd4c8660278da9b0e8
    Reviewed-on: https://gerrit.openafs.org/15262
    Reviewed-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f6b088d2a7fe7fcabeb6b4635c8a01072c7219c4
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <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 <buildbot@rampaginggeek.com>
    Reviewed-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
    Tested-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit a10f99dbe025c74fb488b501daaf1f9574830cec)
    
    Change-Id: I6587283d93a2dc801c8a41f0663a6de1b5d8a045
    Reviewed-on: https://gerrit.openafs.org/15261
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 69f1ffb8989d8f1ac9a5ac4ea9459c358478e61d
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1c7eda8ea83bee3e674435109efccbc6082e4765)
    
    Change-Id: Idb013d76f00a78cfebd790900eabbcd6968029b7
    Reviewed-on: https://gerrit.openafs.org/15260
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fd64dcd3fb49e5575bf0ac8f0bb36857953c4f8a
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 873d803a3dc7acffd74c9432872bed4f6575abf9)
    
    Change-Id: I4cbbbeb5eb740b4f7979fa2137cb7faa9027d774
    Reviewed-on: https://gerrit.openafs.org/15259
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 046e787f1f87c6e18676510f7f89206ead1069bb
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 7a862f940b2e2f2169e267fc6deb31db8f3534c0)
    
    Change-Id: I4f1b42002c670e15b3fecfd8d0cfb2f461b8d136
    Reviewed-on: https://gerrit.openafs.org/15258
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fc80c74689ae6be3f428401aec071f0a273d4bff
Author: Mark Vitale <mvitale@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d2e755e33a266df17169a1fc05db1e540b5e76af)
    
    Change-Id: Ie191503cb3f57c60a2a9c31e638dc7f79c496591
    Reviewed-on: https://gerrit.openafs.org/15257
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 6652a632795aa23e1894c049f2d48c0881968add
Author: Mark Vitale <mvitale@sinenomine.net>
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 <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 336f5d91c6f4e93f77560d456fb29fbd82b237e5)
    
    Change-Id: I58c0ca157653b76562ee7071a567db681d33fc2e
    Reviewed-on: https://gerrit.openafs.org/15256
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d20def23d094b11b88265d1f7430fc5e4d55484a
Author: Mark Vitale <mvitale@sinenomine.net>
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 <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d3f8d8122880de9f5b25868b39efd1cc7d385ff6)
    
    Change-Id: Ice6c954e41e375fbe8ac670586d2616c565f0499
    Reviewed-on: https://gerrit.openafs.org/15255
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 35fde5873a1a9327333d15af399738ae55680e22
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 982d2f9dbe6586d06ffa2a61c02ea726b83b5902)
    
    Change-Id: I720132478d4d1b742f63576e6a98e96c7a935885
    Reviewed-on: https://gerrit.openafs.org/15254
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 29f7182c3fe25db9666871567a631e9173568ac8
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 6e5638ac7297701a99ea396dee1df8f56a6a50da)
    
    Change-Id: I17821e2cd0050bb0a468bfadda2c446beafeb537
    Reviewed-on: https://gerrit.openafs.org/15253
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3ee628c2dc5128ac68dd861b439a20db8837cecf
Author: Andrew Deason <adeason@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 809ee49b80d7bc0e720aaebe78fb9ecfd453065d)
    
    Change-Id: Iae1f642df6cfb4c2e757f0fc381cb98eb5bf448e
    Reviewed-on: https://gerrit.openafs.org/15252
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 8ec429d0a3a7b3169d1eb24eb37e8084e5bc6a4f
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 93b88935999ad25bc22daf64f9ebff30957e0a27)
    
    Change-Id: Ib81c3decc748c06b2f99cfa155095bffd1048f57
    Reviewed-on: https://gerrit.openafs.org/15251
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b5dd4df6ec3e87c7f06d214b213e30270a358f13
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit cdbcb6f947feff528adc324dd6487b21083e23aa)
    
    Change-Id: I854e7553b65956032a3c15aa427189bf8e4e3a0d
    Reviewed-on: https://gerrit.openafs.org/15250
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 33bcff698f8b12c7830acf969f93eecad52a937f
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 39b74c2c3725cfa39fc5076cd7803ee7d55923e3)
    
    Change-Id: I184591c24fac37b4c5a2b6fab7b42850b3004744
    Reviewed-on: https://gerrit.openafs.org/15249
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b9c3dbc0a60a3295f1622bc79a05938173aa95b4
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit d456bd9b258445f60745867c34ef7c7a8c7be187)
    
    Change-Id: Iaaa372887ac17f352a6a4bb9c14b896e88e3b28b
    Reviewed-on: https://gerrit.openafs.org/15248
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 84b177ccc856519a6a1aac7e18cd30514fccac15
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit dc6ced5e6d63ad89b1ad6f6b236a28b823abb59d)
    
    Change-Id: I483c41a5954caa8ed080134d82f2e08a7c1973a4
    Reviewed-on: https://gerrit.openafs.org/15247
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a0898c2d90ed2928245576505f74e935a1ea2722
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Sep 19 16:25:13 2022 -0600

    UKERNEL: avoid double include of roken.h
    
    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):
    
     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:
    
    Since roken.h is from an external source, we cannot update it to add
    the necessary check.
    
    Update UKERNEL/afsincludes.h to add a check to see if it has already
    been included.
    
    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 <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit cc0ffc56e85eec4133bcc5e745efa28f5d3c53a7)
    
    Change-Id: I4508c2d4bb878dadce649f0da2af16c9efa69b91
    Reviewed-on: https://gerrit.openafs.org/15265
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5993965112da00e29ebdb2be084b50bae5cbb90f
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Wed Mar 23 17:58:41 2022 -0300

    DARWIN: Declare/include functions before using them
    
    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.
    
    However, apple-clang 12 makes this an error by default, prohibiting the
    build of the current version on macOS 11 (Big Sur).
    
    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-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit f9c96d0fd609e14fcb8ff7d9269024e026f742cb)
    
    Change-Id: I70dadc44d40e1fc877f9e0490e28636907432faa
    Reviewed-on: https://gerrit.openafs.org/15246
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 34d869996dda2de2449a1623de051b86e262212c
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Jan 21 17:54:48 2022 -0600

    afs: Organize setpag() declarations better
    
    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).
    
    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).
    
    Reviewed-on: https://gerrit.openafs.org/14883
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 738a6487ad088068d19a18c6330e01a40f2fd278)
    
    Change-Id: I9dc933fa96fc6e7839c010c5207e644179343898
    Reviewed-on: https://gerrit.openafs.org/15245
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b56d5cdfa8cfff3bd3c166a38204cfa4dceaaf73
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Wed Mar 23 17:31:54 2022 -0300

    bucoord: Introduce ubik_Call_SingleServer_BUDB_*
    
    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.
    
    Also, make sure that ubik_Call_SingleServer() uses the same signature as
    ubik_Call(). This change helps us to get rid of casting errors.
    
    Reviewed-on: https://gerrit.openafs.org/14886
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 981b3d723ec56dad553be570147d1b2aa632f4e1)
    
    Change-Id: I5893a939bc5cd64eec9dbbf1ce8a0dc5032c81f0
    Reviewed-on: https://gerrit.openafs.org/15244
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1e6fd4ceae1f8146a5dfa7c66330289564dbe7be
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit aa9180652876a3ba9157776b69a6995ac4201d1b)
    
    Change-Id: I21a402bb6e20f2546c61bdabde021817dd3827d8
    Reviewed-on: https://gerrit.openafs.org/15243
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 79c8c8639952fc3305b50152ba450ed8d858e7be
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Wed Sep 1 12:38:14 2021 -0400

    fs: Trim trailing lsmount and flushmount path slashes
    
    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.
    
    Thanks to Stephan Wiesand for pointing out this issue.
    
    Reviewed-on: https://gerrit.openafs.org/14779
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit a7a672cae871aa9cf9cc003a37579cb4df51b3fe)
    
    Change-Id: I24a2ae323f64f2d73be8fbc26860fa2864e34bfe
    Reviewed-on: https://gerrit.openafs.org/15242
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 91f11551714c6b6f653fd367bc8d184c8aba9e7b
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Aug 24 13:03:24 2018 -0500

    afs: Detect VIOCPREFETCH special case properly
    
    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.
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/13301
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 252b3bcc75ea141ff93a7b3147865f4b952fcaca)
    
    Change-Id: I12d0616059dd8115b109b1ffa4cafe6ddc4b1662
    Reviewed-on: https://gerrit.openafs.org/15241
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 581450c74c57680eeb89bf937b4d42936df6196b
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Wed Apr 6 20:59:56 2022 +0000

    afs: Replace strcpy &co by safer alternatives
    
    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).
    
    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.
    
    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 <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (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 <mmeffie@sinenomine.net>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c7048f9a5c29df5816b6bcebaa42965bccb12557
Author: Mark Vitale <mvitale@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0839a3326858f7d7a0042614710dcf7316bb6018)
    
    Change-Id: I1c564255990803dac7abe1789f2941bf4fa30b58
    Reviewed-on: https://gerrit.openafs.org/15239
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fc5be911a0ef216b9af79a0ec6bc32512085d398
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 51c0387aaa5ec507c6e29063ef56d98e2931402d)
    
    Change-Id: I3c2d9de056bae3f2fed68f1ec183540b63584a43
    Reviewed-on: https://gerrit.openafs.org/15238
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 276632ea7334fd27972585823f358e92b448da59
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Jan 27 14:49:15 2022 -0600

    UKERNEL: Remove socket -> usr_socket redirection
    
    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.
    
    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'.
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/14887
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 17b16cb3989d1f41e314795515daf6c9b41cf1de)
    
    Change-Id: I35c7b7fc61c1c741be928fa7beb889d8848f0b81
    Reviewed-on: https://gerrit.openafs.org/15237
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f2f0be5e04f2a700b721f647a87cbffe2ccd606a
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Wed Mar 23 15:10:15 2022 -0300

    afs: Save size of sysname_info->name
    
    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.
    
    No functional change should be incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/14912
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c40c0bd00b7e49e67377e13f5b902c13a0e4478c)
    
    Change-Id: I5a7d0d733dfc48d4d4eb5d00ef959ad980722e17
    Reviewed-on: https://gerrit.openafs.org/15236
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 6ba75f842f307e94db86b95c9da98e9e40d11c35
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Jul 1 10:47:50 2021 -0300

    fs: add option to evaluate symlink or mtpt
    
    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.
    
    Reviewed-on: https://gerrit.openafs.org/14542
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 83d947c150322c3c7c65130ecf08719e466cae04)
    
    Change-Id: Ife60e046c149f3586dbdad0e9b3fd6059967ece1
    Reviewed-on: https://gerrit.openafs.org/15235
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f1fd9c9cae8438635ea6e64fff05507921046ef3
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
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 <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 981bc005f8161ca9ee52ea281c7d73e0e4e2461a)
    
    Change-Id: I11f03146da86c91f83ad682df7ad1943cb4ab68f
    Reviewed-on: https://gerrit.openafs.org/15234
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Harish Sharma <Harish.Sharma1@ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b17625959386459059f6f43875d8817383554481
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Dec 1 14:18:36 2022 -0700

    cf: Handle autoconf linux checks with -Werror
    
    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.
    
    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.
    
    In addition, fix the commented description for AC_CHECK_LINUX_BUILD to
    match the actual parameters
    
    Reviewed-on: https://gerrit.openafs.org/15191
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit e2ad1ca5f7355062e808f1717e7410b7ae893371)
    
    Change-Id: I2c8ba4c421ed751aa6ff2899ea173c1e84053322
    Reviewed-on: https://gerrit.openafs.org/15231
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 57df4dff496ca9bea04510759b8fdd9cd2cc0009
Author: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f81b01de1a51f02798ac764fb2f6948b592639da)
    
    Change-Id: Ib1e07bf6b8734a427a2682ca694fbe2e083f1ecd
    Reviewed-on: https://gerrit.openafs.org/15230
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2cf76b31ce4c912b1151c141818f6e8c5cddcab2
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Jun 28 14:14:48 2019 -0500

    LINUX: Run the 'sparse' checker if available
    
    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.
    
    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 <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1210a8d6d96db2d84595d35ef81ec5d176de05e8)
    
    Change-Id: I5d52b1eed48564956a687fba0419185b01621b13
    Reviewed-on: https://gerrit.openafs.org/15229
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
