commit 501dbbe4e2fbcb8e71af9f695e8e34911c44d581
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Sun Sep 8 13:23:23 2019 +0200

    Make OpenAFS 1.8.4
    
    Update version strings for the 1.8.4 release.
    
    Change-Id: I85102e0be54cf0ff28b706d35dba8e3601447cba
    Reviewed-on: https://gerrit.openafs.org/13841
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ae39aa202ec9133e6cec6aaf4e214157fad9b1aa
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Aug 16 17:55:48 2019 +0200

    Update NEWS for OpenAFS 1.8.4
    
    Finalize the 1.8.4 release notes.
    
    Change-Id: Ida85451cdec65b2fe736d66572671293f30a6508
    Reviewed-on: https://gerrit.openafs.org/13785
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9fa11cd961e283234ea351085cf45a24182db81f
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Sep 6 16:17:39 2019 +0200

    Make OpenAFS 1.8.4pre2
    
    Update version strings for the second 1.8.4 prerelease.
    
    Change-Id: I83ebb06aaae9484e0773b68f336e6d8752069824
    Reviewed-on: https://gerrit.openafs.org/13839
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit cf7ee9a76dbf16b0aa44f737aca8448870824098
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Sun Sep 8 13:16:35 2019 +0200

    Update NEWS for 1.8.4pre2
    
    Release notes for the OpenAFS 1.8.4 prerelease 2.
    
    Change-Id: Iad2098f56c9e5a9025761e21f609aa3c1584b4aa
    Reviewed-on: https://gerrit.openafs.org/13840
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 676c57f5551fb18cf8485a0e945bc15b78eb1051
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Oct 17 16:35:36 2018 -0500

    Remove one more automake VERSION reference
    
    The configure summary was still referencing the old automake-specific
    VERSION var. Use the autoconf PACKAGE_VERSION var instead, so this
    actually shows our version.
    
    Reviewed-on: https://gerrit.openafs.org/13360
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 0f65b40b24599d58cf30bfd47fae83ab54e1416a)
    
    Change-Id: I5bd9399acc6e4c6dd19b94198354b600f35bee15
    Reviewed-on: https://gerrit.openafs.org/13790
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4ccc332ab61cfc4d33fdc48a7d57e93cf9cecb91
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Oct 11 00:18:17 2018 -0500

    Remove automake autoconf vars
    
    Commit 4706854f (autoconf: updates and cleanup) removed our invocation
    of AM_INIT_AUTOMAKE, which defines the output variables PACKAGE and
    VERSION. Several files in our build system are still referencing
    @PACKAGE@ and @VERSION@, though, leaving them un-substituted. This
    most easily is seen as the AFSVersion version string remaining as
    "@VERSION@" when the tree is built without git, but it also affects
    some packaging in the tree.
    
    Remove references to @VERSION@ and @PACKAGE@, replacing them with
    their autoconf equivalents @PACKAGE_VERSION@ and @PACKAGE_TARNAME@.
    
    Reviewed-on: https://gerrit.openafs.org/13357
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2f2c2ce62aa17ecac3651d64c1168af926f7458b)
    
    Change-Id: If2b98b8930bc687170f53f852417fb9374bf6c60
    Reviewed-on: https://gerrit.openafs.org/13789
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4330e16a47e76ea6c1f35467a1ddbe97bded7a92
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Aug 9 14:25:03 2019 -0600

    LINUX 5.3.0: Use send_sig instead of force_sig
    
    Linux 5.3.0 commit 3cf5d076fb4d48979f382bc9452765bf8b79e740 "signal
    Remove task parameter from force_sig" (part of siginfo-linus branch)
    changes the parameters for the Linux kernel function force_sig. See LKML
    thread starting at https://lkml.org/lkml/2019/5/22/1351
    
    According to the LKML discussion and the above commit message force_sig
    is only safe to deliver a synchronous signal to the current task. To
    send a signal to another task, we're supposed to use send_sig instead,
    which has been available since at least linux 2.6.12-rc12.
    
    Currently, rx_knet calls force_sig to kill the rxk_ListenerTask.  With
    the Linux 5.3.0 kernel, this module fails to compile due to the above
    noted changes.
    
    Replace the force_sig call with send_sig.  In order to use send_sig, the
    rxk_listener thread must allow SIGKILL and during shutdown (umount)
    SIGKILL must be unblocked for the rxk_listener thread.
    
    Note that SIGKILL is initially blocked on rxk_listener and is only
    unblocked when shutting down the thread.  Having the signal blocked is
    sufficient to prevent unwanted signals from reaching the rxk_listener
    thread during normal operation.
    
    Reviewed-on: https://gerrit.openafs.org/13753
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 2b7af1243f46496c0b5973b3fa2a6396243f7613)
    
    Change-Id: I6eb44311fbcc63adb6ebeb85a8e076922befd645
    Reviewed-on: https://gerrit.openafs.org/13788
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 6e8674ef07cae2f62a9dc646d9f6e7e2e6307aab
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Aug 8 16:53:13 2019 -0600

    LINUX 5.3.0: Check for 'recurse' arg in keyring_search
    
    Linux 5.3.0 commit dcf49dbc8077e278ddd1bc7298abc781496e8a08 "keys: Add a
    'recurse' flag for keyring searches" adds a new parameter to
    Linux kernel keyring_search function.
    
    Update the call to keyring_search to include the recurse parameter if
    available. Setting the parameter to true (1) maintains the current
    search behavior.
    
    Change-Id: I038117d1bccdf619a42132fba7d8d61b3ce3c14b
    Reviewed-on: https://gerrit.openafs.org/13752
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-on: https://gerrit.openafs.org/13787
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 6ab27a5cf3292a20ab807b7bc4dca43f305f14de
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri May 17 16:52:21 2019 +0200

    Make OpenAFS 1.8.4pre1
    
    Update version strings for the first 1.8.4 prerelease.
    
    Change-Id: I9aa05d7bce308780a1dc815341856e2291579039
    Reviewed-on: https://gerrit.openafs.org/13596
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@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 1bebe1155e850389ace35a3e4b3f7d77b58758bd
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Jun 14 09:30:14 2019 -0400

    Update NEWS for 1.8.4pre1
    
    Release notes for the OpenAFS 1.8.4 prerelease 1.
    
    Change-Id: I3976919660ff6a0eda82b71806e116f4322fb38a
    Reviewed-on: https://gerrit.openafs.org/13643
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a6ee134f7f5da47022145bdb4a8bceff08414465
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Fri Jul 5 08:23:10 2019 -0600

    libadmin: overlap warning in strcpy with gcc9
    
    GCC 9 with --enable-checking produces a new warning/error in
    afs_utilAdmin.c associated with a strcpy with the potential of an
    overlap.  The index used is signed which triggers the new warning. The
    source and target of the strcpy are contained within the same higher
    level structure.
    
    Change the variable 'index' from signed to unsigned to resolve the
    warning/error. Change the variable 'total' in the same structure to
    unsigned to be consistent with it's usage with 'index'.
    
    Reviewed-on: https://gerrit.openafs.org/13660
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 79dffe29c8a0ec55c4231a18077efdfa7c1edf53)
    
    Change-Id: I19a192ecea86314851e6889274eb030c5caff8cb
    Reviewed-on: https://gerrit.openafs.org/13724
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 033b66b0d688dd12f929475a0686149df63f8a70
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Oct 30 15:41:22 2018 -0500

    aklog: Avoid misleading AFSCELL message
    
    Currently, if the AFSCELL environment variable is set, aklog (and
    other libauth-using utilities) print out a message when
    afsconf_GetLocalCell is called:
    
        Note: Operation is performed on cell env.example.com
    
    However, this message is also printed (with the AFSCELL cell) when
    aklog is given the -cell command-line argument, even though aklog
    actually uses the cell given on the command line. For example:
    
        $ AFSCELL=env.example.com aklog -cell cli.example.com -d
        Note: Operation is performed on cell env.example.com
        Authenticating to cell cli.example.com (server srv1.example.com).
        [...]
    
    libauth will normally not print the "Operation" message if we're not
    using the default cell, but it determines this by checking if someone
    called afsconf_GetCellInfo before calling afsconf_GetLocalCell. And
    currently, aklog calls afsconf_GetLocalCell before
    afsconf_GetCellInfo, so the message gets printed because libauth has
    no way of knowing that we're actually using a different cell.
    
    klog gets around this by making an additional ignored call to
    afsconf_GetCellInfo before afsconf_GetLocalCell, but we can fix this
    in aklog by just changing the order of the calls. So, just call
    afsconf_GetCellInfo first; if we're using the local cell, we can just
    give a NULL cell parameter, instead of looking up the local cellname
    first.
    
    Reviewed-on: https://gerrit.openafs.org/13371
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 877d9d79a32b9e81911cb567f844b11c693229f0)
    
    Change-Id: I67350be8c25fb93975442175a64098123503b40c
    Reviewed-on: https://gerrit.openafs.org/13676
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 61e3663a18899898bef8c95e804cf6980651fbf5
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Mar 25 16:33:39 2019 -0500

    afs: Avoid non-dir ENOENT errors in afs_lookup
    
    Historically, there have been many subsystems in libafs that can
    generate ENOENT errors for a variety of reasons. In addition to the
    expected case where we lookup a name that doesn't exist, other
    scenarios have caused ENOENT error codes to be generated, such as:
    internal inconsistencies, I/O errors, or even abort codes from the
    network.
    
    When one of these scenarios cause an ENOENT error code in one of those
    situations during afs_lookup() when the target name does actually
    exist, it can be confusing to a user, or even result in incorrect
    application behavior. On Linux in particular, ENOENT results from a
    lookup are cached in negative dcache entries, and so can cause future
    lookups for the same name to yield ENOENT errors.
    
    Various commits have tried to avoid this abuse of the ENOENT error
    code, such as 2aa4cb04 (afs: Stop abusing ENOENT). But we cannot
    prevent receiving ENOENT abort codes from the network, and mistakes in
    the future may cause more scenarios incorrectly yielding ENOENTs.
    
    However, in afs_lookup, we do know that legitimate ENOENT errors can
    only occur in one situation: when we have a valid directory blob, and the
    afs_dir_Lookup() operation itself returns an ENOENT error for the
    target name. For all other areas of afs_lookup(), we know that an
    ENOENT error is not legitimate, since we may not be sure if the target
    name exists or not.
    
    So to proactively avoid incorrect ENOENT results, prevent afs_lookup
    from returning ENOENT, except in the specific code path where
    afs_dir_Lookup is called.
    
    Reviewed-on: https://gerrit.openafs.org/13537
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 5f48367f2bd5bf1c0e689c79508177b649b9113b)
    
    Change-Id: I2698c26d7b75146d92e1763d49dce135ad66f672
    Reviewed-on: https://gerrit.openafs.org/13692
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit bb886044d8d2b309ed5d0bd6f3d0c7c71909d6c8
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Wed May 22 22:50:00 2019 -0400

    auth: make PGetTokens2 work with 3-char cellnames
    
    PGetTokens2 accepts two different types of input:
    - an integer 'iterator' to request the nth token set for a user
    - a string cellname to request the user's token set for that cell
    
    Unfortunately, it distinguishes between these by assuming if the input
    length is sizeof(afs_int32) (4 bytes), it must be an integer.  This
    assumption is incorrect if the cellname is three (3) characters long
    plus a nul terminator.
    
    The result is that the cellname string is interpreted as a very large
    "n"; the subsequent search for the user's "very-large-nth-token" fails,
    making it appear that the user has no valid token for this cell.
    
    Improve on this heuristic by double-checking any putative integer input.
    If it is actually a 3-character string, then process the input as a
    cellname instead.
    
    Introduced by commit 5ec5ad5dcca84e99e5f55987cc4f787cd482fdde 'New
    GetToken pioctl'.
    
    While here, add doxygen comments.
    
    Reviewed-on: https://gerrit.openafs.org/13599
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit b0278994826f6bd1dfebc39f26282b8fbdadf1a0)
    
    Change-Id: Ib64749d65f03fc564b1d987b426832442be8d5bd
    Reviewed-on: https://gerrit.openafs.org/13679
    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 5b0ca2e4ebdd7f86c52926700099e3654f826ccc
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Sat Nov 3 01:04:43 2018 -0500

    ptserver: Check for -restricted in SPR_Delete
    
    Currently, all prdb write operations, except for SPR_Delete, will fail
    with PRPERM if called by a non-system:administrators caller while
    restricted mode is active.  SPR_Delete is missing this check, and so
    is not affected by the -restricted option.
    
    Fix this by inserting the same check for -restricted as all other code
    paths that check for -restricted.
    
    Reviewed-on: https://gerrit.openafs.org/13374
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 2e556c0f23ae439c804352cf51fcf30878b03c7a)
    
    Change-Id: I9a31cf4e6490aa13dc0c239d2660fc146553ee75
    Reviewed-on: https://gerrit.openafs.org/13688
    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>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit d47904684afb8402b692c9f7a4bb5f32cc3da5d7
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Sat Nov 3 00:58:58 2018 -0500

    ptserver: Fix AccessOK -restricted for SYSADMINID
    
    According to the documentation, as well as other code paths that check
    for -restricted, the -restricted option does not affect members of
    system:administrators. Currently, though, AccessOK only bypasses the
    -restricted check if the caller is SYSADMINID itself (i.e. localauth).
    
    Fix AccessOK to only do the -restricted checks if the caller is not in
    system:administrators, to match the documentation as well as other
    ptserver operations.
    
    Reviewed-on: https://gerrit.openafs.org/13373
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3a8fa4ecd65d5d743fdc573c9f0f261aee2063b6)
    
    Change-Id: I786830efab229a50a521daf3efc624e949475030
    Reviewed-on: https://gerrit.openafs.org/13687
    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>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a33468b8d596fa45224b447bde90e3606a2fd5b9
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Oct 30 14:29:24 2018 -0500

    ptserver: Fix AccessOK -restricted for addToGroup
    
    The function AccessOK is used by all of ptserver RPC handlers that
    need to do an authorization check, and the last two arguments are set
    as such:
    
    - When adding a member to a group, 'mem' is PRP_ADD_MEM and 'any' is
      PRP_ADD_ANY
    
    - When removing a member from a group, 'mem' is PRP_REMOVE_MEM and
      'any' is 0
    
    - When modifying an entry (setFieldsEntry) or modifying some global
      database fields, 'mem' and 'any' are both set to 0
    
    - When reading an entry and not modifying it, 'mem' and/or 'any' are
      set to other values (depending on if we're checking membership,
      examining the entry itself, etc)
    
    Commit 93ece98c (ptserver-restricted-mode-20050415) added a check to
    AccessOK to make it return false for -restricted mode when we are
    adding a member to a group, or when 'mem' and 'any' are both 0. This
    didn't catch the case when we are removing a member from a group,
    though, when 'mem' is PRP_REMOVE_MEM.
    
    It looks like commit a614a8d9 (ptutils-restricted-accessok-20081025)
    tried to fix this by adding a check for PRP_REMOVE_MEM, but it also
    required 'any' to be set to 0 for the conditional to succeed. This is
    true when removing a member from a group, but when adding a member to
    a group, 'any' is PRP_ADD_ANY, and so this check fails.
    
    This means that currently, when restricted mode is turned on,
    non-admins can still run addToGroup and setFieldsEntry successfully.
    
    Fix this by checking for PRP_ADD_MEM/PRP_REMOVE_MEM separately from
    checking if 'mem'/'any' are set to 0. Break up this conditional into
    separate if() statements with comments to try to make the checks
    more clear.
    
    Reviewed-on: https://gerrit.openafs.org/13370
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit dfc78d533ef64c8d6daf134e2a0f67c5c16f7369)
    
    Change-Id: I7f53570b42e2700a33dd5e72a31f6f7f8b876e79
    Reviewed-on: https://gerrit.openafs.org/13686
    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>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 8733253e2f61bf33a2fea5724b7cd6a8de50a10f
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Wed May 22 23:03:11 2019 -0400

    auth: eliminate pointless retries in ktc_ListTokensEx
    
    ktc_ListTokensEx is an iterator to provide the names of each cell for
    which a user has a token set.  It does this by looking for the 1 through
    nth token set for a given user.  However, as currently implemented,
    it always continues searching up to the 100x safety limit even when
    there are no more token sets for the user.
    
    Instead, return immediately when VIOC_GETTOK2 returns EDOM (no more
    tokens for this user).
    
    Introduced by commit a86ad262d2a8be36f43ab0885a84dde37ddfc464 'auth: Add
    the ktc_ListTokensEx function'.
    
    Reviewed-on: https://gerrit.openafs.org/13598
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 95ae30c30d98a3219fd021e0ed83200c1b6c266f)
    
    Change-Id: Ib0489b78b92861ae25b625b3054caf68f3b0a074
    Reviewed-on: https://gerrit.openafs.org/13678
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 1e6c4502de6bd8d6201ee7042a364a8a04e577d6
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Oct 25 10:27:41 2018 -0400

    viced: correct option parsing for -vlru*, -novbc
    
    Commit a5effd9f1011aa319fdf432c67aec604053b8656 "viced: Use libcmd for
    command line options" modernized the option parsing for (da)fileserver,
    but introduced a few errors for the following options:
    
    -vlruthresh <nn>
    -vlruinterval <nn>
    -vlrumax <nn>
    -novbc
    
    Correct the errors.
    
    Reviewed-on: https://gerrit.openafs.org/13365
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit d058acb354cab9856303cc341a1f439e4f7f3454)
    
    Change-Id: I5eceb3cc77cfca5c9ec68efdbaabd069c3690c5a
    Reviewed-on: https://gerrit.openafs.org/13680
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5d84f2a10f61e8b68b4bff18784efeb91845eef8
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Tue Jun 25 10:40:53 2019 -0600

    util: serverLog using memory after free
    
    clang's scan-build detected a "use of memory after it is freed"
    condition.
    
    The function OpenLogFile frees the variable ourName before creating a
    duplicate of the name passed to it.  However there is a call that uses
    ourName as the parameter: OpenLogFile(ourName).  This results in freeing
    ourName then doing a strdup of the same memory location.
    
    Test the passed parameter and if it's the same as ourName already skip
    the free and strdup.
    
    This bug was introduced in commit
        340ec2f79208ee21c3130c4b1c13995947ce426c
        "util: allocate log filename buffers"
    
    Reviewed-on: https://gerrit.openafs.org/13659
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f5f59cd8d336b153e2b762bb7afd16e6ab1b1ee2)
    
    Change-Id: Ia1ae1144493fa682595b365324322d8d273c0cbb
    Reviewed-on: https://gerrit.openafs.org/13675
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7a613798620f16998b1f8dd636f3bb3ad7a541e1
Author: khm <khm@sciops.net>
Date:   Tue Jun 25 12:51:21 2019 -0700

    add dkms dependency in Red Hat unit file
    
    Currently, there is no explicit relationship between OpenAFS and dkms.
    If dkms needs to rebuild the kernel module, OpenAFS will fail to mount
    because modprobe will not load the module.  This change specifies that
    OpenAFS should run after dkms if dkms is present.
    
    Reviewed-on: https://gerrit.openafs.org/13654
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
    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 fbe2a03aa69bc19768302685d902a25e4d6e157a)
    
    Change-Id: If08df50128a29642e9cdfc311811b99a7889a158
    Reviewed-on: https://gerrit.openafs.org/13674
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: khm <khm@sciops.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 27a21f35a81c3671c9752edfd4fa502f5fc281e0
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Wed May 22 22:52:10 2019 -0400

    pioctl: limit fruitless token searches
    
    getNthCell searches the afs_users table for the nth token set belonging to a
    given user.  However, it is impossible for a user to have more than one
    token set per cell.  If the caller specifies a number greater than the
    total number of cells this cache manager knows about, we know the search
    will be fruitless.
    
    Instead, return early in this case, avoiding both the lock and the
    search.
    
    Reviewed-on: https://gerrit.openafs.org/13597
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Tested-by: Mark Vitale <mvitale@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 fc7e1700fe84f623fb9163466d24226df00b1a2c)
    
    Change-Id: Idfda263af173a7ca081fcea3eef0ec4a63e66eda
    Reviewed-on: https://gerrit.openafs.org/13639
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 22c9d9f8916cef5eacc9c930fc25c34c24de17e4
Author: Pat Riehecky <riehecky@fnal.gov>
Date:   Fri Jun 1 16:33:37 2018 -0500

    Fix static expressions in conditionals
    
    The conditions in these if statements are always true (or always false).
    Remove the check in cmdebug.c, as it is unnecessary, and fix the check
    in vlclient.c to actually check for a valid voltype. (via cppcheck)
    
    Reviewed-on: https://gerrit.openafs.org/13158
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    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 5cd5cd9fa8754a5af346fa6a392363b046316c75)
    
    Change-Id: Ie3a2d6bfc99d1b5adf0524afc29dac30b655d04d
    Reviewed-on: https://gerrit.openafs.org/13638
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 277d69d4358f94bf176268a5a98da39bf5277589
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Fri Apr 19 10:38:24 2019 -0500

    afs: add a file-level comment to afs_osidnlc.c
    
    This file doesn't currently do a great job of telling the reader what
    it's used for.  Let's give them a hint, especially for the expansion
    of "DNLC".
    
    Reviewed-on: https://gerrit.openafs.org/13557
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3a5ab19fe04058e002bfea90f8b64fab4676de67)
    
    Change-Id: I41c53e5a37cc2da8fa0578a9c5db476530103981
    Reviewed-on: https://gerrit.openafs.org/13650
    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 7487d15ca5023f465a8bbda05bf6f68a5a6d5eb3
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Wed Jun 12 23:44:32 2019 -0400

    afs: remove bogus comment from afs_IsTokenExpired
    
    Remove an incorrect comment, introduced with commit
    adf2e6e827c6caf55247c5e63b88775393156ae5 'Unix CM: Generalise token
    storage'.
    
    No functional change is incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/13640
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 54c34d32e884a5bfb2352e7c8767d743ef3e4647)
    
    Change-Id: I00f91947f9cd64694b2021e484b33dc9074fee94
    Reviewed-on: https://gerrit.openafs.org/13651
    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 90a0796d18d99e893ec4bad8800efe1e398c5ea3
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu May 16 20:01:17 2019 -0500

    Use the ppc64le_linuxXX sysname for ppc64le builds
    
    Commit 191e18eb (Open ppc64le_linux sysname space) added the
    ppc64le_linux26 sysname, but it still must be manually specified when
    running on ppc64le. Use the ppc64le_linux26 by default on ppc64le, so
    we can compile without needing to specify an explicit sysname.
    
    Reviewed-on: https://gerrit.openafs.org/13593
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4b6a4ff31a4197504bbcf2d4c14c24dee672d40e)
    
    Change-Id: Icf8f8b42c499dc42bf5d637dae5ad3e261e68512
    Reviewed-on: https://gerrit.openafs.org/13637
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 4d7a397c03288847539fd1428d9bdfcbc1f59cbe
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Jan 16 23:44:58 2019 -0600

    LINUX: Propagate afs_linux_readdir BlobScan errors
    
    In afs_linux_readdir, if we detect an error code from BlobScan,
    currently we 'break' out of the current while() loop. But right after
    this loop, we reset 'code' to 0, ignoring the error we just got from
    BlobScan, and acting like we just reached the end of the directory.
    
    This means that if BlobScan could not process the given directory at
    all, we'll just fail to iterate through some of the entries in the
    given directory, and not report an error.
    
    To fix this, process errors from BlobScan like we do for
    afs_dir_GetVerifiedBlob, and return an error code and log a message
    about the corrupted dir.
    
    Reviewed-on: https://gerrit.openafs.org/13430
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 63f015d05293cd853dbd44e5115e6b378644dfb6)
    
    Change-Id: Ia25bcfdb70cdb1dd1a7ce0efb84ef76beb78b247
    Reviewed-on: https://gerrit.openafs.org/13591
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b924e7827dbca97accb6a90da24264858e9a2964
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Jan 16 23:46:34 2019 -0600

    afs: Throw EIO in DRead on empty dir blob
    
    DRead currently returns ENOENT if we try to read a page beyond the end
    of the given dir blob. We do this to indicate we've hit EOF, but we do
    this even if the dir blob is completely empty (which is not a valid
    dir blob).
    
    If a dir blob in the cache is truncated due to cache corruption
    issues, that means we'll indicate a normal EOF condition in that
    directory for most code paths. If someone is trying to list the
    directory's entries, for instance, we'll just return that there are no
    entries in the dir, even though the dir itself is just invalid.
    
    To avoid this for at least some cases, return an EIO error instead if
    the dir blob is completely empty.
    
    Reviewed-on: https://gerrit.openafs.org/13429
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 86d04ea70fd2e99606b1d1b5b68d980d92e7a3cd)
    
    Change-Id: I067aae1f949051169225a3cc0bdba35ad76a4ec2
    Reviewed-on: https://gerrit.openafs.org/13590
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 02b6ba418568f294a9088b6df3e90bbdf35c8398
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu May 16 16:12:47 2019 -0500

    Do not define AFS_SYSCALL for ppc64le_linux26
    
    AFS_SYSCALL is defined to the syscall number we can use for a certain
    platform (for pioctls and other AFS-specific kernel calls). On many
    modern platforms, such as Linux, we don't use direct syscalls anymore,
    instead routing our AFS-specific syscalls through an ioctl, and
    AFS_SYSCALL is just used as a fallback for compatibility for older
    OpenAFS releases that might still be using the syscall.
    
    For new platforms, we have no need for this compatibility code path,
    since there is no existing code we might need to be compatible with.
    We should avoid defining AFS_SYSCALL for those, so we can avoid
    manually-issuing syscalls in more cases. The ppc64le_linux26 platform
    is a very new platform (introduced in 191e18eb "Open ppc64le_linux
    sysname space"), and so should not have AFS_SYSCALL defined.
    
    So, remove AFS_SYSCALL from ppc64le_linux26's param.h.
    
    Reviewed-on: https://gerrit.openafs.org/13592
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 46563f929a851032d785634763963808d6e2bfeb)
    
    Change-Id: Ib161b50a9156d3790134de4e1a8e66a1356e0fb6
    Reviewed-on: https://gerrit.openafs.org/13636
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2f6227540f7954f58387fba4934a0f83d1f4d536
Author: Nathaniel Filardo <nwfilardo@gmail.com>
Date:   Wed May 1 23:01:51 2019 +0100

    Open ppc64le_linux sysname space
    
    While here, add config/param.ppc64le_linux26.h; it's just like
    ppc64_linux26.h, except not AFSBIG_ENDIAN.
    
    Reviewed-on: https://gerrit.openafs.org/13562
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Jeffrey Altman <jaltman@auristor.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 191e18ebcee3698a76b55912de0a41111c384128)
    
    Change-Id: I9852da2a376a24269ff720a4da4881dae83036cd
    Reviewed-on: https://gerrit.openafs.org/13589
    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 72d0e5a7c92fe7f68857af5828ed7d717b2d694d
Author: Cheyenne Wills <cwills@sinenomine.net>
Date:   Thu Apr 18 09:55:09 2019 -0600

    redhat: RHEL8 add elfutils-devel as build dependency for kernel module
    
    Building the kernel modules under RHEL8 produces the following error
    message:
        Makefile:952: *** "Cannot generate ORC metadata for
         CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or
         elfutils-libelf-devel".  Stop.
    
    Add elfutils-devel to the BuildRequires in the rpm spec when building
    rhel >= 8
    
    Add elfutils-devel to the BuildRequires in the rpm spec that
    openafs-kmodtool produces
    
    FIXES 134900
    
    Reviewed-on: https://gerrit.openafs.org/13560
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 13817774518ada28f5fe68e0d00ef5dd00b67b55)
    
    Change-Id: If4f453e6c459a2865626d4fd71bb47030e3deb58
    Reviewed-on: https://gerrit.openafs.org/13563
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-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>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c6c3a4038905169ab717e64775920147d6f34c3f
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Sep 28 14:55:56 2018 -0500

    afs: Raise osidnlc NCSIZE
    
    The currrent size of the osi DNLC is very small; only 300 entries.
    Raise it to 4096 entries, to give it some chance of actually helping.
    
    In the future, of course, this should be runtime configurable, and we
    should also raise the hash table size. For now, just raise the number
    of entries without changing anything else, to try to make sure nothing
    breaks.
    
    With the hash size of 256, this means our hash chains will be at least
    16 items long. However, traversing even hundreds of hash items should
    still be better than frequently hitting the disk cache to find
    entries, and acquiring more locks, etc.
    
    Reviewed-on: https://gerrit.openafs.org/13531
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 12b46b6af778625a9c360dca61a59fcf30b76fd1)
    
    Change-Id: Ib4fd8bd01e2df22617e5a549d4ac76ba1d50b2fd
    Reviewed-on: https://gerrit.openafs.org/13559
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    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 934313678d2a01208a28fca669907f50a097b377
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Jan 17 00:04:36 2019 -0600

    dir: Honor non-ENOENT lookup errors
    
    Currently, several places in src/dir/dir.c assume that any error from
    a lower-level function (e.g. FindItem) means that the item we're
    looking for does not exist in that directory. But if we encountered
    some other error, that may not be the case; the directory blob may be
    corrupt, we may have encountered some I/O error, etc.
    
    To detect cases like this, return the actual error code from FindItem
    &c, instead of always reporting ENOENT. For the code paths that are
    actually specifically looking for if the target exists (in
    afs_dir_Create), change our checks to specifically check for ENOENT,
    and return any other error.
    
    Do the same thing for a few similar callers in viced/afsfileprocs.c,
    as well.
    
    FIXES 134904
    
    Reviewed-on: https://gerrit.openafs.org/13431
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    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 0b3bd1b7cdc88ba62c8cd540e8628faa84e33cf9)
    
    Change-Id: Ia81ff85821c1987b97390a683f1d442ca70db41e
    Reviewed-on: https://gerrit.openafs.org/13543
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    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 e586e86add4e4bf42f7af5b6d570fbe9b49fc415
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Mar 21 15:24:06 2019 -0500

    LINUX: Avoid lookup ENOENT on fatal signals
    
    Various Linux kernel operations on various Linux kernel versions can
    fail if the current process has a pending fatal signal (i.e. SIGKILL),
    including reads and writes to our local disk cache. Depending on what
    and when something fails because of this, some parts of libafs throw
    an ENOENT error, which may propagate up to callers, and be returned
    from afs_lookup(). Notably this can happen via some functions in
    src/dir/dir.c, and previously was possible with some code paths before
    they were fixed by commit 2aa4cb04 (afs: Stop abusing ENOENT).
    
    For the most part, the exact error given to the userspace caller
    doesn't matter, since the process will die as soon as we return to
    userspace. However, for ENOENT errors specifically for lookups, we
    interpret this to mean that the target filename is known to not exist,
    and so we create a negative dentry for that name, which is cached.
    Future lookups for that filename will then result in ENOENT before any
    AFS functions are called.
    
    The lingering abuses of the ENOENT error code should be removed from
    libafs entirely, but as an extra layer of safety, we can just avoid
    returning ENOENT from lookups if the current process has a pending
    fatal signal. So to do that, change all afs_lookup() callers in
    src/afs/LINUX to translate ENOENT to EINTR if we have a pending fatal
    signal. If fatal_signal_pending() is not available, then we don't do
    this translation.
    
    FIXES 134904
    
    Reviewed-on: https://gerrit.openafs.org/13530
    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 8b6ae2893b517bd4e008cae94acff70abe4d2227)
    
    Change-Id: I8bf1b24c97ed74b0b457d79f48b2f40416c1d37e
    Reviewed-on: https://gerrit.openafs.org/13542
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@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 e80e9e6ea6f2cedf79b92ea33eb214931bf808be
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Sat Mar 2 15:58:00 2019 -0600

    afs: Cleanup state on rxfs_*Init errors
    
    Currently, rxfs_storeInit and rxfs_fetchInit return early if they
    encounter an error while starting the relevant fetch/store RPC (e.g.
    StartRXAFS_FetchData64). In this scenario, they osi_FreeSmallSpace
    their rock before returning, but they never go through their
    destructor to free the contents of the rock
    (rxfs_storeDestroy/rxfs_fetchDestroy), leaking any resources inside
    that have already been initialized.
    
    The only thing that could have been initialized by this point is
    v->call, so hitting this condition means we leak an Rx call, and means
    we can report the wrong error code (since we never go through
    rx_EndCall, we never look at the call's abort code). For
    rxfs_fetchInit, most code paths call rx_EndCall explicitly, except for
    the code path where StartRXAFS_FetchData64 itself fails.
    
    For both fetches and stores, it's difficult to hit this condition,
    because this requires that the StartRXAFS_* call fails, before we have
    sent or received any data from the wire. However, this can be hit if
    the call is already aborted before we use it, which can happen if the
    underlying connection has already been aborted by a connection abort.
    
    Before commit 0835d7c2 ("afs: make sure to call afs_Analyze after
    afs_Conn"), this was most easily hit by trying to fetch data with a
    bad security object (for example, with expired credentials). After the
    first fetch failed due to a connection abort (e.g. RXKADEXPIRED),
    afs_GetDCache would retry the fetch with the same connection, and
    StartRXAFS_FetchData64 would fail because the connection and call were
    already aborted. In this case, we'd leak the Rx call, and we would
    throw an RXGEN_CC_MARSHAL error (-450), instead of the correct
    RXKADEXPIRED error. This causes libafs to report that the target
    server as unreachable, due to the negative error code.
    
    With commit 0835d7c2, this doesn't happen because we call afs_Analyze
    before retrying the fetch, which detects the invalid credentials and
    forces creating a new connetion object. However, this situation should
    still be possible if a different call on the same connection triggered
    a connection-level abort before we called StartRXAFS_FetchData64.
    
    To fix this and ensure that we don't leak Rx calls, explicitly call
    rxfs_storeDestroy/rxfs_fetchDestroy in this error case, before
    returning from rxfs_storeInit/rxfs_fetchInit.
    
    Thanks to yadayada@in.ibm.com for reporting a related issue and
    providing analysis.
    
    Reviewed-on: https://gerrit.openafs.org/13510
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 11cc0a3c4e0d76f1650596bd1568f01367ab5be2)
    
    Change-Id: I3c2d66a5a6128bb8b403dfa6ea7c37e32bd2f156
    Reviewed-on: https://gerrit.openafs.org/13517
    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 f8f10315d9ebecf32b5537a82aedde4c24b28d62
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Aug 9 20:06:05 2017 -0500

    SOLARIS: Switch non-embedded vnodes for Solaris 11
    
    Newer updates to Solaris 11 have been including several changes to the
    vnode struct. Since we embed a vnode in our struct vcache, our kernel
    module must be recompiled for any such change in order for the openafs
    client to work at all.
    
    To avoid the need for this, switch Solaris to using a non-embedded
    vnode in our struct vcache. Follow a similar technique as is used in
    DARWIN and XBSD, where we allocate a vnode in osi_AttachVnode, and
    free it in afs_FlushVCache.
    
    Reviewed-on: https://gerrit.openafs.org/12696
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2aafe7df403e6a848185d15495139c07bced2758)
    
    Change-Id: I2f5b3e2b2b908ea9815fd7735a1abed511cec9cb
    Reviewed-on: https://gerrit.openafs.org/13528
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@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 f9b4f9d63f5c62233a031a7e9d16fade235577eb
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Aug 9 20:06:03 2017 -0500

    SOLARIS: Fix vnode/vcache casts
    
    A few places were using vnodes and vcaches interchangeably. This is
    incorrect, since they may not always be the same thing if we stop
    embedding vnodes directly in vcaches Fix these to properly go through
    AFSTOV/VTOAFS to convert between vcaches and vnodes.
    
    Reviewed-on: https://gerrit.openafs.org/12695
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    (cherry picked from commit a6499e0b086d964f3fcc65fe4be31edc33015061)
    
    Change-Id: Ia6889966a7c595786f0a273b4c2a5a63fe60ddd3
    Reviewed-on: https://gerrit.openafs.org/13527
    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 7328cb0b000c61672ab75cda14ba0e42839adb03
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Aug 9 20:06:00 2017 -0500

    SOLARIS: Accept vnodes in vnode ops
    
    Currently, our vnode op callbacks look like this:
    
        int gafs_fsync(struct vcache *avc, afs_ucred_t *acred);
    
    And a pointer to gafs_fsync is given directly to Solaris. This cannot
    be correct, since 'struct vcache' is an OpenAFS type, so Solaris
    cannot possibly give us a 'struct vcache'. The actual correct
    signature for such a function is something like this:
    
        int gafs_fsync(struct vnode *vp, afs_ucred_t *acred);
    
    And then the 'gafs_fsync' function is supposed to translate 'vp' into
    a vcache.
    
    This works on Solaris right now because we embed the vnode as the
    first member in our vcache, and so a pointer to a vnode is also a
    pointer to a vcache. However, this would break if we ever change
    Solaris vcaches to use a non-embedded vnode (like on some other
    platforms). And even now, this causes a lot of warnings in
    osi_vnodeops.c, since the function signatures are wrong for our vnode
    callbacks.
    
    So to fix this, change all of these functions to accept a 'struct
    vnode', and translate to/from vnodes and vcaches appropriately.
    
    Reviewed-on: https://gerrit.openafs.org/12694
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    (cherry picked from commit 9a2b11747ce355d9adc8a5a646c88f8f3d9765ee)
    
    Change-Id: I85cee787e26886596a10c6b9a02f33f2bf28d65d
    Reviewed-on: https://gerrit.openafs.org/13526
    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 8089741c909e84020e644ac05c58d3a4bb9cc1e2
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Aug 9 20:05:56 2017 -0500

    SOLARIS: Reorder definitions for vnode callbacks
    
    Currently, many of the functions for our vnode ops are
    forward-declared, right before they are referenced in the relevant
    vnop template array. Move the function definitions to before the
    references, so we can simply get rid of the forward declarations.
    
    These functions are also all only referenced in this file, so declare
    them 'static'.
    
    Reviewed-on: https://gerrit.openafs.org/12693
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    (cherry picked from commit 41a22dbf719629e0977fa963b3d19c6594d0d729)
    
    Change-Id: I5840fef98d2ce15525c4981636fad6e5990cbad2
    Reviewed-on: https://gerrit.openafs.org/13525
    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 599cf163d10d775a18e2b8a947ad3abd6d1a4021
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Aug 9 20:05:50 2017 -0500

    SOLARIS: Clean up some osi_vnodeops func defs
    
    Currently, the Solaris osi_vnodeops.c file forward-declares many of
    its function definitions, but doesn't declare the arguments. For
    example:
    
        int afs_nfsrdwr();
    
    This avoids type-checking for a few functions that are called before
    they are defined in this file. Furthermore, many of these functions
    are only used within this file, but are not declared 'static'.
    
    To fix this weirdness, remove most of the forward declarations (most
    are not referenced until the function is defined), and fully declare
    the rest. Declare functions 'static' that are not referenced outside
    of this file.
    
    This commit only changes functions up to the 'afs_getsecattr'
    definition. The rest of the file will be fixed in a future commit.
    
    Reviewed-on: https://gerrit.openafs.org/12692
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    (cherry picked from commit aa46af6ae35e4f026a8ed94012c3bc18c954de23)
    
    Change-Id: I33f445ed253f1991896afff33e7cc14bf5e50b18
    Reviewed-on: https://gerrit.openafs.org/13524
    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 b02434f5c6cab1f317c9fb6652e31a20195c20d8
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Fri Jan 18 17:05:49 2019 -0500

    LINUX: correct include for ktime_get_coarse_real_ts64()
    
    The include for the ktime_get_coarse_real_ts64() autoconf test is
    incorrect; ktime_get_coarse_real_ts64() has always been in linux/ktime.h
    (via #include timekeeping.h), not linux/time.h.
    
    This autoconf test still ran correctly because the OpenAFS build was
    inadvertently picking up ktime.h via the default autoconf include path.
    Therefore, this commit is needed only to provide documentation and
    clarity to future maintainers.
    
    Introduced as a cut-n-paste error (from the current_kernel_time test)
    with commit 3c454b39d04f4886536267c211171dae30dc0344 for Linux 4.20.
    
    Reviewed-on: https://gerrit.openafs.org/13437
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 10b02075a262dbe802266ea4bcac3936dff5dd23)
    
    Change-Id: Ide1adcc8536ed8829361e0961da96949099d5caf
    Reviewed-on: https://gerrit.openafs.org/13523
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 390bb188b956d43f569ca10909d0a968355cddb9
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Fri Sep 28 17:12:40 2018 -0500

    afs: Remove afs_xosi
    
    Since OpenAFS 1.0, all platforms in libafs have a lock called
    afs_xosi, which is acquired and released around calls like VOP_GETATTR
    on cache files. However, this lock doesn't appear to protect anything;
    on all platforms, the code that runs while the lock is held uses only
    calls VOP_GETATTR and accesses local variables (aside from
    afs_osi_cred, which we use similarly in many other places). The
    purpose of the lock has never been documented, and is not mentioned at
    all in the afs_rwlocks text file.
    
    The comment by the afs_xosi lock declaration suggests that the lock
    was originally introduced to protect access to 'tvattr', which perhaps
    was a global variable in the past. All uses of 'tvattr' are local now,
    though, so protecting access to it doesn't make any sense.
    
    So, remove afs_xosi, to remove the unnecessary serialization of
    VOP_GETATTR calls.
    
    Reviewed-on: https://gerrit.openafs.org/13350
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d75bc6370f625479a67c7c0a50cce23c4d4a4ce5)
    
    Change-Id: I33dc7935872cf071c4221d46cbb458e1f77185a2
    Reviewed-on: https://gerrit.openafs.org/13529
    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 1a4e785f0d92f6e628a79bb8919085bfaa279fe6
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Mar 16 09:25:18 2018 -0500

    afs: make sure to call afs_Analyze after afs_Conn
    
    The afs_Conn function is used to pick a connection for a given RPC. The
    RPC is normally wrapped within a do-while loop which calls afs_Analyze
    to handle the RPC code and manage the server connection references.
    Among other things, afs_Analyze can mark the server as down, blacklist
    idle servers, etc.
    
    There are some special cases in which we break out of this do-while loop
    early, by putting the connection reference given by afs_Conn and then
    jumping out of the loop.
    
    In these cases, be sure to call afs_Analyze to put the server connection
    we got from afs_Conn, and to handle the RPC return code, possibly
    marking the server as down or blacklisted.
    
    Reviewed-on: https://gerrit.openafs.org/13288
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0835d7c2a183f896096684df06258aefd297f080)
    
    Change-Id: Ic5648dbd250c33988d64284b906b3829a396a2cb
    Reviewed-on: https://gerrit.openafs.org/13511
    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>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 74054de1bc30cee1bdc9d0c350230231663bcd85
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Sep 6 13:42:11 2018 -0500

    Run ctfconvert/ctfmerge for all objects
    
    Commit 88cb536f (autoconf: detect ctf-tools and add ctf to libafs)
    introduced running ctfconvert and ctfmerge for libafs on Solaris, but
    didn't add any CTF data for userspace code. This commit causes the
    same commands to be run for every binary that we build (if the ctf
    tools are available).
    
    To accomplish this, also refactor how we run ctfconvert and ctfmerge.
    The approach in commit 88cb536f would require us to modify the
    makefile rule for every executable to run RUN_CTFCONVERT and
    RUN_CTFMERGE, which is somewhat impractical. So instead in this
    commit, we modify all of our *_CCRULE and *_LDRULE variables to wrap
    the compiler invocation with the new CC_WRAPPER script. This means our
    *RULE variables change from something like this:
    
        FOO_CCRULE = $(RUN_CC) $(CC) $(XXX_FLAGS) -o $@
    
    to something like this:
    
        FOO_CCRULE = $(RUN_CC) $(CC_WRAPPER) $(CC) $(XXX_FLAGS) -o $@
    
    CC_WRAPPER expands to the script src/config/cc-wrapper, which just
    runs ctfconvert or ctfmerge on the relevant files after the
    compiler/linker runs. If the CTF tools are not configured, CC_WRAPPER
    expands to nothing, to limit our impact on other platforms.
    
    This commit was developed in collaboration with
    mbarbosa@sinenomine.net.
    
    Reviewed-on: https://gerrit.openafs.org/13308
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c1d39153da00d5525b2f7874b2d214a7f1b1bb86)
    
    Change-Id: Ic357293a946f0759aa032f7c93b4b56e74e9209a
    Reviewed-on: https://gerrit.openafs.org/13487
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 98e07b561279bf5d9f39ccb5f43e605cd3e86d0e
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu May 31 09:46:56 2018 -0300

    autoconf: do not reference the missing script
    
    Currently, OpenAFS does not use automake. As a result, the missing script
    is not copied to the build-tools directory. Since this script is not
    present in the tree, am_missing_run is not initialized. Unfortunately,
    the current version still has a few references to this variable. In order
    to preserve a similar behavior, this commit replaces these references by
    AC_ERROR.
    
    While we are changing these, remove the AC_CHECK_PROGS calls for AR and
    STRIP, since libtool already checks these for us.
    
    Reviewed-on: https://gerrit.openafs.org/12982
    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: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 9d3ef9337fafe5dcf3865d3aced290be0f887c11)
    
    Change-Id: Ibb2fa93e73f303cd68e9e030f1631476f1da329c
    Reviewed-on: https://gerrit.openafs.org/13486
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@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 36282f9cae0dafa1f13aa54f704a4d37d92a0799
Author: Peter Foley <pefoley2@pefoley.com>
Date:   Mon Feb 29 16:39:14 2016 -0500

    Remove obsolete retsigtype
    
    Only relevent for pre-c89 K&R compilers.
    
    [mmeffie@sinenomine.net: avoid changes to src/external]
    
    Reviewed-on: https://gerrit.openafs.org/12203
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit a9644daa965fbf316943a07ad985b8ead2f4f31d)
    
    Change-Id: I37f83e7d8a59d5ccffe8542f3c4090e667b48c16
    Reviewed-on: https://gerrit.openafs.org/13485
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@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 d281eb242414f58440dc44cf82d4fe7dc7830bc8
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Sat May 26 19:52:27 2018 -0400

    autoconf: reformat long lines
    
    The autoupdate tool was run to modernize the autoconf macros but
    generates very long lines. Manually reformat the long lines to make them
    more reasonable.
    
    Reviewed-on: https://gerrit.openafs.org/13125
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 451602a5e3a503d46eaecb3738d259e46023afcd)
    
    Change-Id: I19f16a66fdc6b33889f08e5a095b1f3209b01a3c
    Reviewed-on: https://gerrit.openafs.org/13484
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@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 c3eaace29ea446c9369af90eed274ece063e5bb0
Author: Peter Foley <pefoley2@pefoley.com>
Date:   Mon Feb 29 13:28:28 2016 -0500

    autoconf: autoupdate macros
    
    Run autoupdate on macros.
    
    [mmeffie@sinenomine.net: re-run autoupdate, no other edits]
    
    Reviewed-on: https://gerrit.openafs.org/12202
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    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 2e23fceec872795a39b915b73e48eb77a5d65afe)
    
    Change-Id: I27eac1f2b6e468382976d7866aa1f5e648727534
    Reviewed-on: https://gerrit.openafs.org/13483
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 426b5f17096c712dc0c88ae8ff0f745e6426d3b2
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Apr 20 11:47:57 2018 -0400

    autoconf: update curses.m4
    
    Replace the obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE/AC_LANG_PROGRAM
    in the curses check for the getmaxyx macro.
    
    This change was done manually instead of using autoupdate because the
    program prologue argument for this particular check is an m4 macro,
    which will not expand to code when autoupdate adds m4 quotes to the
    AC_LANG_PROGRAM arguments.
    
    Reviewed-on: https://gerrit.openafs.org/13021
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    (cherry picked from commit f9c584a794c6a4c5d03fa1ee7f1b2b5e1309e7ee)
    
    Change-Id: Ic0a1007f5a71496fd235eab6659a73e46393d317
    Reviewed-on: https://gerrit.openafs.org/13482
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit b3882518f65a14b4de9846c5d11814bea3d91d96
Author: Andrew Deason <adeason@dson.org>
Date:   Fri Sep 21 17:16:52 2018 -0500

    pthread.m4: Add missing 'test' to conditional
    
    Commit c5def62d (autoconf: update pthread checks) accidentally omitted
    a 'test' in one of the conditionals. This causes an ugly error message
    during configure:
    
        checking for pthread_attr_init in -lpthread... yes
        ./configure[31043]: x-lpthread: not found [No such file or directory]
    
    Replace the missing 'test'.
    
    Reviewed-on: https://gerrit.openafs.org/13342
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 38a094137f067255c586dd5c85f3040d7a7c4486)
    
    Change-Id: Iaa7014c6ae58bd492930dbe4f39180111bacb67e
    Reviewed-on: https://gerrit.openafs.org/13595
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2771714dc485ed3ca70d66e538709ddf703f8ece
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Mon Apr 16 10:42:49 2018 -0400

    autoconf: update pthread checks
    
    Replace obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace shell
    if/then conditionals with AS_IF macros.  Reformat indentation and
    quoting.
    
    This change was done manually, since autoupdate copes poorly with the
    old, nested AC_TRY_COMPILE macros.
    
    Reviewed-on: https://gerrit.openafs.org/13018
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    (cherry picked from commit c5def62d7be4891f534b753374acbf5b524701eb)
    
    Change-Id: I5cc8e5712dd742d20be92d04728eddbecf9c216c
    Reviewed-on: https://gerrit.openafs.org/13481
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit bcce556cb0f71ba00a97c87a529e95ebed0cbc85
Author: Peter Foley <pefoley2@pefoley.com>
Date:   Mon Feb 29 13:19:01 2016 -0500

    autoconf: updates and cleanup
    
    Update autoconf macros to their modern equivalents, according to what
    the 'autoupdate' tool does. While we're here, remove automake references
    that aren't being used, and remove the obsolete AC_PROG_LIBTOOL in favor
    of AFS_LT_INIT.
    
    Reviewed-on: https://gerrit.openafs.org/12199
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 4706854f57043c8393baa922dd1974176e110a19)
    
    Change-Id: I9b3b8a15ac73484f60d16448abd8cce2e0334201
    Reviewed-on: https://gerrit.openafs.org/13480
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e93dfb1ad90dd7e6cb85783d27b4175d74bc40a0
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Jul 26 17:57:38 2018 -0500

    libuafs: Stop clobbering CFLAGS
    
    Currently, in the libuafs MakefileProto for every platform, CFLAGS is
    set to a bunch of flags, ignoring any CFLAGS set by the 'make'
    command-line provided by the user. Since most of the rest of the tree
    honors CFLAGS, it is confusing and can cause errors when src/libuafs
    ignore the user-set CFLAGS.
    
    One example of this breaking the build is when building RHEL RPMs for
    certain sub-architectures of the current machine. If you try to
    'rpmbuild --target=i686' on 32-bit x86 RHEL 5, we will build with
    -march=i686 in the CFLAGS, which will be used to build most objects
    and is used in our configure tests. As a result, our configure tests
    will say that gcc atomic intrinsics are available. But when we go to
    build libuafs objects, we will not have -march=i686 in our CFLAGS,
    which causes (on RHEL 5) gcc to default to building for i386, which
    does not have gcc atomic intrinsics available. This causes build
    errors like this:
    
        libuafs.a(rx.o): In function `rx_atomic_test_and_clear_bit':
        [...]/BUILD/openafs-1.8.0/src/rx/rx_atomic.h:462: undefined reference to `__sync_fetch_and_and_4'
    
    To fix this, change the libuafs MakefileProtos to not set CFLAGS
    directly; instead, set them in a new variable UAFS_CFLAGS.
    Makefile.common then pulls those flags into MODULE_CFLAGS, which is
    used in our *_CCRULE build rules.
    
    While we are here, also move the common set of CFLAGS set by each
    platform's MakefileProto into Makefile.common. Now, each MakefileProto
    only needs to set CFLAGS that are specific to that platform, which
    ends up being very few (since most platforms were using the exact same
    set of CFLAGS).
    
    Relevant issue identified and analyzed by mbarbosa@sinenomine.net.
    
    Reviewed-on: https://gerrit.openafs.org/13262
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ee66819a0c1a9efa98b76a1c18af6233bda1e233)
    
    Change-Id: Ia38d4701aeb4f690b12a6ffdbb42b8ec8c499486
    Reviewed-on: https://gerrit.openafs.org/13544
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 63a1ee4e238e20855aa63f31f490867c5d440f57
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Fri Oct 5 11:26:34 2018 -0400

    DARWIN: replace macro exported by automake
    
    Commit 4706854f57043c8393baa922dd1974176e110a19 removed automake
    references from the source tree. As a result, VERSION (exported by
    AM_INIT_AUTOMAKE and obtained from Autoconf's AC_INIT macro) is not
    available anymore. Unfortunately, a reference to this macro can be found
    in src/afs/DARWIN/osi_module.c. Consequently, builds on OS X fail with
    the following message:
    
        osi_module.c:144:32: error: use of undeclared identifier 'VERSION'
    
    To fix this problem, replace VERSION by PACKAGE_VERSION (defined by
    AC_INIT).
    
    Reviewed-on: https://gerrit.openafs.org/13354
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 07ed94cfd817dc5a4e2d2712570087388fe7828f)
    
    Change-Id: I14c6c803766ea959dfc6fa4804960c067fc9f16c
    Reviewed-on: https://gerrit.openafs.org/13584
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit eaba6c97533f6838d3c73e86d31da18aca4ac8ab
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Apr 1 12:57:42 2019 -0400

    doc: Remove one lingering reference to src/mcas
    
    Reviewed-on: https://gerrit.openafs.org/13539
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e02ae66c7eef1bfc5df9c3e9f2acde3bc3102390)
    
    Change-Id: Iba79e9f6b2908977a3ad43d802562f1cb8849d66
    Reviewed-on: https://gerrit.openafs.org/13558
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0637d1038e4ff174dbaf0a8a09490de1f08cb4fb
Author: Karl Behler <karl.behler@ipp.mpg.de>
Date:   Fri Mar 22 12:22:05 2019 +0100

    man-pages: create the man3 subdirectory in prep-noistall
    
    This should fix a build failure reported on the openafs-devel list
    today.
    
    Reviewed-on: https://gerrit.openafs.org/13533
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit e7ea4781f07b29f7f0fc0b5ba17303bd68022e54)
    
    Change-Id: I996aec343f80031c7118e7b6b0d829751a85e228
    Reviewed-on: https://gerrit.openafs.org/13535
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>