commit d25c8e83909f636f138ae983bd4280c3d284381a
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Tue Jan 2 10:39:58 2018 +0100

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

commit 82e943215d1a152d8a34ab81c44c62595ad86e82
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Jan 12 13:42:48 2018 +0100

    Update NEWS for 1.6.22.2
    
    Release notes for OpenAFS 1.6.22.2
    
    Change-Id: I6a994531cb14412cbfbe7e5fa881a1c2b65a4cf3
    Reviewed-on: https://gerrit.openafs.org/12869
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit ef5fe95fdf4e063daafcfee4435f0f9026bf9ada
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 20:26:46 2017 -0500

    LINUX: Avoid d_invalidate() during afs_ShakeLooseVCaches()
    
    With recent changes to d_invalidate's semantics (it returns void in Linux 3.11,
    and always returns success in RHEL 7.4), it has become increasingly clear that
    d_invalidate() is not the best function for use in our best-effort
    (nondisruptive) attempt to free up vcaches that is afs_ShakeLooseVCaches().
    The new d_invalidate() semantics always force the invalidation of a directory
    dentry, which contradicts our desire to be nondisruptive, especially when
    that directory is being used as the current working directory for a process.
    Our call to d_invalidate(), intended to merely probe for whether a dentry
    can be discarded without affecting other consumers, instead would cause
    processes using that dentry as a CWD to receive ENOENT errors from getcwd().
    
    A previous commit (c3bbf0b4444db88192eea4580ac9e9ca3de0d286) tried to address
    this issue by calling d_prune_aliases() instead of d_invalidate(), but
    d_prune_aliases() does not recursively descend into children of the given
    dentry while pruning, leaving it an incomplete solution for our use-case.
    
    To address these issues, modify the shakeloose routine TryEvictDentries() to
    call shrink_dcache_parent() and maybe __d_drop() for directories, and
    d_prune_aliases() for non-directories, instead of d_invalidate().  (Calls to
    d_prune_aliases() for directories have already been removed by reverting commit
    c3bbf0b4444db88192eea4580ac9e9ca3de0d286.)
    
    Just like d_invalidate(), shrink_dcache_parent() has been around "forever"
    (since pre-git v2.6.12).  Also like d_invalidate(), it "walks" the parent
    dentry's subdirectories and "shrinks" (unhashes) unused dentries.  But unlike
    d_invalidate(), shrink_dcache_parent() will not unhash an in-use dentry, and
    has never changed its signature or semantics.
    
    d_prune_aliases() has also been available "forever", and has also never changed
    its signature or semantics.  The lack of recursive descent is not an issue for
    non-directories, which cannot have such children.
    
    [kaduk@mit.edu: apply review feedback to fix locking and avoid extraneous
    changes, and reword commit message]
    
    Reviewed-on: https://gerrit.openafs.org/12830
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit afbc199f152cc06edc877333f229604c28638d07)
    
    Reviewed-on: https://gerrit.openafs.org/12851
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4feec06c7bdc7102ae654cff20eb02650ec32800)
    
    Change-Id: Id509e51f027bd96df155e7ed714e0c7dfce126eb
    Reviewed-on: https://gerrit.openafs.org/12860
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 31ff2565bf7b1ba7622a2acfcac67cd85c3cc380
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 17:56:13 2017 -0500

    LINUX: consolidate duplicate code in osi_TryEvictDentries
    
    The two stanzas for HAVE_DCACHE_LOCK are now functionally identical;
    remove the preprocessor conditionals and duplicate code.
    
    Minor functional change is incurrred for very old (before 2.6.38) Linux
    versions that have dcache_lock; we are now obtaining the d_lock as well.
    
    This is safe because d_lock is also quite old (pre-git, 2.6.12), and it
    is a spinlock that's only held for checking d_unhashed.  Therefore, it
    should have negligible performance impact.  It cannot cause deadlocks or
    violate locking order, because spinlocks can't be held across sleeps.
    
    Reviewed-on: https://gerrit.openafs.org/12792
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 5076dfc14b980aed310f3862875d5e9919fa199d)
    
    Reviewed-on: https://gerrit.openafs.org/12850
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 4b633c9681057122b9266b8a775d0ad5aa0a3ac3)
    
    Change-Id: I215712bcfb666db875a2b2615e5c43375d072c3c
    Reviewed-on: https://gerrit.openafs.org/12859
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 563d3fb62c06fde067b045e6d9be52e87ba1d0bb
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 16:51:32 2017 -0500

    LINUX: consolidate duplicate code in canonical_dentry
    
    The two stanzas for HAVE_DCACHE_LOCK are now identical;
    remove the preprocessor conditionals and duplicate code.
    
    No functional change should be incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/12791
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 0678ad26b6069040a6ea86866fb59ef5968ea343)
    
    Reviewed-on: https://gerrit.openafs.org/12849
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 16c0dbd7961fb599ed9f29d700d1a713902bd96d)
    
    Change-Id: If37ee5c7c1e95bdc381f1f405087013c39f74b3d
    Reviewed-on: https://gerrit.openafs.org/12858
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c723e0fe685c61923a001169a62b45e37640c3d8
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 16:46:16 2017 -0500

    LINUX: add afs_d_alias_lock & _unlock compat wrappers
    
    Simplify some #ifdefs for HAVE_DCACHE_LOCK by pushing them down into
    new helpers in osi_compat.h.
    
    No functional change should be incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/12790
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 652cd597d9b3cf1a9daccbbf6bf35f1b0cd55a94)
    
    Reviewed-on: https://gerrit.openafs.org/12848
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c42dea8e0293016ec30fa703956c8bbc5d5cb76d)
    
    Change-Id: I3c2d06f90e113b3917770e7c3d402cb819f13041
    Reviewed-on: https://gerrit.openafs.org/12857
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0e3b8823c078d9c446d9a22cd9a2c4581e6b3c08
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 16:08:38 2017 -0500

    LINUX: create afs_linux_dget() compat wrapper
    
    For dentry operations that cover multiple dentry aliases of
    a single inode, create a compatibility wrapper to hide differences
    between the older dget_locked() and the current dget().
    
    No functional change should be incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/12789
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 74f4bfc627c836c12bb7c188b86d570d2afdcae8)
    
    Reviewed-on: https://gerrit.openafs.org/12847
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0ec02ef73d7b94bbe83e7532524c096799cd4b25)
    
    Change-Id: I8368d67f5bbdc79219f30226e7f56386d78275f3
    Reviewed-on: https://gerrit.openafs.org/12856
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7cea4293650bd24d5b7c41ee6a50f4f2c2468fbe
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 13:45:27 2017 -0500

    Revert "LINUX: do not use d_invalidate to evict dentries"
    
    Linux recently changed the semantics of d_invalidate() to:
    - return void
    - invalidate even a current working directory
    
    OpenAFS commit c3bbf0b4444db88192eea4580ac9e9ca3de0d286 switched libafs
    to use d_prune_aliases() instead.
    
    However, since that commit, several things have happened:
    - RHEL 7.4 changed the semantics of d_invalidate() such that it
      invalidates the cwd, but did NOT change the return type to void.
      This broke our autoconf test for detecting the new semantics.
    - Further research reveals that d_prune_aliases() was not the best
      choice for replacing d_invalidate().  This is because for directories,
      d_prune_aliases() doesn't invalidate dentries when they are referenced
      by its children, and it doesn't walk the tree trying to invalidate
      child dentries.  So it can leave dentries dangling, if the only
      references to thos dentries are via children.
    
    In preparation for future commits, revert
    c3bbf0b4444db88192eea4580ac9e9ca3de0d286 .
    
    Reviewed-on: https://gerrit.openafs.org/12788
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 367693bd7da2de593e3329f6acc4a4d07621fb97)
    
    Reviewed-on: https://gerrit.openafs.org/12846
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ae70407fafa3faa94706979c727f53a625939061)
    
    Change-Id: Idb8fe1cb338181d9b6e5f9f2193cd2a6cae8a0b8
    Reviewed-on: https://gerrit.openafs.org/12855
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fbcf03a646a027eb6005681b5026d44a13b27413
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Nov 30 14:04:48 2017 -0500

    Revert "LINUX: eliminate unused variable warning"
    
    This reverts commit 19599b5ef5f7dff2741e13974692fe4a84721b59
    to allow also reverting commit
    c3bbf0b4444db88192eea4580ac9e9ca3de0d286 .
    
    Reviewed-on: https://gerrit.openafs.org/12787
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f8247078bd33a825d8734b2c8f05120d15ab3ffd)
    
    Reviewed-on: https://gerrit.openafs.org/12845
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2a06e32c398bbb9e74258799d87a599d286f97d9)
    
    Change-Id: I8ce001a5d0bf38e7bc270fb0303e5868dd1464c5
    Reviewed-on: https://gerrit.openafs.org/12854
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 83fda1ef99c76cb5f47e15c38b770aa559eb617b
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Dec 22 14:40:32 2017 +0100

    Linux 4.15: check for 2nd argument to pagevec_init
    
    Linux 4.15 removes the distinction between "hot" and "cold" cache
    pages, and pagevec_init() no longer takes a "cold" flag as the
    second argument. Add a configure test and use it in osi_vnodeops.c .
    
    Reviewed-on: https://gerrit.openafs.org/12824
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit fb1f14d8ee963678a9caad0538256c99c159c2c4)
    
    Reviewed-on: https://gerrit.openafs.org/12829
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 7a80b4ba67b0d295df72e87da4aa638bd5e245de)
    
    Change-Id: I525d17abe9b57c3017cf9cf76321f25eb819133c
    Reviewed-on: https://gerrit.openafs.org/12835
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7873b9fc04ed7c205902d38c6562252fce8dadb4
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Fri Dec 22 14:17:09 2017 +0100

    Linux: use plain page_cache_alloc
    
    Linux 4.15 removes the distinction between "hot" and "cold" cache
    pages, and no longer provides page_cache_alloc_cold(). Simply use
    page_cache_alloc() instead, rather than adding yet another test.
    
    Reviewed-on: https://gerrit.openafs.org/12823
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit be5f5b2aff2d59986dd8e7dd7dd531be24c27cb2)
    
    Reviewed-on: https://gerrit.openafs.org/12828
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2ff3ef2ec6f217195dc50c04ba4e3409c23e6a4d)
    
    Change-Id: Iec018dd6591c0cd477a026efd8817ccea7924dce
    Reviewed-on: https://gerrit.openafs.org/12834
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 0497ebe286e2f1a59ccebe0b755a9415d405b876
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Thu Oct 12 12:42:40 2017 -0300

    macos: make the OpenAFS client aware of APFS
    
    Apple has introduced a new file system called APFS. Starting from High
    Sierra, APFS replaces Mac OS Extended (HFS+) as the default file system
    for solid-state drives and other flash storage devices.
    
    The current OpenAFS client is not aware of APFS. As a result, the
    installation of the current client into an APFS volume will panic the
    machine.
    
    To fix this problem, make the OpenAFS client aware of APFS.
    
    Reviewed-on: https://gerrit.openafs.org/12743
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 6e57b22642bafb177e0931b8fb24042707d6d62f)
    
    Reviewed-on: https://gerrit.openafs.org/12827
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit d9bb508e07f32219679c0e696f07f95e3b48886c)
    
    Change-Id: I4495deb80f946a21dffc6bcac9f3e2f2a45d9590
    Reviewed-on: https://gerrit.openafs.org/12833
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 57051d5f982691b7d2ee21d15f3fc69c8684952e
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Fri Oct 6 10:01:12 2017 -0300

    macos: packaging support for MacOS X 10.13
    
    This commit introduces the new set of changes / files required to
    successfully create the dmg installer on OS X 10.13 "High Sierra".
    
    Reviewed-on: https://gerrit.openafs.org/12742
    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 e533d0737058940d59d93467c9b4d6d3ec2834e6)
    
    Reviewed-on: https://gerrit.openafs.org/12826
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 5857724bf60e7706bcefde63d8fa0c7b2119e662)
    
    Change-Id: I7b3a3493a78f9741f9e88ae95929960958e5a13d
    Reviewed-on: https://gerrit.openafs.org/12832
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 81a703d1e3b9411352bf398c78dacd49ba2982be
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Tue Oct 3 17:01:56 2017 -0300

    macos: add support for MacOS 10.13
    
    This commit introduces the new set of changes / files required to
    successfully build the OpenAFS source code on OS X 10.13 "High Sierra".
    
    Reviewed-on: https://gerrit.openafs.org/12741
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 804c9cbf501d4ca91b69ad8fd6d64e49efa25a47)
    
    Reviewed-on: https://gerrit.openafs.org/12825
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ac8cab7fcd3abf76c39e9e08c2c3d6ec0c184837)
    
    Change-Id: If51d4be5b6ca416b9d7738ead287ee2901c0c1e5
    Reviewed-on: https://gerrit.openafs.org/12831
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
