commit a1c3d3eeab02eb1919bb96c653c4e2aec9e3fdb9
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Sun Oct 10 19:49:56 2021 +0200

    Make OpenAFS 1.8.8.1
    
    Update configure version strings for 1.8.8.1. Note that macos kext
    can be of form XXXX.YY[.ZZ[(d|a|b|fc)NNN]] where d dev, a alpha,
    b beta, f final candidate so we have no way to represent 1.8.8.1.
    Switch to 1.8.9 dev 1 for macOS.
    
    Change-Id: I329a48142a6baaedd190d07a1215ba93b0ecce42
    Reviewed-on: https://gerrit.openafs.org/14828
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ef16f671c999a371e50c79bb4e63a05f45f3c86d
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Wed Dec 8 19:18:41 2021 +0100

    Update NEWS for 1.8.8.1
    
    Release notes for the 1.8.8.1 point release
    
    Change-Id: I5c1912439464f64a298739f9ba3e55397e86d29a
    Reviewed-on: https://gerrit.openafs.org/14852
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b927414ffc8a14015e663a24245287b093ee77a8
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Nov 16 10:55:30 2021 -0700

    LINUX-5.16: Use linux/stdarg.h if available
    
    Global use of the compiler option '-isystem' was removed from the top
    level Makefile with Linux commit ('isystem: delete global -isystem
    compile option' 04e85bbf7). This results with an error due to not
    finding "stdarg.h" when building the openafs kernel module.
    
     .../src/rx/rx_kcommon.h:143:12: fatal error: stdarg.h: No such file or
                                     directory
       143 | #  include "stdarg.h"
           |            ^~~~~~~~~~
    
    Linux-5.15, introduced a copy of stdarg.h as 'linux/stdarg.h' in commit
    ('isystem: ship and use stdarg.h' c0891ac15)
    
    Add a test for the linux/stdarg.h include file and if available, use
    "linux/stdarg.h" instead of "stdarg.h" within the Linux kernel module.
    
    Reviewed-on: https://gerrit.openafs.org/14844
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3daa6e97330d23ae46c4389e4041c61c1a1d76d9)
    
    Change-Id: I6347d09b3ffc73e3524c83830e2f2bbd2958121f
    Reviewed-on: https://gerrit.openafs.org/14851
    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: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1935c63a776620eb7d2173a11cac039223115a19
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Nov 12 14:42:57 2021 -0700

    Linux 5.15: Convert osi_Msg macro to a function
    
    With Linux 5.15-prerc1 printk is defined as a macro instead of a
    function ("printk: Userspace format indexing support" 33701557)
    
    This change is causing a build failure:
    
     .../src/rx/rx_kernel.h:62:18: error: ‘printk’ undeclared (first use in
       this function); did you mean ‘_printk’?
       62 | # define osi_Msg printk)(
          |                  ^~~~~~
    
    The definition and use of the osi_Msg and osi_VMsg macros are
    unconventional and the C preprocessor is not handling the macro
    expansion when printk is itself a macro.
    
       #define osi_Msg printk)(
       ...
       (osi_Msg "%s", x);
    
    Change osi_Msg to a function, and simply replace osi_VMsg with vprintf
    since osi_VMsg is only used at one location within user space code.
    
    osi_Msg is implemented in 2 locations, in rx_kcommon for kernel space
    and in rx_user for userspace.
    
    Note: The unconventional definitions of osi_Msg/osi_VMsg was historical
    and due to older compilers not supporting variadic macros.  All of
    the currently support platforms should now support variadic functions.
    
    Reviewed-on: https://gerrit.openafs.org/14791
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 22876c8b88f8e5e92f08b230e5e1959499f0c406)
    
    Change-Id: I48a67b2fe79b45403414bb7d962c29c9be07262e
    Reviewed-on: https://gerrit.openafs.org/14831
    Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
    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: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2b326cd96d6ee5140a6ca7e408d1056137edfef9
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon Sep 16 01:37:33 2019 -0400

    SOLARIS: add autoconfig support for Studio 12.6
    
    Add the canonical install path for Studio 12.6 to the autoconfig test.
    
    Reviewed-on: https://gerrit.openafs.org/13867
    Tested-by: Mark Vitale <mvitale@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 fe6798d0d9e4df006ef96612b5c6e07fcc757b7e)
    
    Change-Id: Iad5a43eb22c8a76af6ce7e73d77de913d3c2d8e0
    Reviewed-on: https://gerrit.openafs.org/14841
    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>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3f33dc825ca9bf475547800d6ab0f72d75e98fb1
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Oct 7 11:15:58 2021 -0600

    LINUX 5.14: explicitly set set_page_dirty to default
    
    Linux 5.14 commit: 'mm: require ->set_page_dirty to be explicitly wired
    up' (0af573780b0b13) removed calling __set_page_dirty_buffers when the
    address_space_operations structure member set_page_dirty was NULL.
    
    A kernel RIP error can occur when the set_page_dirty operation is
    requested. (Reproducible by running 'iozone -B -a')
    
    Update the definition for afs_file_aops to explicitly set the
    'set_page_dirty' member to '__set_page_dirty_buffers'.
    
    There are no functional changes, since this commit is using the same
    function that the Linux kernel was using if set_page_dirty had been
    NULL.
    
    Problem originally reported by "Andrej Filipcic"
    <andrej.filipcic@ijs.si> in the openafs-info mailing list.  The Linux
    5.14 commit causing the openafs failure was identified by "Michael Laß"
    <lass@mail.upb.de> also on in the openafs-info mailing list.
    
    Note: The declaration for the function '__set_page_dirty_buffers' was
    moved from linux/mm.h into linux/buffer_head.h in Linux 2.6.19.  Since
    this is close to the minimum supported Linux version 2.6.18, we are not
    introducing an additional autoconf test to determine which header file
    the declaration for __set_page_dirty_buffers resides in.
    
    Reviewed-on: https://gerrit.openafs.org/14826
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Michael Laß <lass@mail.uni-paderborn.de>
    Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
    Tested-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Ralf Brunckhorst <rbrunckhorst@sinenomine.net>
    Tested-by: Ralf Brunckhorst <rbrunckhorst@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ba485a13e965909b63b25103fdf810de381e4977)
    
    Change-Id: Iae61573e5ccf9458646eba4403322536fd86f2bf
    Reviewed-on: https://gerrit.openafs.org/14830
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 284850b2f7ce2ca6ebdcb8918acd3ca02ae2c98b
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Nov 2 13:11:49 2020 -0600

    rx: Reorganize LWP rxi_Sendmsg to use 'goto error'
    
    Our LWP version of rxi_Sendmsg can allocate an fd_set, but we don't
    free the fd_set if sendmsg() returns certain errors afterwards.
    
    To make sure we go through the same cleanup code for the different
    possible error code paths, reorganize the function to go through a
    'goto error'-style destructor. This also makes our return codes a bit
    more consistent; we should always return -errno now for errors.
    
    Reviewed-on: https://gerrit.openafs.org/14422
    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 7239565b0fea8504deebc5bd43c4fa1ea80fcb17)
    
    Change-Id: I7291ea5f339f26c5c1a64b65893e2cb33ebfe623
    Reviewed-on: https://gerrit.openafs.org/14825
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 40e322e73b3abb6ecde322da80afc75a5c941b8c
Author: Andrew Deason <adeason@dson.org>
Date:   Sat Apr 25 17:20:54 2020 -0500

    rx: Indent ifdef maze in rx_kernel.h
    
    Change-Id: I3a10206234496b9de6f7ddeafebdee8ab10e5546
    Reviewed-on: https://gerrit.openafs.org/14161
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 70f3ac5d04a02470366a980224fdf8fadb31b463)
    Reviewed-on: https://gerrit.openafs.org/14811
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7dba3a2059cba3a85f120843ec8dba196df6f160
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Fri Sep 25 09:22:16 2020 -0700

    FBSD: avoid vrefl()
    
    Commit 20dc2832268eb (correctly) introduced changes so that we
    avoid interacting with vnodes marked as VI_DOOMED to the extent
    possible, but in doing so inadvertendly used the vrefl() KPI that
    was only introduced in FreeBSD 11.0.
    
    Rewrite the relevant logic to use the older vref() KPI, at the cost
    of a few more unlock/locks, in order to have a single codepath that
    works on all supported FreeBSD versions.
    
    Reviewed-on: https://gerrit.openafs.org/14373
    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 81ea654494f5c90f67eb54adbb722a95e0d11d82)
    
    Change-Id: Ia48380bb7498fcf5d0b6b68fe153d4459612a3b6
    Reviewed-on: https://gerrit.openafs.org/14795
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 66fee093ad98d9b0025b24110e13533fb5c14357
Author: Andrew Deason <adeason@dson.org>
Date:   Sun Nov 24 22:36:17 2019 -0600

    FBSD: Ignore VI_DOOMED vnodes
    
    Currently on FreeBSD, osi_TryEvictVCache calls vgone() for our vnode
    after checking if the given vcache is in use. vgone() then calls our
    VOP_RECLAIM operation, which calls afs_vop_reclaim, which calls
    afs_FlushVCache to finally actually flush the vcache.
    
    The current approach has at least the following major issues:
    
    - In afs_vop_reclaim, we return success even if afs_FlushVCache()
      fails. This allows FreeBSD to reuse the vnode for another file, but
      the vnode is still being referenced by our vcache, which is
      referenced by the global VLRU and various other structures. This
      causes all kinds of weird errors, since we try to use the underlying
      vnode for different files.
    
    - After the relevant checks in osi_TryEvictVCache are done, another
      thread can acquire a new reference to our vcache (this can happen
      while vgone() is running up until the vnode is locked). This new
      reference will cause afs_FlushVCache to fail.
    
    - Our afs_vop_reclaim callback is called while the vnode is locked,
      and can acquire afs_xvcache. Other code locks the vnode while
      afs_xvcache is already held (such as afs_PutVCache -> vrele). This
      can lead to deadlocks if two threads try to run these codepaths for
      the same vnode at the same time.
    
    - afs_vop_reclaim optionally acquires afs_xvcache based on the return
      value of CheckLock(&afs_xvcache). However, CheckLock just returns if
      that lock is locked by anyone, not if the current thread holds the
      lock. This can result in the rest of the function running without
      afs_xvcache actually being held if we drop AFS_GLOCK at any point.
    
    - osi_TryEvictVCache() tries to vn_lock() the target vnode, but we may
      already have another vnode locked in the current thread. If the
      vnode we're trying to evict is a descendant of a vnode we already
      have locked, this can deadlock.
    
    To fix these issues, make some changes to how our vcache management
    works on FreeBSD:
    
    - Do not allow anyone to hold a new reference on a VI_DOOMED vnode.
      We do this by checking for VI_DOOMED in osi_vnhold, and returning an
      error if VI_DOOMED is set.
    
    - In afs_vop_reclaim, panic if afs_FlushVCache fails. With the new
      VI_DOOMED check, afs_FlushVCache show now never fail; and if it
      somehow does, panic'ing immediately is better than corrupting
      various structures and panic'ing later on.
    
    - Move around some of the relevant locking in afs_vop_reclaim to fix
      the lock-related issues.
    
    - In osi_TryEvictVCache, don't wait for the vnode lock (LK_NOWAIT);
      treat the vnode as "in use" if we can't immediately obtain the lock.
    
    Thanks to tcreech@tcreech.com and kaduk@mit.edu for insight and help
    investigating the relevant issues.
    
    FIXES 135041
    
    Reviewed-on: https://gerrit.openafs.org/13972
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 20dc2832268eb81d40e798da0d424c98cf26062c)
    
    Change-Id: I91e464ce2fa90d7baf593c0b813f52f1fc45b481
    Reviewed-on: https://gerrit.openafs.org/14794
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 33b672918f1c282c4d74934e132e41357c9a4fdd
Author: Andrew Deason <adeason@dson.org>
Date:   Mon Nov 18 23:17:12 2019 -0600

    afs: Refactor osi_vnhold/AFS_FAST_HOLD
    
    Make a few changes to osi_vnhold and AFS_FAST_HOLD:
    
    - Currently, the second argument of osi_vnhold ("retry") is never used
      by any implementation. Get rid of it.
    
    - AFS_FAST_HOLD() is the same as osi_vnhold(). Get rid of
      AFS_FAST_HOLD, and just have all callers use osi_vnhold instead.
    
    - Allow osi_vnhold to return an error, and adjust callers to handle
      it.
    
    - Change osi_vnhold to be a real function, instead of a macro, to make
      nontrivial implementations less cumbersome.
    
    Most platforms never return an error from osi_vnhold(), so the added
    code paths to check the return value of osi_vnhold() will not trigger.
    However, this lets us add future commits that do make osi_vnhold()
    return an error.
    
    Reviewed-on: https://gerrit.openafs.org/13971
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 13e44b2b200cd99d0df4e03cf6413d3a6915783f)
    
    Change-Id: Ia3e1c4e45a870cd095f90adc66880eb524a10c1f
    Reviewed-on: https://gerrit.openafs.org/14793
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 981ed6c25c7640783ffbfd7591c0dfadbc4d0f42
Author: Andrew Deason <adeason@dson.org>
Date:   Tue Nov 26 23:39:24 2019 -0600

    FBSD: Avoid holding AFS_GLOCK during vinvalbuf
    
    Currently we call vinvalbuf(9) in a few places while holding
    AFS_GLOCK, but AFS_GLOCK is a non-sleepable lock (struct mtx), and
    vinvalbuf can sleep. This can trigger a panic in some rare conditions,
    with the message:
    
        Sleeping thread (tid 100179, pid 95481) owns a non-sleepable lock
    
    To avoid this, drop AFS_GLOCK around a few places that call
    vinvalbuf().
    
    Reviewed-on: https://gerrit.openafs.org/13970
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 61993cf45a648906abb865756d5a98d9c2d7cc40)
    
    Change-Id: I1b4d6d7d9d4cd54091cfd8e168a928c08cb643e5
    Reviewed-on: https://gerrit.openafs.org/14792
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f3ce4d55ff8c87d2aab521b501d97f909f1a94d5
Author: Andrew Deason <adeason@dson.org>
Date:   Sat Dec 21 18:34:20 2019 -0600

    FBSD: Use CK_STAILQ_FOREACH for ifaces on FBSD 12
    
    FreeBSD 12 changed how network interfaces and network addresses are
    linked together; we're supposed to use CK_STAILQ_FOREACH to traverse
    them now, instead of TAILQ_FOREACH. To try to keep this change
    simpler, introduce a new macro, AFS_FBSD_NET_FOREACH, which picks the
    right macro to use.
    
    Based on a commit by tcreech@tcreech.com.
    
    Reviewed-on: https://gerrit.openafs.org/13999
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 7c89322c45605c90c8ce27a77695a1c291f0def4)
    
    Change-Id: I1530213a447ecf09dde47987fdd7b3df489dc490
    Reviewed-on: https://gerrit.openafs.org/14781
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 20b9f245a1e11377b30db36a2fd2622fd14e7004
Author: Tim Creech <tcreech@tcreech.com>
Date:   Sat Dec 21 18:22:40 2019 -0600

    FBSD: Add proper locks when traversing net ifaces
    
    When traversing the list of network interfaces, or the list of
    addresses for a network interface, we're supposed to lock the relevant
    resource with IFNET_RLOCK, if_addr_rlock, or IN_IFADDR_RLOCK. Add
    these locks around our code that examines network interfaces, to
    avoid issues if the interface or address list changes while we're
    traversing them.
    
    While we're doing this, move around some "AFS_DARWIN_ENV ||
    AFS_FBSD_ENV" ifdefs, since these were getting a bit hard to read.
    This commit adds some duplicated code, but the result should be easier
    to follow.
    
    Also for FreeBSD 12, we must be in NET_EPOCH_ENTER when calling
    ifa_ifwithnet/rx_ifaddr_withnet (it panics if we don't, with
    INVARIANTS). Add the needed NET_EPOCH_ENTER/EXIT calls, but do so a
    bit higher up the call stack, since the returned structures are
    potentially no longer valid after we NET_EPOCH_EXIT. Since this means
    we're calling these in a few places in libafs, create a couple of rx
    abstractions (RX_NET_EPOCH_ENTER) to handle the relevant ifdefs.
    
    [adeason@dson.org: Various adjustments to locking calls; splitting up
    DARWIN/FBSD ifdefs.]
    
    Reviewed-on: https://gerrit.openafs.org/13998
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 9e98d61ff41709cee8d484be1ecd638a18e2ce0f)
    
    Change-Id: I240d03d892107179f07acf5d76aa49371ef0bec4
    Reviewed-on: https://gerrit.openafs.org/14780
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9b655ef47b75118bd092131fcf5e195e806c0858
Author: Andrew Deason <adeason@dson.org>
Date:   Fri Dec 20 21:02:45 2019 -0600

    vol: Avoid building devname.c on AFS_NAMEI_ENV
    
    Everything in devname.c is for the inode vol backend, so skip building
    it when AFS_NAMEI_ENV is defined.
    
    While we're doing this, alter the #ifdefs inside this file to assume
    that we're not on XBSD, DARWIN, or LINUX, since those platforms are
    all namei-only.
    
    Reviewed-on: https://gerrit.openafs.org/13995
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 80afdc2adabb098394e1b2178ba301964868befe)
    
    Change-Id: I54a7cc4f845283ff15f7b91d5d3523a1df42c3af
    Reviewed-on: https://gerrit.openafs.org/14788
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 259385e6b092fff51682a1d7ef26b311c2a7198a
Author: Andrew Deason <adeason@dson.org>
Date:   Fri Dec 20 21:01:13 2019 -0600

    vol: Indent ifdef maze in devname.c
    
    Reviewed-on: https://gerrit.openafs.org/13994
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 99eedfdb1659dd48d12542ad063d4711d401e153)
    
    Change-Id: I6db316d3557fb8165b11afb9089fa4c3cded070b
    Reviewed-on: https://gerrit.openafs.org/14787
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 65314bc0533810b33dd77f1da23c6420bf03b108
Author: Tim Creech <tcreech@tcreech.com>
Date:   Thu Aug 29 21:35:36 2019 -0400

    FBSD: Accommodate 12.0's 64-bit inodes
    
    In FreeBSD 12 (see: https://reviews.freebsd.org/rS318736), the layout
    of struct dirent changed to allow for 64-bit inodes and a few other
    changes. Update our struct min_direct to accommodate, to allow our
    readdir() results to be accurate. Without this, readdir() can yield
    garbage entries, due to the mismatch in the structure definitions.
    
    Reviewed-on: https://gerrit.openafs.org/13854
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 14cbd02b8a1a4f1d3c30dd4fb2864d35f39a95eb)
    
    Change-Id: I5218fdf315aac71a7cdf488879b88d476f97f2d3
    Reviewed-on: https://gerrit.openafs.org/14786
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c7f45c4d4ecef9298cab9e40fdd7e5a86b4363d5
Author: Tim Creech <tcreech@tcreech.com>
Date:   Thu Aug 29 22:12:41 2019 -0400

    FBSD: Use VM_CNT_INC/VM_CNT_ADD on FreeBSD 12
    
    r317061 changed where v_vnodein &c are stored. Use the new
    VM_CNT_INC/VM_CNT_ADD macros when available to accommodate.
    
    Reviewed-on: https://gerrit.openafs.org/13859
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e50e5ede55497b0c02647d21905f4134919fbf05)
    
    Change-Id: I099fbfc91640c411ac582141a926e0eae7ce80d9
    Reviewed-on: https://gerrit.openafs.org/14785
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 59f763ccc0f0e2363af0c743b2306c105d682f62
Author: Tim Creech <tcreech@tcreech.com>
Date:   Thu Aug 29 22:13:20 2019 -0400

    FBSD: Handle missing LINK_MAX
    
    LINK_MAX was removed in r327598. When we don't have a LINK_MAX, just
    use its value from before it was removed (32767).
    
    Reviewed-on: https://gerrit.openafs.org/13860
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0066f4e9f27fedc4cf4df52eaf10d35ae5c7ad6e)
    
    Change-Id: I9e91c4d892bc6b276065d34bc7220a240d6b6fcd
    Reviewed-on: https://gerrit.openafs.org/14784
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ca7b6324fec6ad54ea7e4a1a1f716bdeeb994a1c
Author: Tim Creech <tcreech@tcreech.com>
Date:   Thu Aug 29 21:55:05 2019 -0400

    FBSD: Use syscall "helper" functions
    
    syscall_register/syscall_deregister were effectively removed in
    r329647. Use syscall_helper_register/syscall_helper_unregister
    instead, which have existed since r205321 in FreeBSD 9.
    
    Reviewed-on: https://gerrit.openafs.org/13858
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 2add334454019b4a8fd979fb16da686cf93b56c6)
    
    Change-Id: I68037c7fc8e5a1b399bd49ff7bcccacdfd1a7643
    Reviewed-on: https://gerrit.openafs.org/14783
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7159be738388c6e8f3239539aca81c861ad9f533
Author: Andrew Deason <adeason@dson.org>
Date:   Sun Dec 1 15:27:01 2019 -0600

    FBSD: Remove support for 8.x and 9.x
    
    According to <https://www.freebsd.org/security/unsupported.html>,
    FreeBSD 8.x EoL was on August 1, 2015, and FreeBSD 9.x EoL was on
    December 31, 2016. Remove our support for these versions, since they
    haven't been supported by FreeBSD itself for a while.
    
    FreeBSD 10.x EoL was on October 31, 2018, which has passed, but was
    less than a year ago. So keep 10.x in for now.
    
    Adjust our preprocessor checks accordingly:
    
    - In FBSD-specific dirs, assume AFS_FBSD100_ENV and lower is always
      true. Assume __FreeBSD_version is always at least 1000000.
    
    - In non-FBSD dirs, convert AFS_FBSD100_ENV and lower to AFS_FBSD_ENV.
    
    Reviewed-on: https://gerrit.openafs.org/13842
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit a4e9365fff2b0e3daf7e9cf2b40e6027b7dd3a15)
    
    Change-Id: If92991dead88bf8d18b837ef4661731c7fc2edbb
    Reviewed-on: https://gerrit.openafs.org/14782
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a5b8d15925bc73b5cd1ee45f26f3ca302d9e075b
Author: Tim Creech <tcreech@tcreech.com>
Date:   Thu Aug 29 21:40:26 2019 -0400

    FBSD: Handle malloc/free changes in FBSD 12
    
    FreeBSD 12 (r328417) removed the deprecated compatibility macros
    MALLOC and FREE. Convert our users to just use the normal malloc and
    free, so we can build.
    
    FreeBSD 12 (r334545) also changed malloc() into a macro, which breaks
    our own malloc macro in our hcrypto config.h. To fix this, just undef
    malloc, if it's already a macro.
    
    Reviewed-on: https://gerrit.openafs.org/13856
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3bc541743b09f408364a946139c524d53056d40a)
    
    Change-Id: I3d2f98dd635480a2eea4e0cdad9c9bb308475695
    Reviewed-on: https://gerrit.openafs.org/14773
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Tim Creech <tcreech@tcreech.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 29f30ed16c6db544f020142c11c4296227eebf99
Author: Jeffrey Altman <jaltman@auristor.com>
Date:   Fri Oct 2 19:51:06 2020 -0400

    rx: compare RX_ACK_TYPE_ACK as a bit-field
    
    The rx_ackPacket.acks array (the SACK table) consists of up to 255
    octets.  Each octet stores either the value zero (RX_ACK_TYPE_NACK)
    or one (RX_ACK_TYPE_ACK).  Effectively only bit-zero of each octet
    is used.
    
    The rx_ackPacket.acks array cannot be enlarged but one possible
    method of encoding the ACK/NACK state for packets when the
    window size is greater than 255 is to use bits 1-7 of each
    octet.
    
    This change alters the test for ACK vs NACK to be a bit comparison
    instead of a equality comparison.  This change permits RX to be
    compatible with any future use of bits 1-7.
    
    No peer that treats the SACK table as bytes can ever send more
    than 255 packets regardless of the advertised receive window.
    Therefore, existing peers will never receive a SACK table with
    more than 255 packets worth of bits.
    
    Reviewed-on: https://gerrit.openafs.org/14465
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 7739d1e967177686e91a6ea86c73b404515a1c0d)
    
    Change-Id: I59c098414f309bac283017823dff6d491d895db8
    Reviewed-on: https://gerrit.openafs.org/14740
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
