commit aec7d1cfc4f7b8c0ef2f1505f853194196679c5a
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Tue Jul 4 10:57:09 2017 +0200

    Make OpenAFS 1.6.21
    
    Update version strings for the 1.6.21 release.
    
    Change-Id: I27569473ad9b988829bb517419d3d04f4cfa8c0f
    Reviewed-on: https://gerrit.openafs.org/12649
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 35b2b6b44f03b5df157b20972d727bf70369eb0c
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Thu Jun 8 18:14:40 2017 +0200

    Update NEWS for 1.6.21
    
    Finalize the 1.6.21 release notes
    
    Change-Id: I09974201c8155dc697abbf29079e5ceb2a74e629
    Reviewed-on: https://gerrit.openafs.org/12635
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 39087b3d11cc7f896856ad6b29e87ff1c36eb057
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Wed Apr 19 15:55:02 2017 +0200

    Make OpenAFS 1.6.21pre1
    
    Update version strings for the first 1.6.21 prerelease.
    
    Change-Id: I700f0b110373e47f2f471f30ba8eefe9a3b6cf4f
    Reviewed-on: https://gerrit.openafs.org/12603
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 622f4fe9a54cee03594227517db5b11719d6fdfc
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Wed Jun 7 15:09:04 2017 +0200

    Update NEWS for 1.6.21pre1
    
    Release notes for the first OpenAFS 1.6.21 prerelease
    
    Change-Id: I9d01bd7856574e2c3da872854a5bffeac2119f3e
    Reviewed-on: https://gerrit.openafs.org/12634
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 8a2d3fa036c34ec5dbd209f2ff3ea3b7ba23358d
Author: Jeffrey Altman <jaltman@auristor.com>
Date:   Thu Jun 1 22:25:49 2017 -0400

    vol: modify volume updateDate upon salvage change
    
    If the salvager changed the volume, set the VolumeDiskData.updateDate
    field so that
    
      1. the change is visible via "vos examine"
    
      2. backup services will backup the corrected volume
    
    Teradactyl pointed out the problem which forces cell administrators
    to manually trigger a backup for each volume that has been salvaged.
    
    Reviewed-on: https://gerrit.openafs.org/12629
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit cdb92f94598e5b25fbcdfc6fb1650218ec05d63f)
    
    Change-Id: I0ecf0bf52a78cd6e1de4e79fc4a33cb509a816f5
    Reviewed-on: https://gerrit.openafs.org/12633
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7d5473963f25b23237a274ac5bb419e81dcbda61
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Wed Apr 29 11:54:45 2015 -0400

    libafs: remove linux conditionals for md5 inode number calculation
    
    Remove the conditionals which hide the md5 digest calculation for inode
    numbers on non-linux platforms.  This feature was originally added to
    support sites running on linux, but is generally useful and the
    implementation is not specific to linux.
    
    Reviewed-on: http://gerrit.openafs.org/11854
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Perry Ruiter <pruiter@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit ac05e8ceebd05c2d8496759e70cf7b1b92541134)
    
    Change-Id: I8fd613c436120a6436f48920ce4f33570dfb1fb8
    Reviewed-on: https://gerrit.openafs.org/12632
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 9359063394ad5a00cd42383b467f71609f1c6746
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Fri Jun 2 15:19:26 2017 -0400

    bozo: do not fail silently on unknown bosserver options
    
    Instead of failing silently when the bosserver is started with an
    unknown option, print an error message and exit with a non-zero value.
    Continue to exit with 0 when the -help option is given to request the
    usage message.
    
    This change should help make bosserver startup failures more obvious
    when an unsupported option is specified. Example systemd status message:
    
       systemd[1]: Starting OpenAFS Server Service...
       bosserver[32308]: Unrecognized option: -bogus
       bosserver[32308]: Usage: bosserver [-noauth] ....
       systemd[1]: openafs-server.service: main process exited,
                   code=exited, status=1/FAILURE
    
    Reviewed-on: https://gerrit.openafs.org/12630
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f5491119ff7d422b1c0c311a50e30bec1c15296c)
    
    Change-Id: I5c3ffbb21915fd0a2773873e360cee85504796f8
    Reviewed-on: https://gerrit.openafs.org/12631
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a40dcece9fb6b70c6bb7d28ecadcf99660517ba9
Author: Joe Gorse <jhgorse@gmail.com>
Date:   Tue May 16 07:29:30 2017 +0000

    LINUX: Switch to new bdi api for 4.12.
    
    super_setup_bdi() dynamically allocates backing_dev_info structures
    for filesystems and cleans them up on superblock destruction.
    
    Appears with Linux commit fca39346a55bb7196888ffc77d9e3557340d1d0b
    Author: Jan Kara <jack@suse.cz>
    Date:   Wed Apr 12 12:24:28 2017 +0200
    
    Reviewed-on: https://gerrit.openafs.org/12614
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 63e530e7df0b8013bcc4421b0bba558d4f1d2d57)
    
    Change-Id: I48a49ee8852bf842c24e7df0609fe2184bf45d90
    Reviewed-on: https://gerrit.openafs.org/12626
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 04102d7fa7f492d004f62b3e56f856014a1ad92a
Author: Jeffrey Altman <jaltman@auristor.com>
Date:   Sat May 27 14:59:04 2017 -0400

    rx: wake up send after 'twind' has been updated
    
    Beginning in AFS 3.4 and 3.5 the ack trailer includes the size of the
    peer's receive window.  This value is used to update the sender's
    transmit window (twind).  When the twind is increased the application
    thread is signaled to indicate that more packets can be sent.
    
    This change wakes the application thread after twind is updated by
    the peer's receive window instead of beforehand.  Failure to do so
    can result in 100ms transmit delays when the receive window transitions
    from closed to open.
    
    Reviewed-on: https://gerrit.openafs.org/12625
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit aaa47dc1077f0dd5b0040006c831f64cc8a303b5)
    
    Change-Id: Icfbe10f93a34adfb14f5c34198f78b67aa043c53
    Reviewed-on: https://gerrit.openafs.org/12627
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fa16f1edffac4234482e1b45efd084d435381e2f
Author: Joe Gorse <jhgorse@gmail.com>
Date:   Wed May 10 19:46:38 2017 +0000

    LINUX: CURRENT_TIME macro goes away.
    
    Check if the macro exists, define it if it does not.
    
    Reviewed-on: https://gerrit.openafs.org/12611
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit b47dc5482da614742b01dcc62d5e11d766a9432f)
    
    Change-Id: I1ed3706e830b98436a5a22d99fa338b01fd5b997
    Reviewed-on: https://gerrit.openafs.org/12624
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 32571182cbd47b83bdb432c7a6905764413523f9
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Wed Apr 29 12:00:24 2015 -0400

    afs: add afsd -inumcalc option
    
    This commit adds the afsd -inumcalc command line switch to specify the
    inode number calculation method in a platform neutral way.
    
    Inode numbers reported for files within the AFS filesystem are generated
    by the cache manager using a calculation which derives a number from a
    FID. Long ago, a new type of calculation was added which generates inode
    numbers using a MD5 message digest of the FID.  The MD5 inode number
    calculation variant is computationally more expensive but greatly
    reduces the chances for inode number collisions.
    
    The MD5 calculation can be enabled on the Linux cache manager using the
    Linux sysctl interface.  Other than the sysctl method of selecting the
    inode calculation type, the MD5 inode number calculation method is not
    specific to Linux.
    
    This change introduces a command-line option which accepts a value to
    indicate the calculation method, instead of a simple flag to enable MD5
    inode numbers.  This should allow for new inode calculation methods
    in the future without the need for additional afsd command-line flags.
    
    Two values are currently accepted for -inumcalc. The value of 'compat'
    specifies the legacy inode number calculation. The value 'md5' indicates
    that the new MD5 calculation is to be used.
    
    Reviewed-on: https://gerrit.openafs.org/11855
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 0028ea92ad3e7aac6a4c51f63703a4d9d7b9dcd6)
    
    Change-Id: I9021eea9f64c754157061d039f63b6f744ec2ec5
    Reviewed-on: https://gerrit.openafs.org/12608
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 703f7219ab1eb43cefe6f2805d5c46122dcff226
Author: Christof Hanke <christof.hanke@rzg.mpg.de>
Date:   Thu Sep 12 13:34:04 2013 +0200

    client: flag in cachemanager if rmtsys is enabled
    
    when processing "fs sysname" on a client, a rmtsys-related
    checks are executed by default. These prevent a user with gid
    2748 and 2750 (0xabc and 0xabe) from executing this command.
    Add a new flag inside the cachemanager for the rmtsys-
    functionality. This flag is set through a new ioctl by the afsd
    on startup.
    
    Reviewed-on: http://gerrit.openafs.org/10245
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
    (cherry picked from commit db1de98ecf6fd22b9c36b3ba284984f03cb0ae35)
    
    Change-Id: Ia2a367e4675782a681b4f6efd6365da482adfab8
    Reviewed-on: https://gerrit.openafs.org/12607
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2a011abc47a03f927d1501a95795a1597a12bdc3
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Tue Apr 18 13:04:13 2017 -0700

    afs: release the packets used by rx on shutdown
    
    When the OpenAFS client is unmounted on DARWIN, the blocks of packets
    allocated by RX are released. Historically, the memory used by those
    packets was never properly released.
    
    Before 230dcebcd61064cc9aab6d20d34ff866a5c575ea, only the last block of
    packets used to be released:
    
    ...
    struct rx_packet *rx_mallocedP = 0;
    ...
    void
    rxi_MorePackets(int apackets)
    {
        ...
        getme = apackets * sizeof(struct rx_packet);
        p = rx_mallocedP = (struct rx_packet *)osi_Alloc(getme);
        ...
    }
    ...
    void
    rxi_FreeAllPackets(void)
    {
        ...
        osi_Free(rx_mallocedP, ...);
        ...
    }
    ...
    
    As we can see, ‘rx_mallocedP’ is a global pointer that stores the
    first address of the last allocated block of packets. As a result, when
    ‘rxi_FreeAllPackets’ is called, only the last block is released.
    
    However, 230dcebcd61064cc9aab6d20d34ff866a5c575ea moved the global
    pointer in question to the end of the last block. As a result, when the
    OpenAFS client is unmounted on DARWIN, the ‘rxi_FreeAllPackets’
    function releases the wrong block of memory. This problem was exposed
    on OS X 10.12 Sierra where the system crashes when the OpenAFS client
    is unmounted.
    
    To fix this problem, store the address of every single block of packets
    in a queue and release one by one when the OpenAFS client is unmounted.
    
    Reviewed-on: https://gerrit.openafs.org/12427
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 5b28061fb593f5f48df549b07f0ccd848348b93c)
    
    Change-Id: Id8606b1c1444861df69ed4af8169e343964a691d
    Reviewed-on: https://gerrit.openafs.org/12602
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2b1383044788235a03c13dbeacd951a90a591d6b
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
Date:   Tue Jan 31 11:43:18 2017 -0300

    vol: detach offline volumes on dafs
    
    Taking a volume offline always clears the inService bit. Taking a
    volume out of service also takes it offline. Therefore, if the
    inService flag is false, the volume in question should be offline.
    On dafs, an offline volume should be unattached.
    
    The attach2() function does not change the state of the volume received
    as an argument to unattached when the inService flag is false. Instead,
    this function changes the state of the volume in question to
    pre-attached and returns VNOVOL to the client. As result, subsequent
    accesses to this volume will make the server try and fail to attach
    this offline volume over and over again, writing to the FileLog each
    time.
    
    To fix this problem, detach the volume received as an argument if the
    inService flag is false. Since the new state of this volume will be
    unattached, subsequent accesses will not hit attach2().
    
    This situation where a volume is not offline but is also not in service
    can occur if a volume is taken offline with vos offline and some time
    later the DAFS fileserver is shutdown and restarted; the volume is
    placed into the preattach state by default when the server restarts.
    Each access to the volume by clients then causes the fileserver to
    attempt to attach the volume, which fails, since the in-service flag in
    the volume header is false from the previous vos offline.  The
    fileserver will log a warning to the FileLog on each attempt to attach
    the volume, and this will fill the FileLog with duplicate messages
    corresponding to the number of attempted accesses.
    
    Reviewed-on: https://gerrit.openafs.org/12515
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 2421da2bf327525216ec7e79b9aa81fa2c4f77d5)
    
    Change-Id: I95cffb6a91797341d9202cbbef3b205c11348d5e
    Reviewed-on: https://gerrit.openafs.org/12569
    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Tested-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 72a48c34e79b6bf0ea251cf46122c973d1bf6555
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon Feb 20 20:16:47 2017 -0500

    DAFS: do not save or restore host state if CPS in progress
    
    If a fileserver is shutdown while one or more PR_GetHostCPS calls
    are in progress, this state is saved in the fsstate.dat file as
    hostFlags HCPS_WAITING, HCPS_INPROGRESS.  Other hosts that are
    merely waiting will have HCPS_WAITING recorded.
    
    However, it makes no sense to restore host structs in this state,
    because the GetCPS calls will no longer be in progress.  Once these
    hosts become active, they will block server threads and quickly cause
    all server threads to be exhausted as other CPS requests are blocked
    behind them.
    
    Instead, exclude these states from both save and restore.
    
    Reviewed-on: https://gerrit.openafs.org/12561
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 38a3f51fb8b3910ecdd7cacb06f35ec681990aea)
    
    Change-Id: I0e02543fd2e547fcc9f95db0973f09e5951a1da1
    Reviewed-on: https://gerrit.openafs.org/12568
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fb7eceb7606c91d9cd8b3ce196a81c110c58a3be
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Tue Jan 12 18:06:51 2016 -0500

    afs: fs getcacheparms miscounts dcaches for large files
    
    fs getcacheparms issued with the -excessive option tabulates in-memory
    dcaches ("DCentries") by size.  However, any dcache with validPos > 2^31
    is miscounted in the 4k-16k bucket.  This is caused by a type mismatch
    between 'validPos' (afs_size_t) and 'size' (int) which leads to a
    negative value for size by sign-extension.  The size comparison "sieve"
    fails for negative numbers; it skips the first bucket (0-4K) and dumps
    them in the second one (4k-16k).
    
    Move the declaration of 'size' closer to its use, and declare it with
    the same type as 'validPos' (afs_size_t) so the comparison sieve
    correctly places these dcaches in the last (>=1M) bucket.
    
    Reviewed-on: https://gerrit.openafs.org/12347
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit b5e4e8c14130f601bbf43dee5927222ebf7613fa)
    
    Change-Id: I659fd86f05b29c1eac1a262d340bcc1ce2640797
    Reviewed-on: https://gerrit.openafs.org/12605
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit bf222ca6ae9a36d246a0431b0244871637080a25
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Tue Jan 12 17:50:36 2016 -0500

    afs: fs getcacheparms miscounts zero-length dcaches
    
    When fs getcacheparms is issued with the -excessive option, it
    tabulates all in-memory dcaches ("DCentries") by size.
    
    dcaches with validPos == 0 were being tabulated in the 4k-16k bucket.
    
    Fix the first comparison in the 'sieve' so these dcaches will be counted
    in the correct 0-4k bucket instead.
    
    Introduced by commit 176c2fddb95ced6c13e04e7492fc09b5551f273c
    
    Reviewed-on: https://gerrit.openafs.org/12346
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit c966c0b8414ef0a041b1a8d5261c9eccd4d39d99)
    
    Change-Id: I53a20644f549550cef85f0cc6f3551ed5dbe1e23
    Reviewed-on: https://gerrit.openafs.org/12604
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit a1eac45d30d895b5d2e819637f6e50db5141ca59
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Thu Mar 2 12:52:10 2017 +0100

    doc: clarify the fs wscell manpage
    
    What's displayed by fs wscell is not necessarily the current content
    of ThisCell, but that at the time of starting the client. Say so.
    
    FIXES 133339
    
    Reviewed-on: https://gerrit.openafs.org/12537
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit bd15a5f56fde98983464acf5fd4cdd731d206d9f)
    
    Change-Id: I47d7b92488b1166934a1704765c0f1e914a178a8
    Reviewed-on: https://gerrit.openafs.org/12559
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 7608ef72321a4899f96026298c8c20888a5f9019
Author: Marc Dionne <marc.c.dionne@gmail.com>
Date:   Sat Jan 29 12:09:30 2011 -0500

    ubik: SVOTE_Beacon should hold the DB lock for CheckTid
    
    Reviewed-on: https://gerrit.openafs.org/4262
    Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
    Reviewed-by: Derrick Brashear <shadow@dementia.org>
    Tested-by: Derrick Brashear <shadow@dementia.org>
    (cherry picked from commit 5548f6540557795ded65a52c7066839c5eef468f)
    
    Change-Id: I0d4a4d5e796bc6cb731f00db34cc0776f746ca85
    Reviewed-on: https://gerrit.openafs.org/12516
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e9b11ef3ae93b6b906fb4660af5743a6645a27b8
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu Jul 7 15:51:18 2016 -0400

    doc: update information about vlserver logging
    
    Mention the vlserver -d option can be used to set the initial logging
    level.
    
    Thanks to Mark Vitale for the suggestion.
    
    Reviewed-on: https://gerrit.openafs.org/12324
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit f5f057ce8198480fb9c67f2a8c8eee906f8a7c4a)
    
    Change-Id: Iaa0f10d020d3993fe92690c860cdad03605d31ec
    Reviewed-on: https://gerrit.openafs.org/12477
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit e64639b851e18a29003fd7d656673d00b2d90193
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Sat Jan 7 06:22:47 2017 -0500

    LINUX: eliminate unused variable warning
    
    Commit c3bbf0b4444db88192eea4580ac9e9ca3de0d286 added routine
    osi_TryEvictDentries and included new logic for D_INVALIDATE_IS_VOID.
    Unfortunately, this new code path no longer uses dentry; it also should
    have been made conditional at that time.
    
    Wrap the declaration of dentry in #ifndef D_INVALIDATE_IS_VOID to
    eliminate the unused variable warning.
    
    Reviewed-on: https://gerrit.openafs.org/12505
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 19599b5ef5f7dff2741e13974692fe4a84721b59)
    
    Change-Id: Ic15df733fcbccfaf9870ecd335bb2d549ab0d43d
    Reviewed-on: https://gerrit.openafs.org/12513
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 5757a0dc3debb6b1d7e47faee18373a2866e4b03
Author: Michael Meffie <mmeffie@sinenomine.net>
Date:   Thu Aug 27 13:06:05 2015 -0400

    afs: shake harder in shake-loose-vcaches
    
    Linux based cache managers will allocate vcaches on demand and
    deallocate batches of vcaches in the background. This feature is called
    dynamic vcaches.
    
    Vcaches to be deallocated are found by traversing the vcache LRU list
    (VLRU) from the oldest vcache to the newest. Up to a target number of
    vcaches are attempted to be evicted.  The afs_xvcache lock protecting
    the VLRU may be dropped and re-acquired while attempting to evict a
    vcache. When this happens, it is possible the VLRU may have changed, so
    the traversal of the VLRU is restarted.  This restarting of the VLRU
    transversal is limited to 100 iterations to avoid looping indefinitely.
    
    Vcaches which are busy cannot be evicted and remain in the VLRU. When a
    busy cache was not evicted and the afs_xvache lock was dropped, the VLRU
    traversal is restarted from the end of the VLRU. When the busy vcache is
    encountered on the retry, it will trigger additional retries until the
    loop limit is reached, at which point the target number of vcaches will
    not be deallocated.
    
    This can leave a very large number of unbusy vcaches which are never
    deallocated.  On a busy machine, tens of millions of unused vcaches can
    remain in memory. When the busy vcache at the end of the VLRU is finally
    evicted, the log jam is broken, and the background deamon will hold the
    afs_xvcache lock for an excessively long time, hanging the system.
    
    Fix this by moving busy vcaches to the head of the VLRU before
    restarting the VLRU traversal. These busy vcaches will be skipped when
    retrying the VLRU traversal, allowing the cache manager to make progress
    deallocating vcaches down to the target level.
    
    This was already done on the mac osx platform while attempting to evict
    vcaches. Move the code to move busy vcaches to the head of the VLRU up
    the the platform agnostic caller.
    
    Thanks to Andrew Deason for the initial version of this patch.
    
    Reviewed-on: https://gerrit.openafs.org/11654
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Andrew Deason <adeason@dson.org>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 5c136c7d93ed97166f39bf716cc7f5d579b70677)
    
    Change-Id: If60b1889d012a739aa5b43e842abb80a6ebfdb6a
    Reviewed-on: https://gerrit.openafs.org/12451
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c392d7990ebd53ab7a774148d254dc93f6f042b2
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Aug 4 18:42:27 2016 -0400

    LINUX: do not use d_invalidate to evict dentries
    
    When working within the AFS filespace, commands which access large
    numbers of OpenAFS files (e.g., git operations and builds) may result in
    active files (e.g., the current working directory) being evicted from the
    dentry cache.  One symptom of this is the following message upon return
    to the shell prompt:
    
    "fatal: unable to get current working directory: No such file or
    directory"
    
    Starting with Linux 3.18, d_invalidate returns void because it always
    succeeds.  Commit a42f01d5ebb13da575b3123800ee6990743155ab adapted
    OpenAFS to cope with the new return type, but not with the changed
    semantics of d_invalidate.  Because d_invalidate can no longer fail with
    -EBUSY when invoked on an in-use dentry. OpenAFS must no longer trust it
    to preserve in-use dentries.
    
    Modify the dentry eviction code to use a method (d_prune_aliases) that
    does not evict in-use dentries.
    
    Reviewed-on: https://gerrit.openafs.org/12363
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c3bbf0b4444db88192eea4580ac9e9ca3de0d286)
    
    Change-Id: Ic72a280f136cc414b54d4b8ec280f225290df122
    Reviewed-on: https://gerrit.openafs.org/12450
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit c3656b85c45cb18c780b9117e0fa7d37f916eb53
Author: Benjamin Kaduk <kaduk@mit.edu>
Date:   Thu Oct 27 17:27:26 2016 -0500

    Reformat src/afs/LINUX/osi_vcache.c
    
    Apply the GNU indent options from CODING, with manual adjustments
    to leave jump labels in column zero.
    
    Also rename and mark static a function-local helper function.
    
    Reviewed-on: https://gerrit.openafs.org/12422
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 22933e02e2510f25b79230964f135571c7bfe710)
    
    Change-Id: I9fb2886ae2213218ae80ea9d5b80540b9c79077b
    Reviewed-on: https://gerrit.openafs.org/12449
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 362f11de086535b32989fcae50bae5713f647a66
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Aug 4 18:18:15 2016 -0400

    LINUX: split dentry eviction from osi_TryEvictVCache
    
    To make osi_TryEvictVCache clearer, and to prepare for a future change
    in dentry eviction, split the dentry eviction logic into its own routine
    osi_TryEvictDentries.
    
    No functional difference should be incurred by this commit.
    
    Reviewed-on: https://gerrit.openafs.org/12362
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
    (cherry picked from commit 742643e306929ac979ab69515a33ee2a3f2fa3fa)
    
    Change-Id: I750fc7606ca56e784a60bdbc13a32d21fe307429
    Reviewed-on: https://gerrit.openafs.org/12448
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f8fcaaa0648a750dc56477f2878f53967ac85e73
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Mon Nov 21 13:25:40 2016 -0500

    doc: correct help for 'bos getlog' -restricted mode
    
    Commit f085951d39c0d6c1e6a626177c30235704317600 introduced an error in
    the bos getlog helpfile.
    
    Modify the helpfile to describe the actual restrictions imposed by
    -restricted mode.
    
    Reviewed-on: https://gerrit.openafs.org/12454
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit 3af0460a4a6d7bf22e1789fd9e375659e20c3a55)
    
    Change-Id: Ifa544c322e67da712a0bc96b3797e51786e4d399
    Reviewed-on: https://gerrit.openafs.org/12476
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 786e1fce50c2a9b1988ec05047061decc06229d5
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Wed Apr 5 16:41:43 2017 +0200

    Update NEWS again for 1.6.20.2
    
    Finalize the 1.6.20.2 release notes, including a few late additions.
    
    Change-Id: I32a394e4af700d52f487e0db528ed261e4c2131b
    Reviewed-on: https://gerrit.openafs.org/12591
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 2c06cc8e406f5c6d7d56121ebbaa271fc99706e8
Author: Stephan Wiesand <stephan.wiesand@desy.de>
Date:   Tue Apr 11 11:58:55 2017 +0200

    Linux: only include cred.h if it exists
    
    Commit c89fd17df1032ec2eacc0d0c9b73e19c5e8db7d2 introduced an explicit
    include of linux/cred.h since the latest kernel no longer includes it
    implicitly in sched.h. Alas, older kernels (like 2.6.18) don't have this
    file. Add a configure test for the existence of cred.h and only include
    it if actually present.
    
    Reviewed-on: https://gerrit.openafs.org/12593
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 6b7b4239ab22fbb301e3b50e2ca4072445ba4e9e)
    
    Change-Id: I64970ba471180d32fa5af5445e7604bbe8511b32
    Reviewed-on: https://gerrit.openafs.org/12598
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit f7c0c066f458e52658199f6ccc66dc0db3b8b3ca
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Mar 23 18:36:44 2017 -0700

    Linux v4.11: cred.h is no longer included in sched.h
    
    With Linux commit e26512fea5bcd6602dbf02a551ed073cd4529449, cred.h is no
    longer included in sched.h.
    
    Several components of libafs which require cred.h were picking it by
    including sched.h.
    
    Instead, explicitly add an include for cred.h. cred.h begins with a
    customary one-shot to prevent multiple loads:
    
     #ifndef _LINUX_CRED_H
     #define _LINUX_CRED_H
    
    Therefore we don't need a new autoconf test or preprocessor conditional
    to prevent redundant includes on older Linux releases.
    
    Reviewed-on: https://gerrit.openafs.org/12574
    Tested-by: Mark Vitale <mvitale@sinenomine.net>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
    Tested-by: Joe Gorse <jhgorse@gmail.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    (cherry picked from commit c89fd17df1032ec2eacc0d0c9b73e19c5e8db7d2)
    
    Change-Id: I235a6272c55a8f734be07b578bbb1a324cf34e2e
    Reviewed-on: https://gerrit.openafs.org/12590
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit fbabbca365d8401203dcfa095b8c71e77e091936
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Thu Mar 23 15:10:03 2017 -0700

    Linux v4.11: signal stuff moved to sched/signal.h
    
    In Linux commit c3edc4010e9d102eb7b8f17d15c2ebc425fed63c, signal_struct
    and other signal handling declarations were moved from sched.h to
    sched/signal.h.
    
    This breaks existing OpenAFS autoconf tests for recalc_sigpending() and
    task_struct.signal->rlim, so that the OpenAFS kernel module can no
    longer build.
    
    Modify OpenAFS autoconfig tests to cope.
    
    Reviewed-on: https://gerrit.openafs.org/12573
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
    Tested-by: Joe Gorse <jhgorse@gmail.com>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    (cherry picked from commit ad001550949b612ff6b4899fa8da50ee58f87533)
    
    Change-Id: I491208d77e45d45cc0089b8033892a6408da431c
    Reviewed-on: https://gerrit.openafs.org/12589
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3dd5078c16a48aad91e5ce4585bcc07a7d730b17
Author: Joe Gorse <jhgorse@gmail.com>
Date:   Mon Mar 20 14:30:46 2017 +0000

    Linux v4.11: getattr takes struct path
    
    With Linux commit a528d35e8bfcc521d7cb70aaf03e1bd296c8493f
    
        statx: Add a system call to make enhanced file info available
    
    The Linux getattr inode operation is altered to take two additional
    arguments: a u32 request_mask and an unsigned int flags that indicate
    the synchronisation mode.  This change is propagated to the
    vfs_getattr*() function.
    
    -   int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *);
    +   int (*getattr) (const struct path *, struct kstat *,
    +                     u32 request_mask, unsigned int sync_mode);
    
    The first argument, request_mask, indicates which fields of the statx
    structure are of interest to the userland call. The second argument,
    flags, currently may take the values defined in
    include/uapi/linux/fcntl.h and are optionally used for cache coherence:
    
     (1) AT_STATX_SYNC_AS_STAT tells statx() to behave as stat() does.
    
     (2) AT_STATX_FORCE_SYNC will require a network filesystem to
         synchronise its attributes with the server - which might require
         data writeback to occur to get the timestamps correct.
    
     (3) AT_STATX_DONT_SYNC will suppress synchronisation with the server in
         a network filesystem.  The resulting values should be considered
         approximate.
    
    This patch provides a new autoconf test and conditional compilation to
    cope with the changes in our getattr implementation.
    
    Reviewed-on: https://gerrit.openafs.org/12572
    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
    Tested-by: Joe Gorse <jhgorse@gmail.com>
    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>
    (cherry picked from commit de5ee1a67d1c3284d65dc69bbbf89664af70b357)
    
    Change-Id: I41ff134e1e71944f0629c9837d38cfbc495264c8
    Reviewed-on: https://gerrit.openafs.org/12588
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>

commit 3b5e0cee5b57fb1e4086439c5edcaaa499ba60da
Author: Jonathon Weiss <jweiss@mit.edu>
Date:   Thu Nov 10 17:06:18 2016 -0500

    Prevent double-starting client on RHEL7
    
    On RHEL7 if the AFS client is stopped with 'service openafs-client
    stop', but that fails for some reason (most commonly because some
    process has a file or directory in AFS open) systemd will decide that
    the openafs-client is in a failed state when it is actually running.
    If one then runs 'service openafs-client start' systemd will start a
    new AFS client.  At this point AFS access will continue to work until
    the functional AFS client is (successfully) stopped, at which point a
    reboot is required to recover.
    
    Have systemd check the status of 'fs sysname' before starting the
    AFS client, so we avoid getting into a state that requires a reboot.
    
    Reviewed-on: https://gerrit.openafs.org/12443
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
    (cherry picked from commit c666bfee8848183ccbc566c9e0fa019088e56505)
    
    Change-Id: I2e7bf69ec5d1ae344d38b86fc3caace25b2da135
    Reviewed-on: https://gerrit.openafs.org/12587
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
