commit 46a364bef04e8f5455f47fe7e330cf9077faf87a
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Sat Jun 20 07:24:01 2020 +0200

    Make OpenAFS 1.8.6
    
    Update version strings and NEWS for the 1.8.6 release.
    
    Change-Id: I0d4a17ce6b575c845bd13d9509788eb5cd8631e1
    Reviewed-on: https://gerrit.openafs.org/14253
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7cd24908de4b65d9972bd3dca85b049f495bb1bd
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri May 22 17:25:14 2020 +0200

    Make OpenAFS 1.8.6pre3
    
    Update version strings for the third 1.8.6 prerelease.
    
    Change-Id: I02a49de79f03e05fbd15b1e0701d2ae392501f3c
    Reviewed-on: https://gerrit.openafs.org/14225
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4ad34ee8cabd922d0ea8621ae919f40da6472326
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri May 22 17:22:17 2020 +0200

    Update NEWS for OpenAFS 1.8.6pre3
    
    Release notes for the third 1.8.6 prerelease
    
    Change-Id: I2dcebac365d75102b5008daf55ad6d420ef62f2f
    Reviewed-on: https://gerrit.openafs.org/14224
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>

commit b7c5502516333d41aa1fa046c918dfece722f77c
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri May 15 10:40:20 2020 -0600

    LINUX-5.7: replace __pagevec_lru_add with lru_cache_add_file
    
    The Linux function __pagevec_lru_add is no longer exported in Linux
    5.7-rc1 commit bde07cfc65da5fe6c63fe23f035f5ccc0ffd89e0
    "mm/swap.c: not necessary to export __pagevec_lru_add()".
    
    As a replacement, the Linux function lru_cache_add_file can be used for
    adding a page to the lru cache.  The internal processing of
    lru_cache_add_file manages its own internal pagevec and performs the
    following:
         get_page(...)
         if(!pagevec_add(...))
            __pagevec_lru_add_file(...)
    
    Introduce an autoconf test for lru_cache_add_file and replace the calls
    associated with __pagevec_lru_add with lru_cache_add_file.
    
    NOTE: see Linux commit a0b8cab3b9b2efadabdcff264c450ca515e2619c
    "mm: remove lru parameter from __pagevec_lru_add and remove parts of
    pagevec API" as a reference for this change.
    
    The lru_cache_add_file was introduced in Linux 2.6.28, therefore this
    change affects systems with Linux 2.6.28 kernels and later.
    
    Reviewed-on: https://gerrit.openafs.org/14159
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 17b42fe67c18fab0003fb712092d36f06c93f2eb)
    
    Change-Id: I206925d1659164a54e0c3a41b82a1733cb656b41
    Reviewed-on: https://gerrit.openafs.org/14210
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Tested-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 81581b362af86b4f636d8e411e9cb8f1cf86f723
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri May 15 10:39:53 2020 -0600

    libafs: Abstract the Linux lru cache interface
    
    Define static functions afs_lru_cache_init, afs_lru_cache_add and
    afs_lru_cache_finalize to handle interfacing with Linux's lru
    facilities.
    
    This change's primary purpose is to isolate the preprocessor
    conditionals associated with the details of the system lru interfaces to
    just these functions and to simplify the areas that utilize lru caching
    by removing the preprocessor conditionals.
    
    As Linux's lru facilities change, additional conditional code will be
    needed.
    
    Reviewed-on: https://gerrit.openafs.org/14167
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit dca95bcb7efdff38564dcff3e8f4189735f13b3a)
    
    Change-Id: I863bbc9bb578716c42fdf34672ec8ad85f05ea31
    Reviewed-on: https://gerrit.openafs.org/14209
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 8db1ef3eee67e40643eaf017a62d7f2c23473e9b
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon May 18 17:20:26 2020 -0400

    LINUX 5.6: define osi_timeval32_t for 32-bit Linux
    
    For 32-bit Linux (e.g., arch i586), AFS_LINUX_64BIT_KERNEL is not
    defined, so osi_timeval32_t is defined as a typedef of the native
    'timeval'.  However, as of commit
    c766d1472c70d25ad475cf56042af1652e792b23 "y2038: hide
    timeval/timespec/itimerval/itimerspec types" (Linux 5.6), the native
    timeval struct is no longer available.  On such a kernel, the OpenAFS
    build will fail because osi_timeval32_t is not properly defined.
    
    Instead, add new conditionals to properly define osi_timeval32_t for
    this platform.
    
    Reviewed-on: https://gerrit.openafs.org/14216
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9a5790cfbb8e7b1a4a2e832911c71da49f604c20)
    
    Change-Id: I223d8407bf28e91ffb2669013c089053ae93feb3
    Reviewed-on: https://gerrit.openafs.org/14234
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c1abd1e48b2d5e679b91e43082c4e577ac6a70aa
Author: Yadavendra Yadav <yadayada@in.ibm.com>
Date:   Fri Dec 6 15:23:34 2019 +0530

    afs: Add ppc64le changes in osconf.m4 file.
    
    If swig package is installed on a ppc64le system, build fails for
    "libuafs" while running "shlib-build". "shlib-build" gets executed for
    builing ukernel.so and this is triggered if "LIBUAFS_BUILD_PERL" is not
    empty. Having "swig" package on system sets "LIBUAFS_BUILD_PERL" to
    'LIBUAFS_BUILD_PERL' value. The reason for build failure was inside
    "shlib-build", 'linker' was not set (it was empty). 'linker' value is
    set based on SHLIB_LINKER, which was not defined in  osconf.m4 if build
    system is ppc64le.
    
    To fix this add ppc64le_linux26 case in osconf.m4 file.
    
    Reviewed-on: https://gerrit.openafs.org/13980
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f9c716fca1becea5a41fbe86535759ef817c924d)
    
    Change-Id: I20a9b58e83166932f9b00370f27a146cf3343ff9
    Reviewed-on: https://gerrit.openafs.org/14104
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9a9e26acf742cf49e2a773ffbb3f4f62a334950c
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Mar 13 18:23:14 2020 +0100

    Make OpenAFS 1.8.6pre2
    
    Update version strings for the second 1.8.6 prerelease.
    
    Change-Id: Ic5e452a379dac906520040a451f84ca19fd158e1
    Reviewed-on: https://gerrit.openafs.org/14097
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 548b976600e19f3859ac77faa078ccca8abd6c1a
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Mar 13 18:19:45 2020 +0100

    Update NEWS for OpenAFS 1.8.6pre2
    
    Release notes for the second 1.8.6 prerelease
    
    Change-Id: I3abfbfacb68a134afafa73a9ac292f9ee776d9a2
    Reviewed-on: https://gerrit.openafs.org/14096
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 17d38e31e6f2e237a7fb4dfb46841060296310b6
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Mar 3 15:39:49 2020 -0700

    LINUX 5.6: define time_t and use timespec/timespec64
    
    The time_t type and the structure timeval were removed for use in kernel
    space code in Linux commits:
        412c53a680a97cb1ae2c0ab60230e193bee86387
            y2038: remove unused time32 interfaces
        c766d1472c70d25ad475cf56042af1652e792b23
            y2038: hide timeval/timespec/itimerval/itimerspec types
    
    Add an autoconf test for the time_t type.
    
    If time_t is missing, define the time_t type when building the kernel
    module.
    
    Change the vattr structure in LINUX/osi_vfs.h to use timespec/timespec64
    instead of the timeval structure.
    
    Conditionalize the definition of gettimeofday (needed by rand-fortuna.c) in
    crypto/hcrypto/kernel/config.h.  It is unused by the Linux kernel module
    and the function uses struct timeval that is no longer available.
    
    Reviewed-on: https://gerrit.openafs.org/14083
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 78049987aa3e84865e2e7e0f3dd3b54d66258e74)
    
    Change-Id: Iff80c161441356d19b5962956dd524792b7bf629
    Reviewed-on: https://gerrit.openafs.org/14095
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 355ea43f0d1b7feae1b3af58bc33af12838db7c3
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Mar 2 16:17:55 2020 -0600

    LINUX: Avoid building rand-fortuna-kernel.o
    
    Currently, we build rand-fortuna-kernel.o for libafs on all platforms,
    even though we only use the fortuna RNG on AIX, DragonFlyBSD, HP-UX,
    and Irix. Everywhere else, our RAND_bytes() in
    src/crypto/hcrypto/kernel/rand.c uses osi_readRandom() instead of
    going through heimdal.
    
    Building rand-fortuna.c causes occasional build headaches for the
    kernel on Linux (see cc7f942, "LINUX: Disable kernel fortuna large
    frame errors"). The most recent instance of this is that Linux 5.6
    removes the definition for struct timeval, which is referenced in
    rand-fortuna.c.
    
    The Linux kernel is constantly changing, and so trying to keep
    rand-fortuna.c building on Linux seems like a waste of ongoing effort.
    So, just stop building rand-fortuna-kernel.o on Linux. The original
    intent of building this file on all platforms was to avoid bitrot, so
    still keep building rand-fortuna-kernel.o on all other platforms even
    when it's not used; just avoid it on Linux specifically, the platform
    that requires the most effort.
    
    To accomplish this, move rand-fortuna-kernel.o from AFSAOBJS to
    AFS_OS_OBJS, and remove it from the Linux-only AFSPAGOBJS.
    
    [1.8.x: The 1.8 branch does not contain the commits that introduced
    -Wno-error=frame-larger-than= (cc7f942a and 54150f38), so we can skip
    removing the references to -Wno-error=frame-larger-than=.]
    
    Reviewed-on: https://gerrit.openafs.org/14084
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit b8088b49dec23da19406fcb014e7100695dc8322)
    
    Change-Id: Iad0d1af5ffd79c576ddbc253b0037b9772187350
    Reviewed-on: https://gerrit.openafs.org/14094
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Tested-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1045bcc97941e2788fb1d625b38f7727dd5a6813
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Sat Jan 25 20:32:26 2020 +0100

    Make OpenAFS 1.8.6pre1
    
    Update version strings for the first 1.8.6 prerelease.
    
    Change-Id: I8e63f8532970a8b0f8d3a39d93d9ae07e83f9df7
    Reviewed-on: https://gerrit.openafs.org/14047
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1f36d0b6ccb53c17da09beac6f8f09b52dc5e77d
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Mon Feb 17 20:49:02 2020 +0100

    Update NEWS for OpenAFS 1.8.6pre1
    
    Release notes for the first 1.8.6 prerelease
    
    Change-Id: I22912d4526d079c0819e156a4e6fe1d38fdeee35
    Reviewed-on: https://gerrit.openafs.org/14070
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 34f1689b7288688550119638ee9959e453fde414
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Feb 14 11:50:03 2020 -0700

    LINUX 5.6: use struct proc_ops for proc_create
    
    The Linux commit d56c0d45f0e27f814e87a1676b6bdccccbc252e9
    (proc: decouple proc from VFS with "struct proc_ops") was merged into
    Linux 5.6rc1.  The commit replaces the 'file_operations' parameter for
    proc_create with a new structure 'proc_ops'.
    
    Conditionally initialize and use proc_ops structures instead of
    file_operations structures for calls to proc_create.
    
    Notes:
     * proc_ops.proc_ioctl is equivalent to file_operations.unlocked_ioctl
     * The macros HAVE_UNLOCKED_IOCTL and HAVE_COMPAT_IOCTL are both
       hardcoded to 1 in linux's fs.h
     * proc_ops.compat_ioctl is conditional on Linux's CONFIG_COMPAT macro
       which is a separate test from the HAVE_COMPAT_IOCTL macro
    
    Reviewed-on: https://gerrit.openafs.org/14063
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 1626986bd6d70c526376cf7cedfd3ebbf6d3588a)
    
    Change-Id: Icaab45f4542131e636f2c60e3efce86c8afc57be
    Reviewed-on: https://gerrit.openafs.org/14069
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 19593b845334e131388b17aab8c588ee6ea1646d
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Fri Feb 7 14:58:56 2020 -0300

    macos: add anchors to synthetic.conf grep pattern
    
    The grep pattern that checks if /etc/synthetic.conf already has an entry
    for afs is intended to check if this file holds a single column entry
    named afs. Unfortunately, the current version does not completely
    enforce this restriction. To fix this problem, add anchors to the grep
    pattern in question.
    
    Reviewed-on: https://gerrit.openafs.org/14062
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 6d6a28720f4eae4652f2628fdfcc30983916f39d)
    
    Change-Id: Iea837157a9eb5c066d577c705c445e10e244757d
    Reviewed-on: https://gerrit.openafs.org/14068
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 92831c22e8dca127ad98e2965e8707e91d9b9d19
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Sat Dec 21 19:56:41 2019 -0800

    macos: add entry for afs into synthetic.conf
    
    The root mount point is read-only as of macOS 10.15. As a result, /afs
    cannot be created at this location. To workaround this restriction,
    macOS 10.15 provides an alternative way to create mount points at the
    root. To make it possible, an entry for the mount point in question must
    be added to /etc/synthetic.conf. The synthetic entities described in
    this file are not physically present on the disk. Instead, they are
    synthesized by the kernel during system boot.
    
    This commit adds an entry for afs into the file mentioned above. Knowing
    that this change only takes effect after reboot, also provide directions
    to the user during the installation process.
    
    Reviewed-on: https://gerrit.openafs.org/13928
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit daf6616aab6732d6b417c15f6f401731ef8e44b5)
    
    Change-Id: If990608d968061ac8ab0391dbd83d1c6a87d32a6
    Reviewed-on: https://gerrit.openafs.org/14037
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ce96e36c0067c9e620579cc305ae16189d066c15
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Sat Dec 21 19:11:57 2019 -0800

    macos: add script to notarize OpenAFS
    
    In order to integrate the notarization process into our existing build
    scripts, this patch introduces a script to automatically notarize the
    OpenAFS package.
    
    Reviewed-on: https://gerrit.openafs.org/13671
    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 0563642cc1cb750c69a6471005adf36fabb2b7e3)
    
    Change-Id: I50265b3305eb12db45371da1bf1982a6722c0018
    Reviewed-on: https://gerrit.openafs.org/14036
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 48520140344a05abf4fc18636a66e8dc67880a26
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Tue Nov 26 11:41:36 2019 -0800

    macos: prepare for notarization
    
    With the public release of macOS 10.14.5, all new and updated kernel
    extensions must be notarized by Apple. To be taken into consideration,
    all executables must be signed and the Hardened Runtime capability must
    be enabled.
    
    This patch adds the missing prerequisites mentioned above.
    
    Reviewed-on: https://gerrit.openafs.org/13670
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 63fd13bf9e6af21136007c9980816875ebea5f7c)
    
    Change-Id: If0c27732f667945f430fd2c5698e8f58a84e3bde
    Reviewed-on: https://gerrit.openafs.org/14035
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit cb6cf0b924b88fcbfb80fea4d832b50b77951692
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Fri Jun 28 00:40:55 2019 -0300

    macos: packaging support for MacOS X 10.15
    
    This commit introduces the new set of changes / files required to
    successfully create the dmg installer on OS X 10.15 "Catalina".
    
    Reviewed-on: https://gerrit.openafs.org/13669
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit c7864b73603842b8beaee03fcbb2426890205410)
    
    Change-Id: I0b6b0616f2f2413a466c60986957e6bc3e21cbb0
    Reviewed-on: https://gerrit.openafs.org/14034
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0e40f1e25f037cb283b3f91598e691f0a4c46f64
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Mon Nov 18 06:34:08 2019 -0800

    macos: add support for MacOS 10.15
    
    This commit introduces the new set of changes / files required to
    successfully build the OpenAFS source code on OS X 10.15 "Catalina".
    
    Reviewed-on: https://gerrit.openafs.org/13668
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 93815caabc92acc6edc62b72805b44d2e46748cf)
    
    Change-Id: Ia1fb98dd59d7b0ddad9c16c04b823623e07dd498
    Reviewed-on: https://gerrit.openafs.org/14033
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 30edde16473566a855dd0d37d0c30c2ac3587ba5
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Dec 12 19:03:04 2019 -0800

    macos: upgrade *.xib files
    
    According to Xcode 11, the *.xib files updated by this commit use an
    older format that is potentially insecure when decoded. To fix this
    problem, Xcode automatically upgraded these files to the modern format.
    These changes are required to build OpenAFS on Catalina (Xcode 11).
    
    Reviewed-on: https://gerrit.openafs.org/13935
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d4302d42149988fa6d04d626967063dfa916c9fd)
    
    Change-Id: I1e29493a8431d4ad13ff36762f6112dd5309573c
    Reviewed-on: https://gerrit.openafs.org/14032
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b77092ceb0fb6ee06b0a7e5fdb22748ac1ed4ccc
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Nov 7 23:56:13 2019 -0300

    macos: tell the compiler the system include path
    
    In order to support multiple SDKs, macOS Catalina no longer has the
    /usr/include directory. As a result, the compiler needs to know where
    these headers can be found. To successfully build OpenAFS on OSX 10.15,
    set KROOT so the compiler knows the correct location of these headers.
    
    Reviewed-on: https://gerrit.openafs.org/13936
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 677b038814817defec9421e698ce67b44a7fd7d1)
    
    Change-Id: I2043c2bc6e745ca55faf68b77d791168bc57bb1d
    Reviewed-on: https://gerrit.openafs.org/14031
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c75d8b632c1d4f55901fa2023ed0edb0c713cf0a
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Nov 14 17:29:56 2019 -0300

    viced: add opt to allow admin writes on RO servers
    
    Add the new option -admin-write to allow write requests from superusers
    on file servers running in readonly mode (-readonly). This lets sites
    run fileservers in readonly mode for normal users, but allows members of
    the system:administrators group to modify content.
    
    Reviewed-on: https://gerrit.openafs.org/13707
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f5f8b9336919debc5c26c429b12a14b65e0b697c)
    
    Change-Id: Ia627b8c99767a875c1e8d1c69dcb45118df36937
    Reviewed-on: https://gerrit.openafs.org/14019
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2fe6510fb72e242f71c7882db7744f0ec3e91d52
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Nov 14 01:15:47 2019 -0300

    viced: prevent writes on readonly fileservers
    
    Currently, a fileserver can be initialized as readonly. In this mode,
    writes on this server should not be allowed. Unfortunately, updates on
    files stored by readonly fileservers are not completely prevented. In
    some situations, the check for RO server is omitted (e.g. if the user is
    the owner of the file to be updated). In other situations, the same
    check is redundant.
    
    To fix these problems, consolidate this check in one place.
    
    Reviewed-on: https://gerrit.openafs.org/13934
    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 0593017177edd5b3bc6609d9dfcce55f15bba3e9)
    
    Change-Id: I42034928d1f5e9342029121613ac8d716818c3ae
    Reviewed-on: https://gerrit.openafs.org/14018
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 08f4388e207af62f7c7ea68c10bd4e4ab5a9e049
Author: Andrew Deason <adeason@dson.org>
Date:   Sun Nov 17 20:58:15 2019 -0600

    afs: Ensure CDirty is set during afs_write loop
    
    Currently, in afs_write(), we set CDirty on the given vcache, and then
    write the given data into various dcaches. When writing to a dcache,
    we call afs_DoPartialWrite, which may cause us to flush the dirty data
    to the fileserver and clear the CDirty bit.
    
    If we were given more than 1 chunk of data to write, we will then go
    through another iteration of the loop, writing more dirty data into
    dcaches, but CDirty will not be set. This can cause issues with, for
    example, afs_SimpleVStat() or afs_ProcessFS(), which use CDirty to
    determine whether or not to merge in FetchStatus info from the
    fileserver into our local cache. This can cause our local cache to
    incorrectly reflect the state of the file on the fileserver, instead
    of the state of the locally-modified file in our cache.
    
    A more detailed example is as follows. Consider a small C program that
    copies a file, fchmod()ing the destination before closing it:
    
        void
        do_copy(char *src_name, char *dest_name)
        {
            /* error checking elided */
            src_fd = open(src_name, O_RDONLY);
            dest_fd = open(dest_name, O_WRONLY|O_CREAT|O_TRUNC, 0755);
            fstat(src_fd, &st);
            src_buf = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, src_fd, 0);
            write(dest_fd, src_buf, st.st_size);
            munmap(src_buf, st.st_size);
            close(src_fd);
            fchmod(dest_fd, 0100644);
            close(dest_fd);
        }
    
    Currently, on FBSD, using this to copy a 7862648-byte file, using a
    smallish cache (10000 blocks) will cause the destination to appear to
    be truncated, because avc->f.m.Length will be incorrect, even though
    all of the relevant data was written to the fileserver.
    
    On most other platforms such as SOLARIS and LINUX, this is not a
    problem, since currently they only write one page of data at a time to
    afs_write(), and so they never hit multiple iterations of the while()
    loop inside afs_write().
    
    To fix this, just set CDirty on every iteration of the while() loop in
    afs_write(). In general, we need to set CDirty after calling
    afs_DoPartialStore() anywhere if the caller continues to write more
    data. But all callers already do this, except for this one instance in
    afs_write().
    
    Thanks to tcreech@tcreech.com for helping find occurrences of the
    relevant issue.
    
    FIXES 135041
    
    Reviewed-on: https://gerrit.openafs.org/13948
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 9d0854547522f7b2fb1bb7aa876fe9f901674747)
    
    Change-Id: Ie86313e9b9750bc6724bb6e18b7df8e010810023
    Reviewed-on: https://gerrit.openafs.org/13951
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b8cb5e995119656774844531b7400b8430aa6595
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Nov 4 20:03:43 2019 -0600

    afs: Avoid -1 error for vreadUIO/vwriteUIO
    
    Commit c6b61a45 (afs: Verify osi_UFSOpen worked) added various checks
    to return an error if a given osi_UFSOpen failed. However, two of
    these checks (in afs_UFSReadUIO and afs_UFSWriteUIO) result in us
    returning -1 on error, in functions that otherwise return errno codes
    (e.g. ENOSPC). An error code of -1 might get interpreted as
    RX_CALL_DEAD, which would be rather confusing, so use EIO as a generic
    error instead.
    
    Reviewed-on: https://gerrit.openafs.org/13931
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 360b9d5d71fb1de142ae4efd4660732476855a3f)
    
    Change-Id: I4c6773affe02cc7a3ca01cf25bea21c960d98e87
    Reviewed-on: https://gerrit.openafs.org/13938
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit aed48d8dda60288e7e84f6decf17af00abd3b4bf
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Mon Jul 22 15:20:24 2019 -0400

    vos: fix name availability check in vos rename
    
    The UV_RenameVolume() function first updates the volume name in the
    VLDB, then read-write volume header and backup volume header, and
    finally all of the read-only volume headers. If this function is
    interrupted or a remote site is not reachable, the names in some of the
    volume headers will be out of sync with name in the VLDB entry.
    
    The implementation of UV_RenameVolume() is idempotent, so can be safely
    called with the same name as in the volume's VLDB entry. This could be
    used to bring all the names in the volume headers in sync with the name
    in the VLDB.
    
    Unfortunately, due to the check of the -newname parameter, vos
    rename will not invoke UV_RenameVolume() when the name in the VLDB has
    already been changed.  The vos rename command attempts to verify the
    desired name (-newname) is available before invoking UV_RenameVolume()
    by simply checking if a VLDB entry exists with that name, and
    incorrectly assumes when a VLDB entry exists with that name it is an
    entry for a different volume.
    
    Change the -newname check to allow vos rename to proceed when name has
    already been set in the VLDB entry of the volume being renamed. This
    allows admins to run vos rename command to complete a previously
    incomplete rename operation and bring the names in the volume headers in
    sync with the name in the VLDB entry.
    
    Note: Before this commit, administrators could workaround this vos
    rename limitation by renaming the volume twice, first to an unused
    volume name, then to the actual desired volume name.
    
    Remove the useless checks of the code1 return code after exit in
    the RenameVolume() function. These checks for code1 are never performed
    since the function exits early when the first VLDB_GetEntryByName()
    fails for any reason.
    
    Update the vos rename man page to show vos rename can be used to fix
    previously interrupted/failed rename. Also document the -oldname
    parameter accepts a numeric volume id to specify the volume to be
    renamed.
    
    Reviewed-on: https://gerrit.openafs.org/13720
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9238b1eb9ef02889855eaade76e5b7962e5f2f28)
    
    Change-Id: I8b03e4211c5d306f55779130c8461b14bc4913f0
    Reviewed-on: https://gerrit.openafs.org/14055
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 72fdc562088777393ea60f2be3478841104ff463
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jan 31 16:14:40 2020 -0700

    RedHat: Update makesrpm.pl to use @PACKAGE_VERSION@ instead of @VERSION@
    
    Commit 2f2c2ce62aa17ecac3651d64c1168af926f7458b
    'Remove automake autoconf vars' replaced the automake variable @VERSION@
    with the autoconf variable @PACKAGE_VERSION@. (Gerrit #13357)
    
    The RedHat openafs.spec.in is not processed using autoconf, but
    by 'makesrpm.pl', which was not updated to use @PACKAGE_VERSION@.
    
    Update makesprm.pl to use @PACKAGE_VERSION@ instead of @VERSION@
    
    Reviewed-on: https://gerrit.openafs.org/13887
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit b03f3e6101ff21a6f148c555c213c47678482a7b)
    
    Change-Id: I6bc27474b1b8dfa8b63806a4e0e996a00dd302e4
    Reviewed-on: https://gerrit.openafs.org/14050
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 246f17c6c32174d80643c61f3184ba82aa653e50
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Fri May 4 17:32:51 2018 -0400

    ubik: improve logging for database synchonizations
    
    As an aid for debugging database synchronization issues, ensure that the
    logging is consistent and unambiguous for both the client and server
    sides of DISK_GetFile and DISK_SendFile.  Add new error messages as
    required.
    
    In addition, rework the "recovery sending version to <IP>" message in
    urecovery_Interact.  This message is misleading because the new version
    database is only sent to a DB server if its version is not up to date.
    Instead, move this message into the version check block immediately
    below it.  Also reword it for clarity and promote its log level from 5
    to 0.  Finally, remove the now-superfluous "recovery stating local
    database" log message.
    
    Reviewed-on: https://gerrit.openafs.org/13079
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0e1c042615d1aeb919a22568cdd2b2ea42c677ba)
    
    Change-Id: I26e876e5bcd5adc004b985ea8c3f716cb6a72b5d
    Reviewed-on: https://gerrit.openafs.org/13908
    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: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 803e0bcaa063e23c24c70b10a3e7fe374e69e0f6
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Fri Mar 17 18:12:23 2017 -0400

    ubik: urecovery_AbortAll diagnostic msgs
    
    As a troubleshooting aid for developers, add a few counters and a log
    msg so we know when transactions are being aborted (if any) by
    urecovery_AbortAll.
    
    Reviewed-on: https://gerrit.openafs.org/12618
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    (cherry picked from commit eac22d3e46c72c0e2b82f35c5187d50b6fa136a2)
    
    Change-Id: Ia91bc1c5f041eccc9b974d4b195fed1a889252e7
    Reviewed-on: https://gerrit.openafs.org/13907
    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 584e3e5da080c185466f86d549776487d0e81559
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon May 8 21:11:27 2017 -0400

    ubik: log important messages at default log level
    
    Many important ubik messages (e.g., errors, warnings, sync state
    changes) are logged at log level 5 (-d 5) or higher.  Many sites are
    reluctant to run ubik servers at a logging level higher than the default
    due to the large number of extremely noisy informational messages at log
    level 5.  Therefore, many important log messages are never seen.
    
    Instead, issue critical errors, warnings, and other important messages
    at log level 0 so that they are always seen, even at the default logging
    level.
    
    In addition, disambiguate the two "I am no longer sync-site" messages by
    adding a unique reason text to each.
    
    Reviewed-on: https://gerrit.openafs.org/12617
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    (cherry picked from commit 8b0e312d043d435f0e55c6dc14f5446ffedc7ce4)
    
    Change-Id: I87425e78fb4f7fb1aa393b2f5b81ab34a71a38c4
    Reviewed-on: https://gerrit.openafs.org/13906
    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: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e29b1c453d280dcde3c2731599fc7a0f64e4dc10
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Jul 27 13:36:15 2018 -0500

    ubik: Save errno before logging
    
    The value of errno can change after a syscall, and ViceLog may issue
    syscalls (such as write()). So, make sure we save errno here before
    calling ViceLog().
    
    Issue spotted by kaduk@mit.edu.
    
    Reviewed-on: https://gerrit.openafs.org/13263
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 9ff5f8f7601cc9761cc6a4ef0e8b7c8c2c8dddb5)
    
    Change-Id: I4f41ca758574e0d58659788467372af71a5f75f2
    Reviewed-on: https://gerrit.openafs.org/13898
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 518a42eea03b372c92794602a15b89cd5ab78668
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Sat Aug 11 13:17:28 2018 -0400

    vol: remove empty directories left by vos zap -force
    
    The vos zap -force command does not remove the directories associated
    with the volume in question (AFS_NAMEI_ENV). When the vos zap -force
    command is executed, the volume server goes through the /vicep*/AFSIDat
    directories and removes the files associated with the volume id received
    as an argument. Unfortunately, the volume server does not remove the
    directories associated with this volume. As a result, empty directories
    are left behind.
    
    To fix this problem, remove the empty directories left behind when vos
    zap -force is executed.
    
    Reviewed-on: https://gerrit.openafs.org/12879
    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: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 892045a9803ed471986569705d9d727165ca7ecf)
    
    Change-Id: I18b727a561785443f488d60b967182e3ddb9064e
    Reviewed-on: https://gerrit.openafs.org/13897
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2bb9dc093b65210a33ffa3b21e6173bbe0452a0c
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 12:49:07 2019 -0600

    vol: check snprintf return values in namei_ops
    
    gcc8 is more aggressive about parsing format strings and computing bounds
    on the generated text from functions like snprintf.  In this case it seems best
    to detect cases of truncation and error out, rather than trying to increase
    stack buffer sizes or switch to asprintf.  These paths should be well-behaved
    since they are local to the fileserver, so this is mostly about appeasing the
    compiler's -Wformat-truncation checks to allow us to build with --enable-checking.
    
    Reviewed-on: https://gerrit.openafs.org/13463
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8632f23d6718a3cd621791e82d1cf6ead8690978)
    
    Change-Id: Ie8f9005ad9cf7cdfd3eb472e01a6fdbde5b7e57e
    Reviewed-on: https://gerrit.openafs.org/13732
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e849fbc4a8d86ef96c91a4011b1a57f4d7bf725c
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Tue May 31 09:08:08 2016 -0300

    venus: fix memory leak
    
    In GetPrefCmd, when we request server prefs from the kernel and our
    output buffer is not big enough, pioctl() will return E2BIG and we
    allocate more memory and try again. However, if the size of the output
    buffer reaches 16k bytes and this space is still not enough (or if
    pioctl fails and errno != E2BIG), we return without releasing the
    memory that was previously allocated.
    
    To fix this problem, free our output buffer when this happens.
    
    Reviewed-on: https://gerrit.openafs.org/12293
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 8ad4e15ffc883c9a99f9636d7d8a5ed0a2fcc26a)
    
    Change-Id: I62ceddc5284c94da205ec2351ab9ef970cd64c4a
    Reviewed-on: https://gerrit.openafs.org/13895
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit db0b199bdf4f0c16a90cd89a05f4d6112f215b1e
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 17:09:36 2019 -0600

    venus: appease gcc8's -Wformat-string
    
    Interestingly, even before this commit, the buffer size was larger
    than what the kernel would accept.  Since the kernel does its own
    length checking, it's simplest to just allow slightly larger requests
    here and have them fail later.
    
    Reviewed-on: https://gerrit.openafs.org/13471
    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 dff81f1b78fecc54f5af91f7d728925ffca62d2c)
    
    Change-Id: Ie19d887abebdd3603a04c06723f5cb750eb654f8
    Reviewed-on: https://gerrit.openafs.org/13740
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 388973d7e8a453f6a099afb671d10affb965500c
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu Dec 21 11:59:38 2017 -0500

    vol: avoid query for parent id when deleting disk header
    
    When a DAFS volume server removes a volume disk header file (V*.vol),
    the volume server invokes an fssync command to have the file server
    delete the Volume Group Cache (VGC) entry corresponding to the volume id
    and the parent id of the removed volume header.
    
    The volume parent id is unknown to the volume server when removing a
    volume disk header on behalf of a "vos zap -force" operation. In this
    case, the volume server issues a fssync query to attempt look up to the
    parent id from the file server's VGC.  If this fssync query fails for
    some reason, volume server is unable to delete the VGC entry for the
    deleted volume header. The volume server logs an error and vos zap
    reports a undocumented error code.
    
    One common way this can be encountered is to issue a "vos zap -force" on
    a file server that has just been restarted. In this case, the VGC may
    not be fully populated yet, so the volume server is not able to look up
    the parent id of the given volume.
    
    With this commit, relax the requirement for the parent id when deleting
    VGC entries. A placeholder of 0 is used to mean any parent id for the
    given volume id.
    
    This obviates the need to query for the parent id when performing a "vos
    zap -force", and allows the volume server to remove any VGC entries
    associated with the volume id being zapped.
    
    Reviewed-on: https://gerrit.openafs.org/12839
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 65b55bcc26f69f25c67518f672b34be73f3be370)
    
    Change-Id: I2e927d7b388c7be36a67e196a3acb70e58c9a661
    Reviewed-on: https://gerrit.openafs.org/13896
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5739775819b7c3970a977d57d6987b2eb3e85fd6
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 12:25:35 2019 -0600

    vol: fix vutil format-truncation nit
    
    We need one more byte for the trailing NUL.
    
    Reviewed-on: https://gerrit.openafs.org/13462
    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 bfe912ede6f452d10cfbd5fd549f44ee027acb1b)
    
    Change-Id: I1843bd9cb3392f721068c079b69fca65f6d1a181
    Reviewed-on: https://gerrit.openafs.org/13731
    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 b86e01577ef992599606acd668271a99b52e4a1b
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Mon Jun 6 14:03:54 2016 -0300

    sys: retry lsetpag if errno is EINTR
    
    The variable errno might be set by some system calls to indicate the
    reason why the system call in question did not work as expected. If the
    setpag system call is interrupted by a signal, the value of errno will
    be EINTR. This value means that setpag did not succeed because it was
    interrupted.
    
    If lsetpag did not succeed and errno is equal to EINTR, try again.
    
    Reviewed-on: https://gerrit.openafs.org/12295
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2ae2a15c9dc9b26eaa15964cc96fdeeb6d82c74c)
    
    Change-Id: I58d4aa633e5cadea2bc7b222f68306f07657b754
    Reviewed-on: https://gerrit.openafs.org/13975
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c0b07f7b5aed843f06c7cb334f1495acc2fe0ff4
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Nov 7 00:10:12 2019 -0300

    afs: afs_pag_wait() makes process unkillable
    
    To enforce a maximum average rate of one PAG allocation per second,
    afs_pag_wait(), called by afs_setpag*(), sleeps until the difference
    between the current time and pag_epoch gets greater than pagCounter.
    Unfortunately, this function ignores the code returned by afs_osi_Wait().
    As a result, it is not possible to kill the process that requested the
    new pag while afs_pag_wait() is sleeping.
    
    To fix this problem, do not ignore the code returned by afs_osi_Wait().
    
    Reviewed-on: https://gerrit.openafs.org/12260
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9563807791e2402f7a214a90e96cf6ed8ea5abfb)
    
    Change-Id: Id2453d6eb2b6cc973082da28bb3746c9f9c5ddb2
    Reviewed-on: https://gerrit.openafs.org/13974
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 080857b86b682994d023c6fdee39985c9434ce14
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Sep 20 08:44:59 2018 -0400

    afs: avoid extra VL_GetEntryByName for .readonly's
    
    In the VLDB, there's only one logical entry for a volume and its
    associated clones; there are not separate entries for the RW volume
    "avol", the RO volume "avol.readonly", and the BK volume
    "avol.backup".  And so, when looking up a volume in the VLDB by name,
    the vlserver ignores any trailing ".readonly" or ".backup" in the
    given name.  More concretely, the result of calling
    VL_GetEntryByName*("avol") is identical to that from calling
    VL_GetEntryByName*("avol.readonly").
    
    Accordingly, if afs_GetVolumeByName(name) failed because the volume
    was not found in the VLDB, afs_GetVolumeByName(name.readonly) will
    fail as well (barring a change in external circumstances, such as the
    volume being created or a network connection coming back up).
    Therefore, the extra call in EvalMountData() is not necessary and can
    be removed.
    
    Remove the extra call, to slightly improve the response time of the
    client if the volume in question does not exist, and to reduce
    vlserver load when patched clients are looking up nonexistent volumes.
    
    Reviewed-on: https://gerrit.openafs.org/13334
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 747afb94aa214217a749471679082c6ed8e81e92)
    
    Change-Id: Ieb0bccc359fc8ebc0ad2747dbfb329d232e5e436
    Reviewed-on: https://gerrit.openafs.org/13968
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5e7446595e442b9384e77df8dd18daacf2a2697a
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Nov 16 10:00:17 2018 -0500

    auth: plug auth realms memory leaks
    
    The function _afsconf_FreeRealms, called by afsconf_CloseInternal, leaks
    two afsconf_realms structures.
    
    The function _afsconf_LoadRealms also leaks those two structures when it
    fails.
    
    These memory leaks were discovered with valgrind.
    
    Reviewed-on: https://gerrit.openafs.org/13395
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    (cherry picked from commit 80ed9d98779135d43f23c9e51e7bd6bce36405f1)
    
    Change-Id: I3e4824e2be4a22b62c1e9502860b952db777cae7
    Reviewed-on: https://gerrit.openafs.org/13900
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Yadavendra Yadav <yadayada@in.ibm.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 74b7b948229af1a12938d06b1ec892562a2a573e
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Apr 4 10:27:10 2014 -0400

    cmd: improve help for programs without subcommands
    
    Some programs do not have subcommands (other than the standard "help",
    and "version" subcommands).  The cmd library provides the "noopcode"
    mechanism for new subcommand-less programs, but older programs take
    advantage of the optional "initcmd" token to simulate subcommand-less
    programs.  The "initcmd" token is optional to run the command, however
    it is required to display the command help.
    
    For example, running the xstat_cm_test program without any options gives
    a syntax error:
    
        $ xstat_cm_test
        xstat_cm_test: Missing required parameter '-cmname'
        ...
    
    Retrying with -help (or help, -h, --help), gives the rather unhelpful
    output:
    
        $ xstat_cm_test -help
        xstat_cm_test: Commands are:
        apropos         search by help text
        help            get help on commands
        initcmd         initialize the program
    
    It is not obvious to the user how to get the command usage for the
    program, nor that the initcmd subcommand to "initialize the program" is
    actually is a placeholder to run the program.
    
    Instead, display the command usage when help is requested and initcmd is
    the only defined subcommand for a program.
    
    For example:
    
        $ xstat_cm_test -help
        Usage: src/xstat/xstat_cm_test [initcmd]
                 -cmname <Cache Manager name(s) to monitor>+
                 -collID <Collection(s) to fetch>+ [-onceonly]
                 [-frequency <poll frequency, in seconds>]
                 [-period <data collection time, in minutes>] [-debug] [-help]
        Where: -onceonly  Collect results exactly once, then quit
               -debug     turn on debugging output
    
    The libcmd library now supports an "noopcode", which should used for
    future subcommand-less programs, but converting old programs to remove
    the initcmd opcode could break scripts which actually specify the
    optional initcmd token.
    
    This commit adds a new libcmd flag called CMD_IMPLICIT which is used to
    denote built-in subcommands such as "version" and "help".
    
    Reviewed-on: https://gerrit.openafs.org/10983
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 77ae3dc899e89f327328c874628f100a765846c4)
    
    Change-Id: I5b31f12f844f14e6cf31ee28c1eb60c98fcf4b59
    Reviewed-on: https://gerrit.openafs.org/13894
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 74891b3d29b762f68853a7b4bcd43b11cac2bbb7
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Aug 2 10:31:13 2019 -0600

    restorevol: replace snprintf with asprintf
    
    GCC is generating format-truncations warnings. With newer levels of gcc
    (e.g. gcc8) and --checking-enabled these warnings result in errors and
    failed builds.  In addition clang8 static analysis tools are reporting
    memory leaks.
    
    Replace snprintf with asprintf and eliminate some of the large work
    buffers that are being placed on the stack. In order to correct some of
    the format-truncation errors the size of the buffers grew significantly
    (e.g. gcc is reporting the need to resize some of the buffers from 256
    bytes to 4K in order to eliminate the warnings).
    
    Ensure allocated work buffers are freed before function return.
    
    Obtained a clean build with gcc9/clang8 with --enable-checking and a
    clean scan-build report with clang8.
    
    Reviewed-on: https://gerrit.openafs.org/13494
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit bf24b301a10dcb5710a98e58252213bd72c6f352)
    
    Change-Id: If9fa37613841ffd090ec565dc24171bf89579c5b
    Reviewed-on: https://gerrit.openafs.org/13750
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e1a450238f081f4be419cbd4340658f6b2f03133
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Mar 1 08:46:32 2019 -0700

    bos: remove smail-notifier
    
    smail-notifier is a sample program that is undocumented and has not
    been well maintained.  It produces copious compiler warnings, and
    would require effort to bring the code up to decent coding practices.
    
    The bosserver provides a -notifier feature that can be used for
    notifications, but that feature does not depend on this sample program.
    
    Removed the code, cleaned up the Makefiles and .gitignore.
    
    Reviewed-on: https://gerrit.openafs.org/13509
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 6e988a5b3900fe73c314c9960d6fb7753ff98411)
    
    Change-Id: I073a2b772f894e321bd0b41e012229c8e6d3105c
    Reviewed-on: https://gerrit.openafs.org/13738
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b69c0d81b4fcf9d77dae0eec5cd26e859460e870
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Oct 1 12:14:41 2019 -0600

    LINUX 5.3: Add comments for fallthrough switch cases
    
    With commit 6e0f1c3b45102e7644d25cf34395ca980414317f (LINUX: Honor
    --enable-checking for libafs) building libafs against a linux 5.3
    kernel compiles with errors due to fall through in case statements when
    --enable-checking / --enable-warning is used.
    
    e.g.
      src/opr/jhash.h:82:17: error: this statement may fall through
                                    [-Werror=implicit-fallthrough=]
             case 3 : c+=k[2];
                      ~^~~~~~
    
    The GCC compiler will disable the implicit-fallthrough check for case
    statements that contain a "special" comment ( /* fall through */ ).
    
    Add the 'fall through' comment to indicate where fall throughs are
    acceptable.
    
    This commit only adds comments and does not alter any executable code.
    
    The -Wimplicit-fallthrough flag was enabled globally in the linux kernel
    build in 5.3-rc2 (commit: a035d552a93bb9ef6048733bb9f2a0dc857ff869
    Makefile: Globally enable fall-through warning)
    
    Reviewed-on: https://gerrit.openafs.org/13881
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit a455452d7ee98d160620925bb8a0e3d0f4dfd7ec)
    
    Change-Id: Icad4b5923d971e7519f5d5259cd9c009c40c0d7a
    Reviewed-on: https://gerrit.openafs.org/13910
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5679fdb720525ec5289e80927fdd8b25cf2ae62f
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Jul 3 12:55:53 2019 -0500

    LINUX: Unlock page on afs_linux_read_cache errors
    
    When afs_linux_read_cache is called with a non-NULL task, it is
    responsible for unlocking 'page' (unless it's unlocked in a background
    task), even if we encounter an error. Currently we almost always do
    unlock the given page for a non-NULL task, but if we manage to hit one
    of the codepaths that 'goto out', we skip over the unlock_page() call
    near the end of the function, and the page never gets unlocked.
    
    As a result, the page stays locked forever. That generally means any
    future access to the same file will block forever, and when we try to
    flush the relevant vcache, we will block waiting for the page lock
    while holding GLOCK. (This can happen via the background daemon via
    e.g. afs_ShakeLooseVCaches -> osi_TryEvictVCache -> afs_FlushVCache ->
    osi_VM_FlushVCache -> vmtruncate -> ... -> truncate_inode_pages_range
    -> __lock_page on Linux 2.6.32-754.2.1.el6.) This quickly brings the
    whole client to a halt until the machine can be forcibly rebooted.
    
    To solve this, just move the 'out:' label to before the page unlock.
    Add a few locking-related comments around the relevant code to help
    explain some relevant details.
    
    The relevant code has changed and been refactored over the years, but
    this problem has probably existed ever since this code was originally
    converted to using the readpage() of the underlying cache fs, in
    commit 88a03758 (Use readpage, not read for fastpath access).
    
    Reviewed-on: https://gerrit.openafs.org/13672
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit eed79e2d28dcab889d01869e57dec14fd30d421c)
    
    Change-Id: I6391897473e701bd81eb334935317dc5009612da
    Reviewed-on: https://gerrit.openafs.org/13765
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7ddb6b599426e2f59787ce924c9a5d1801ca0ba7
Author: Yadavendra Yadav <yadayada@in.ibm.com>
Date:   Fri Jul 26 19:59:25 2019 +0530

    LINUX: Avoid re-taking global lock in afs_dentry_iput
    
    “dput” function internally can call dentry_iput which  results in
    calling afs_dentry_iput. So in case before calling “dput” if global lock
    was held then when afs_dentry_iput is called it will again try to lock
    global lock and will result in deadlock scenario.  So to avoid this
    deadlock make sure if global lock is already taken before calling
    afs_dentry_iput, don’t try to lock it again.  This issue was partially
    fixed in commit 0dac4de8 (Linux: drop GLOCK before calling dput)
    
    Reviewed-on: https://gerrit.openafs.org/13725
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 5792e0211be275cf79d10e8c5f6ab2a14493e07a)
    
    Change-Id: I4a17700adb18956fc61462663fdb690b267cc928
    Reviewed-on: https://gerrit.openafs.org/13748
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    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 62ec1c913134f515802140e48e6386ec35559767
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Oct 1 11:56:53 2018 -0400

    afs: Free 'addrs' array
    
    Currently, 3 places in libafs allocate an 'addrs' array in a very
    similar way to loop through our list of servers:
    ForceAllNewConnections(), afs_LoopServers(), and PCallBackAddr(). Of
    these, only afs_LoopServers actually frees the array.
    ForceAllNewConnections and PCallBackAddr leak the memory, but these
    are only hit from infrequent pioctls that can only be run by root, so
    the impact is small.
    
    Fix ForceAllNewConnections and PCallBackAddr to free the array.
    
    Reviewed-on: https://gerrit.openafs.org/13355
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0548ee436d0f0f92a980d22e03149faedf38dc70)
    
    Change-Id: I5d64899c7be40ba3e1b0985c4829933eebbd8323
    Reviewed-on: https://gerrit.openafs.org/13899
    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 dace4163c169f879c4054e1f3e9071b8b0ab3226
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Sep 26 13:35:51 2019 -0500

    rx: Fix test for end of call queue for LWP
    
    Commit 6ad3d646 (rx: Correctly test for end of call queue) fixed a
    broken end-of-queue check in rx_GetCall, but it only fixed the
    RX_ENABLE_LOCKS version of rx_GetCall. The non-locks version (i.e. the
    LWP version) still had this bug. Fix it for the LWP case, to avoid
    some rare cases where an Rx call can get stuck in the incoming queue.
    
    Also remove the comment added by commit 170dbb3c (rx: Use opr queues),
    since we're fixing the mentioned problem.
    
    Reviewed-on: https://gerrit.openafs.org/13880
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit d9fc4890f01a41fa5a63f97f2446b3afc35b473f)
    
    Change-Id: I2e0106b63a8bf09634500944490dfae2e86c18b9
    Reviewed-on: https://gerrit.openafs.org/13892
    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 b3ce4c493a6920b160e7ecd251fcc694891d3446
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Fri Aug 9 07:59:44 2019 -0700

    The interminable rework of afs_random()
    
    Commit f0a3d477d6109697645cfdcc17617b502349d91b restructured the
    operation on tv_usec to avoid using undefined behavior, but in
    the process introduced a behavior change.  Historically (at least as
    far back as AFS-3.3), we masked off the low nybble (four bits) of
    tv_usec before adding the low byte (eight bits) of the rxi_getaddr()
    output.  Why there was a desire to combine two sources of input for
    the overlapping four bits remains unclear, but restore the historical
    behavior for now, as the intent of commit
    f0a3d477d6109697645cfdcc17617b502349d91b was to not introduce any
    behavior changes.
    
    Reviewed-on: https://gerrit.openafs.org/13759
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 1c4e94da2a8fce9d79006ad6d6673d3d7de117d3)
    
    Change-Id: Iec10673e5ec73c1e0edcc231690cb6133fce8691
    Reviewed-on: https://gerrit.openafs.org/13879
    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 f5f44ca2efa3534e84a5311fec7a637ec7bf5d9b
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 19:45:31 2019 -0600

    rework afs_random() yet again
    
    clang 7 notes that ~0 is signed and that left-shifting into the sign
    bit is undefined behvaior.  Use a new construction to clear the low
    byte of tv_usec with only bitwise operations that are independent of
    the width of tv_usec and stay within the realm of C's defined behavior.
    
    Reviewed-on: https://gerrit.openafs.org/13474
    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 f0a3d477d6109697645cfdcc17617b502349d91b)
    
    Change-Id: I4f0438c2fc8237968f41409ca23ac098839508fe
    Reviewed-on: https://gerrit.openafs.org/13743
    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 1b704df8db4c7e2191b3683c03590aeb663af2f8
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 18:39:53 2019 -0600

    Avoid incomplete function type in casts
    
    clang complains that these casts contain an incomplete function type
    (since the function argument is omitted rather than declared to be
    void).  Since we just need the cast to pointer type, let the compiler
    do it implicitly and pass stock NULL, rather than trying to force a
    cast to function-pointer type.
    
    Reviewed-on: https://gerrit.openafs.org/13473
    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 96c0b88947c7aab605170bdca633d3716051a58e)
    
    Change-Id: I950ff8de925a1ca03e50ad7ec394123445b5ce4a
    Reviewed-on: https://gerrit.openafs.org/13742
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 64d0352df1406d9601d6d772555c4c39efc05d7e
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Feb 1 16:31:50 2019 -0600

    Avoid calling krb5_free_context(NULL)
    
    Several places in the code currently call krb5_free_context(ctx) in a
    cleanup code path, where 'ctx' may or may not be NULL. This is not
    guaranteed to be okay, so check for NULL to make sure we don't cause
    issues in these code paths.
    
    While we are here cleaning up krb5_free_context() calls, also fix a
    few call sites in afscp_util.c that were not calling krb5_free_context
    in all error paths.
    
    Reviewed-on: https://gerrit.openafs.org/13461
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 26b1dc036719a588a5cadecb14053bd4079c1f48)
    
    Change-Id: I3b0d22f51f4fe85897116b7f96d096570258eed2
    Reviewed-on: https://gerrit.openafs.org/13902
    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 c3869ac05b8eb816b1b8844d628f796a06d15914
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Aug 9 13:25:26 2019 -0600

    vlserver: initialize nvlentry elements after read
    
    Commit 7620bd33487207b348ed7aeba45f8d743132ba84 (vlserver: fix
    vlentryread() for old vldb formats) leaves the tail end of the
    serverNumber, serverParition and serverFlags arrays uninitialized since
    it only copies OMAXNSERVERS elements into arrays that have NMAXNSERVERS
    elements.
    
    Initialize the elements in the nvlentry server arrays that were not
    copied with BADSERVERID.
    
    Reviewed-on: https://gerrit.openafs.org/13755
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ddf7d2a7f4bfdcab238e791cb8c49bb803e76b09)
    
    Change-Id: I4e1065bedda0f50b85cf472d015f2c86e4af82c8
    Reviewed-on: https://gerrit.openafs.org/13846
    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 c83a135dac77b916d1188026a12634de0e98fc3a
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 14:23:03 2019 -0600

    vlserver: fix vlentryread() for old vldb formats
    
    When we're using old format compatibility, use OMAXNSERVERS for the
    array lengths instead of MAXNSERVERS.  Otherwise we'll try to copy more
    data than we've read.
    
    Detected by gcc8 as:
    
    vlutils.c:183:2: error: ‘memcpy’ forming offset [149, 151] is out of the bounds [0, 148] of object ‘tentry’ with type ‘struct vlentry’ [-Werror=array-bounds]
      memcpy(nbufp->serverFlags, oep->serverFlags, NMAXNSERVERS);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    vlutils.c:141:26: note: ‘tentry’ declared here
         struct vlentry *oep, tentry;
                              ^~~~~~
    
    Reviewed-on: https://gerrit.openafs.org/13465
    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 7620bd33487207b348ed7aeba45f8d743132ba84)
    
    Change-Id: I7dc4ad48805c6a82dd021d156fe187dd97e5b456
    Reviewed-on: https://gerrit.openafs.org/13734
    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 d38a136c1343d62243b738afd6dc5b72cc3e6ae1
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 15:26:23 2019 -0600

    uss: Allocate buffer space for trailing NUL
    
    Appease gcc8's -Wformat-truncation engine.
    
    Reviewed-on: https://gerrit.openafs.org/13467
    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 9a5ba85d1853327d8184287e58a6e03fabaaf23d)
    
    Change-Id: I9900452b951d600e6358b216015fe4fcdf8f633e
    Reviewed-on: https://gerrit.openafs.org/13736
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 43651533d36b22ecb81ca9fb2fa65b6927289740
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jul 26 07:59:33 2019 -0600

    uss: uss_procs.c format-overflow warning
    
    GCC 9 introduced new warnings/errors and is flagging a sprintf with a
    format-overflow warning.  With --checking-enabled, this error is causing
    uss_procs.c to fail during compile.
    
    A file name with the full path is being composed and the size of the
    buffer was triggering a possible format-overflow warning/error.
    
    Use asprintf to allocate the buffer dynamically instead of using a
    buffer sitting on the stack (reducing the stack requirements by 2K).
    
    Produces new error message if asprintf returns an error.
    
    Reviewed-on: https://gerrit.openafs.org/13664
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 41ee558329560bce037ad2860282d8b49aa11b2d)
    
    Change-Id: I5c5866142ae17c92017201fb567f847b5c2907a0
    Reviewed-on: https://gerrit.openafs.org/13729
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d5c2f53e9488311b294d871894967f78949699b6
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Jul 2 16:58:28 2019 -0600

    ptserver: testpt.c format-overflow warning
    
    GCC 9 introduced new warnings/errors and is flagging a sprintf with a
    format-overflow warning.  With --checking-enabled, this error is causing
    testpt.c to fail during compile.
    
    Change the buffer size from 16 bytes to PR_MAXNAMELEN+1 and use snprintf
    instead of sprintf. Generate an error message and exit if snprintf
    truncates the string.
    
    Reviewed-on: https://gerrit.openafs.org/13663
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4a57cc54dfb6789a86ee735360ee44209c1a901a)
    
    Change-Id: I2f8012e7fb4384f3ad877d2c9beb5f00b03716b8
    Reviewed-on: https://gerrit.openafs.org/13730
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3cb29cf7768db45bcf1b49cd5aabd3802489a961
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Jun 25 15:39:40 2019 -0600

    ptserver: Incorrect variable used to print error msg
    
    In testpt.c the variable cdir is used to print the name of the temporary
    dir.  However at this point in the code cdir is NULL and the variable
    tmp_conf_dir contains the actual name that should be used in the error
    message.
    
    Flagged as an error when --enable-checking is on and using GCC 9.
    
    Reviewed-on: https://gerrit.openafs.org/13662
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f938f5f248a3cb3f7ac871f5ef45a0e2d043706b)
    
    Change-Id: I1b993ddc2545f90736811e2eb85ba4b3bae6e657
    Reviewed-on: https://gerrit.openafs.org/13728
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 20cd3ab424dd8b68d8870582c817c6b190480205
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Thu Jul 11 21:07:35 2019 -0700

    aklog: require opt-in to enable single-DES in libkrb5
    
    Since the introduction of rxkad-k5 in response to OPENAFS-SA-2013-003,
    it is not strictly necessary to configure libkrb5 to allow weak crypto
    in order to obtain an AFS token.  A sufficient amount of time has passed
    since then that it is safe to assume that the default behavior is the
    more-secure one, and require opt-in for the insecure behavior.
    
    To indicate that the use of single-DES is quite risky, add the
    "-insecure_des" argument to both klog and aklog, to gate the
    preexisting calls that enable weak crypto/single-DES.
    These calls, and the -insecure_des option, may be removed entirely
    in a future commit.
    
    Reviewed-on: https://gerrit.openafs.org/13689
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit eaae6eba8ca10ba7a5a20ee0d1b5f91bc2bac6c6)
    
    Change-Id: I197042e12567fa0fed1b6584e85c3f0a520efa4c
    Reviewed-on: https://gerrit.openafs.org/13791
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b28a61fc0b633514c762e34a0b26350280e74405
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Aug 8 12:07:51 2019 -0600

    rxkad: ticket5.c fix typo in #if statement
    
    commit 98ca332c4a5ac9e5687fb4fe21b350134bc74d1b (rxkad: v5der.c format
    truncation warnings) contains a typo in the test for clang (_clang
    instead of __clang__)
    
    Correct the typo in the #if statement to test for __clang__
    
    Reviewed-on: https://gerrit.openafs.org/13754
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e3dbd8a5886734f6390126e155cc259b0de5af51)
    
    Change-Id: I6c2a9851e668947c61d97e013c84808f738c4e52
    Reviewed-on: https://gerrit.openafs.org/13756
    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 f65650bdc7c67513f7f1b6e92f5e23d637045e8a
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Mon Jul 15 08:38:24 2019 -0600

    rxkad: v5der.c format truncation warnings
    
    GCC 7 is producing new warnings due to better compile time analysis.
    With --enable-checking v5der.c is failing with 2 errors due to possible
    format-truncation in some snprintf calls.  The format strings are being
    used to format a date and time values from a tm structure.
    
    The actual warnings/errors are being triggered from arithmetic being
    performed on the year and month members of the structure. The resulting
    values should not exceed the format lengths, but the compilers are still
    flagging the statements.
    
    v5der.c is part of the heimdal package that is pulled into the openafs
    source tree.  v5der.c is not compiled directly but is #included in
    ticket5.c
    
    Update ticket5.c to change the severity of the format-truncation
    diagnostic to a warning if using GCC 7 (or higher).
    
    Note: since v5der.c is pulled from an external source (heimdal), any
    changes to update v5der.c directly would need to be performed upstream.
    
    Reviewed-on: https://gerrit.openafs.org/13661
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 98ca332c4a5ac9e5687fb4fe21b350134bc74d1b)
    
    Change-Id: I1a808060b302549887e529e74bc3805d9431c499
    Reviewed-on: https://gerrit.openafs.org/13727
    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 639ee571a7953a80e156789a0494d7979681134f
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Sep 6 13:35:02 2019 +0200

    ptserver: Increase length limit of namelist, idlist, prlist, prentries
    
    An implementation limit of those lists was introduced in commit
    a0ffea098d8c5c5b46c6bf86a12d28d6e7096685 to prevent using unlimited
    amounts of memory in ptserver and the client.  Subsequent reports
    indicate that the chosen limits are small enough to restrict
    functionality currently in use at some sites where membership lists
    exceed the current limit.  Since this is just an implementation-
    defined limit and can freely change from release to release, increase
    the threshold by an order of magnitude to preserve functionality for
    existing deployments while still retaining some protection against
    attacker-controlled excessive memory allocation.
    
    Reviewed-on: https://gerrit.openafs.org/13838
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d1e90b82ebb2685cbac3ecb3fd99136328b35357)
    
    Change-Id: Ifa229179ad6d2962a8d49df6abd1add94fad7259
    Reviewed-on: https://gerrit.openafs.org/13844
    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 89355bc9590463b0d2c5bdf44a7295463dad6ebb
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Aug 26 20:33:58 2019 -0500

    WINNT: Link tbutc against mtafsutil.lib
    
    tbutc uses pthreads, not LWP, so link it against mtafsutil.lib (a
    pthread library), and not afsutil.lib (an LWP library).
    
    Reviewed-on: https://gerrit.openafs.org/13822
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 7a76f4dc00984d42b0535a8edbedee034ada896f)
    
    Change-Id: I133fff53d1974658ed1fe95e48abd9779a346a4f
    Reviewed-on: https://gerrit.openafs.org/13852
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 58867933e9619f3727deb25851384ad24e5c5a62
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Aug 26 19:34:19 2019 -0500

    rx: Export rx_GetCallStatus
    
    Commit 59d3a8b8 (vos: restore status information to 'vos status')
    added the function rx_GetCallStatus to Rx, and used it in the
    volserver, but didn't add the function to our .sym and .exp files,
    causing a linker error on at least WINNT.
    
    Add the function to the relevant .sym/.exp files, so we can link on
    all platforms.
    
    Change-Id: I859ac6d04d8a21eb6f8b4ba3f3720ca318e91334
    Reviewed-on: https://gerrit.openafs.org/13820
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c3716b3d7e32f47b084657e163b029e9f1756fa4)
    Reviewed-on: https://gerrit.openafs.org/13851
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ee00e78c7af7c0d6b4f4bedabb718d7142e462f0
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Aug 26 18:14:48 2019 -0500

    WINNT: Link butc against audit
    
    Since commit c43169fd (OPENAFS-SA-2018-001 Add auditing to butc server
    RPC implementations), butc references symbols from audit. So add audit
    to our libraries to link against, so we can link butc on WINNT.
    
    Reviewed-on: https://gerrit.openafs.org/13818
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e4b689e8c7cb39b72854dd38b6a92134591c8bca)
    
    Change-Id: Ib27755730178afbbd85e3aad265c1f956b3785ef
    Reviewed-on: https://gerrit.openafs.org/13850
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f01f910f19f62589ecc394da0ed22c0be27d9e66
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Nov 5 10:50:01 2019 -0600

    afs: Avoid giving wrong 'tf' to afs_InitVolSlot
    
    Commit 75e3a589 (libafs: afs_InitVolSlot function) split out a bit of
    our code that initializes a struct volume into the afs_InitVolSlot
    function. However, it caused us to almost always pass a non-NULL 'tf'
    to afs_InitVolSlot, even if the target volume was not found.
    
    That is, before that commit, our code roughly did this:
    
        for (...; j != 0; j = tf->next) {
            ...;
            tf = &staticVolume;
            if (tf->volume == volid)
                break;
        }
        if (tf && j != 0) {
            use_tf_data();
        } else {
            use_blank_data();
        }
    
    The reason for the extra 'j != 0' check after the loop is to see if we
    hit the end of the volume hash chain, or if we actually found a
    matching 'tf' in the loop.
    
    And after that commit, the code did this:
    
        for (...; j != 0; j = tf->next) {
            ...;
            if (j != 0) {
                tf = &staticVolume;
                if (tf->volume == volid)
                    break;
            }
        }
        if (tf) {
            use_tf_data();
        } else {
            use_blank_data();
        }
    
    The check for 'j != 0' was moved to inside the for loop, but 'j' is
    always nonzero in the loop (otherwise, the for() would exit the loop).
    This means that if we didn't find a matching 'tf' in the loop, our
    'tf' would be non-NULL anyway, and so we'd initialize our volume slot
    from just the last entry in the hash chain.
    
    This means that for volumes that are not found in the VolumeItems
    file, our struct volume will probably be initialized with arbitrary
    data from another volume, instead of being initialized to the normal
    defaults (the 'else' clause in afs_InitVolSlot).
    
    This means that the 'dotdot' entry for the volume may be wrong, and so
    we may report the wrong parent dir for the root of a volume. However,
    the 'dotdot' entry should be fixed when the volume root is accessed
    via a mountpoint, so any such issue should be temporary. And of
    course, on some platforms (LINUX) we don't ever use the 'dotdot'
    information for a volume, and even on other platforms, often resolving
    the '..' entry is handled by other means (e.g. shells often calculate
    it themselves). But some 'pwd' calculations and other '..' corner
    cases may be affected.
    
    To fix this, change the relevant loop so that we only set 'tf' to
    non-NULL when we actually find a matching entry.
    
    Reviewed-on: https://gerrit.openafs.org/13933
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    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 4a9078c6bbf51720a5eacf7e6ba21443e5103eee)
    
    Change-Id: Ib1e7519db8f844872c4b88b54978f358ff7b299e
    Reviewed-on: https://gerrit.openafs.org/13937
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-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 9f38cbdc544d6659c60dbd578e86110df86457b6
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Tue Sep 17 15:14:44 2019 -0400

    viced: consistently enforce host thread quota for ICBS(3)
    
    From time to time, the fileserver may issue potentially long-running
    RXAFSCB_* RPCs back to a host (client).  If these are holding h_Lock_r
    (host->lock) while running, they may cause other service threads for the
    same host (client) to block.
    
    In order to prevent a given host from tying up too many service threads
    in this way, the fileserver enforces a quota limiting how many threads
    can be waiting for h_Lock_r on a particular host while waiting for one
    of the following RPCs to complete:
    - RXAFSCB_TellMeABoutYourself (TMAY)
    - RXAFSCB_WhoAreYou
    - RXAFSCB_ProbeUuid
    - RXAFSCB_InitCallBackState (ICBS)
    - RXAFSCB_InitCallBackState3 (ICBS3)
    
    Note: Although some of these RPCs are relatively lightweight, they may
    still experience network delays.
    
    This quota is enforced by calling h_threadquota() in h_Lookup_r and
    h_GetHost_r.  The quota check is enabled for a given host by turning on
    host->hostFlags HWHO_INPROGRESS for the duration of the RXAFSCB_* RPC.
    The quota check is only needed, and should only be enabled, when the RPC
    is issued while h_Lock_r is held.
    
    However, there are a few paths to ICBS(3) where h_Lock_r is held but
    HWHO_INPROGRESS is not set.  A delay in those paths may allow a host to
    consume an unlimited number of fileserver threads.  One such path
    observed in a field report was SRXAFS_FetchStatus -> CallPreamble ->
    BreakDelayedCallBacks_r -> RXAFSCB_ICBS3.
    
    Instead, enable host thread quotas for all remaining unregulated ICBS(3)
    RPCs.
    
    Reviewed-on: https://gerrit.openafs.org/13873
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit aefc4c4f46e13f59b4cbe043e1a2a6f4ed99e076)
    
    Change-Id: If3883a152078bba9995e0c8a13ab31788db6347f
    Reviewed-on: https://gerrit.openafs.org/13893
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0922caa3be5df220aa3d0a0d828c21b279defad1
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Aug 26 16:08:31 2019 -0500

    kauth: Move COUNT_REQ to beginning of block
    
    Commit b604ee7a (OPENAFS-SA-2018-002 kaserver: prevent KAM_ListEntry
    information leak) added a memset in kamListEntry before COUNT_REQ, but
    COUNT_REQ declares a local variable. This breaks the WINNT build,
    because we must declare variables at the beginning of a block.
    
    To fix this, just swap the two lines.
    
    Reviewed-on: https://gerrit.openafs.org/13815
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit b9b5385e6a04dcacd180f33e39495c7909fe4df3)
    
    Change-Id: Id9c1fd67e4614f8f433415486e107ecb4bd0d708
    Reviewed-on: https://gerrit.openafs.org/13849
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit be51e46d04ff0e346ee53852855ac26e31bb9c0c
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Aug 26 13:13:28 2019 -0500

    WINNT: Build bubasics before audit
    
    Commit 9ebff4c6 (OPENAFS-SA-2018-001 audit: support butc types) made
    src/audit require the butc.h header, and updated Makefile.in to
    reflect this. However, this dir is also built on WINNT, and the
    NTMakefile was not updated to reflect this dependency. As a result, we
    might fail to build src/audit on WINNT, since butc.h may not exist
    yet, and we get an error like:
    
                cl [...] /c audit.c
        audit.c
        cl : Command line warning D9025 : overriding '/W4' with '/W3'
        audit.c(27) : fatal error C1083: Cannot open include file: 'afs/butc.h': No such file or directory
        NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.EXE' : return code '0x2'
    
    To fix this, move 'bubasics' to be made before 'audit' in NTMakefile,
    so butc.h is available when we build 'audit'.
    
    Reviewed-on: https://gerrit.openafs.org/13813
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9eeb3ec09f5421ceab2be415a193bb3a3c44925f)
    
    Change-Id: If36de5664ea0eb7208810c224d30092f0a4d1745
    Reviewed-on: https://gerrit.openafs.org/13848
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 11232f19f0ffd6dd88a1b498e792b3d5d3804286
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Jul 8 14:49:23 2019 -0500

    afs: Avoid panics in afs_InvalidateAllSegments
    
    Currently, afs_InvalidateAllSegments panics when afs_GetValidDSlot
    fails. We panic in these cases because afs_InvalidateAllSegments
    cannot simply return an error to its callers; we must invalidate all
    segments for the given vcache, or we risk serving incorrect data to
    userspace as explained in the comments.
    
    Instead of panicing, though, we could simply sleep and retry the
    operation until it succeeds. Implement this, retrying every 10
    seconds, and logging a message every hour that we're stuck (in case
    we're stuck for a long time).
    
    When we retry the operation, do so in a background request, to avoid a
    somewhat common situation on Linux where we always get I/O errors from
    the cache when the calling process has a SIGKILL pending. Create a new
    background op for this, BOP_INVALIDATE_SEGMENTS.
    
    With this, the relevant vcache will be effectively unusable for the
    entire time we're stuck in this situation (avc->lock will be
    write-locked), but this is at least better than panicing the whole
    machine.
    
    Reviewed-on: https://gerrit.openafs.org/13677
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 3be5880d1d2a0aef6600047ed43d602949cd5f4d)
    
    Change-Id: Iba1cde70a4d5e919fedfe27d0540878113a369e4
    Reviewed-on: https://gerrit.openafs.org/13847
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 8898cb3f12bb606d715e365ab39acb06bcd544e4
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jul 26 14:57:02 2019 -0600

    gtx: Avoid incomplete function type in casts
    
    clang complains that these casts contain an incomplete function type
    (since the function argument is omitted rather than declared to be
    void).  Since we just need the cast to pointer type, let the compiler
    do it implicitly and pass stock NULL, rather than trying to force a
    cast to function-pointer type.
    
    Reviewed-on: https://gerrit.openafs.org/13726
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d6262c3f391e4176bec207fd0e8d4d6091a7f4e2)
    
    Change-Id: I4544c37591bb68ff6bbe345192490bb79c843fc5
    Reviewed-on: https://gerrit.openafs.org/13749
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a350b45814657a42708ddde3c8eace962266be70
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 19:52:26 2019 -0600

    libadmin: appease clang -Wsometimes-uninitialized
    
    clang thinks that 'time' can be used uninitialized:
    
    bos.c:1472:9: error: variable 'time' is used uninitialized whenever 'if' condition is
          false [-Werror,-Wsometimes-uninitialized]
        if (as->parms[TIME].items) {
            ^~~~~~~~~~~~~~~~~~~~~
    bos.c:1478:57: note: uninitialized use occurs here
        if (!bos_ExecutableRestartTimeSet(bos_server, type, time, &st)) {
                                                            ^~~~
    bos.c:1472:5: note: remove the 'if' if its condition is always true
        if (as->parms[TIME].items) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    bos.c:1445:5: note: variable 'time' is declared here
        bos_RestartTime_t time;
        ^
    
    but in this command description, the TIME argument is required.
    Add a never-triggered error exit to appease the compiler when
    --enable-checking is activated.
    
    Reviewed-on: https://gerrit.openafs.org/13476
    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 453060c27a5d33d3c27128d169298f9d66d06f1a)
    
    Change-Id: Iac80d4ec7c2a33dcb470de2daedf693c20b96b00
    Reviewed-on: https://gerrit.openafs.org/13745
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d50932bd85d04784b8be79ffd99c74d50b7ccb6a
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 19:48:20 2019 -0600

    uss: signed/unsigned char fallout
    
    When char is signed, assigning 255 to a variable of type char changes
    the value, which causes clang to emit a warning and fail the
    --enable-checking build.
    
    Reviewed-on: https://gerrit.openafs.org/13475
    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 7c15e6efe62fb3fe1970c56331df09b257abf6d9)
    
    Change-Id: I3dd374582b57e46460ea80ead75913948c2d2262
    Reviewed-on: https://gerrit.openafs.org/13744
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c8762d82f5c387418b2ba749bbc15b7b7f40d749
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 17:10:29 2019 -0600

    dumpscan: appease gcc8 -Wformat-overflow
    
    gcc does not benefit from our external knowledge that tm_year is
    tightly bounded, and thinks it could still be in the range
    [-2147481748, 2147483647], which would overflow our string buffer.
    The function in question does not have error handling in place, so
    rather than adding some or trying to assert the proper bounds, just
    use a slightly larger buffer for safety.
    
    Reviewed-on: https://gerrit.openafs.org/13472
    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 8f03ff3bdd8eb9f4557cdb7054aee9b8ea432160)
    
    Change-Id: I05c8d998c6d40118a1bde923e346cddbdfa4192b
    Reviewed-on: https://gerrit.openafs.org/13741
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b86c1f142add117065399186292655873bc7fdc0
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 17:02:08 2019 -0600

    scout: band-aid -Wformat-truncation
    
    gcc8 gets pretty confused about the bounds on these things (presumably
    due to our alignment options) and thinks this could potentially be a huge
    string.  Check for truncation to appease the compiler, instead of trying
    to ensure that the buffer is big enough.
    
    Reviewed-on: https://gerrit.openafs.org/13470
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit df8534909fdc1fa8417aa788c0fa71c5dbe7eb30)
    
    Change-Id: Idf3a2f32ba4630a7d11b2c0664c6dd9b694eb7db
    Reviewed-on: https://gerrit.openafs.org/13739
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit aa6c1946c0988439207694bc4962a2afbd2a9bd3
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 15:44:54 2019 -0600

    butc: -Wformat-truncation fallout
    
    Increase some buffer sizes to appease gcc8.  While here, use snprintf
    instead of plain sprintf(!).
    
    Reviewed-on: https://gerrit.openafs.org/13468
    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 a89297a066d8689f8fc29a7428cfe3ed6235d010)
    
    Change-Id: If26312359d62649077e1f8adf2c9e0b39d28496f
    Reviewed-on: https://gerrit.openafs.org/13737
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 589d811eb6473cefd49653f17007749a2e82a677
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 14:43:04 2019 -0600

    vlserver: use large enough buffer for rxinfo string
    
    The "[dotted-quad] rxkad:name.inst@cell" construct can be as large as
    (3*4+3)+7+3*64+2+1 == 217 characters (including trailing NUL); size
    our buffer accordingly to avoid the risk of truncation.
    
    Reviewed-on: https://gerrit.openafs.org/13466
    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 584b0f2b6b4391c0c879352bb1786c0f267666c9)
    
    Change-Id: Ia11e685ec17f34a9a8fdc42d392b8a2677f63696
    Reviewed-on: https://gerrit.openafs.org/13735
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 86a453f374a9aa201cf599ce4a0ca33d1522230a
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Sat Feb 2 12:56:26 2019 -0600

    vol: avoid -Wformat-truncation issues in vol-salvage.c
    
    Make some formerly-64-character buffers VMAXPATHLEN (plus a smidgeon)
    to give them space to hold the composed paths.
    
    Reviewed-on: https://gerrit.openafs.org/13464
    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 d6b88e3bd5219a8dffebc07df23e30f1d16f095f)
    
    Change-Id: Idd388cd23ffeff1307b9eb6d31976383b6125260
    Reviewed-on: https://gerrit.openafs.org/13733
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>