From 9c336b8b10abfeca3ec392c9bbba707624675e7b Mon Sep 17 00:00:00 2001
From: hauky <>
Date: Nov 17 2020 20:21:49 +0000
Subject: Update openafs to version 1.8.6.1 / rev 21 via SR 845591
https://build.opensuse.org/request/show/845591
by user hauky + dimstar_suse
---
diff --git a/.files b/.files
index 4880c80..03fa5e6 100644
Binary files a/.files and b/.files differ
diff --git a/.rev b/.rev
index fec5f01..4799e0c 100644
--- a/.rev
+++ b/.rev
@@ -377,4 +377,12 @@
841588
+
+ c19ffdf3488b35d8e25e9813dbb10fc8
+ 1.8.6.1
+
+ dimstar_suse
+
+ 845591
+
diff --git a/ChangeLog b/ChangeLog
index 894bb9f..6bef28a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1608 @@
+commit 62beb979b4e43c361db54fbf3084f876fd2c11da
+Author: Andrew Deason
+Date: Mon Jul 16 16:53:34 2018 -0500
+
+ afs: Skip bulkstat if stat cache looks full
+
+ Currently, afs_lookup() will try to prefetch dir entries for normal
+ dirs via bulkstat whenever multiple pids are reading that dir.
+ However, if we already have a lot of vcaches, ShakeLooseVCaches may be
+ struggling to limit the vcaches we already have. Entering
+ afs_DoBulkStat can make this worse, since we grab afs_xvcache
+ repeatedly, we may kick out other vcaches, and we'll possibly create
+ 30 new vcaches that may not even be used before they're evicted.
+
+ To try to avoid this, skip running afs_DoBulkStat if it looks like the
+ stat cache is really full.
+
+ Reviewed-on: https://gerrit.openafs.org/13256
+ Reviewed-by: Cheyenne Wills
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 9ff45e73cf3d91d12f09e108e1267e37ae842c87)
+
+ Change-Id: I1b84ab3bb918252e8db5e4379730a517181bc9d8
+ Reviewed-on: https://gerrit.openafs.org/14400
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 28794011085d35b293d5e829adadb372b2a2b3fd
+Author: Andrew Deason
+Date: Mon Jul 16 16:44:14 2018 -0500
+
+ afs: Log warning when we detect too many vcaches
+
+ Currently, afs_ShakeLooseVCaches has a kind of warning that is logged
+ when we fail to free up any vcaches. This information can be useful to
+ know, since it may be a sign that users are trying to access way more
+ files than our configured vcache limit, hindering performance as we
+ constantly try to evict and re-create vcaches for files.
+
+ However, the current warning is not clear at all to non-expert users,
+ and it can only occur for non-dynamic vcaches (which is uncommon these
+ days).
+
+ To improve this, try to make a general determination if it looks like
+ the stat cache is "stressed", and log a message if so after
+ afs_ShakeLooseVCaches runs (for all platforms, regardless of dynamic
+ vcaches). Also try to make the message a little more user-friendly,
+ and only log it (at most) once per 4 hours.
+
+ Determining whether the stat cache looks stressed or not is difficult
+ and arguably subjective (especially for dynamic vcaches). This commit
+ draws a few arbitrary lines in the sand to make the decision, so at
+ least something will be logged in the cases where users are constantly
+ accessing way more files than our configured vcache limit.
+
+ Reviewed-on: https://gerrit.openafs.org/13255
+ Reviewed-by: Cheyenne Wills
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 0532f917f29bdb44f4933f9c8a6c05c7fecc6bbb)
+
+ Change-Id: Ic7260f276e00f3e34541207955df841d4ed27844
+ Reviewed-on: https://gerrit.openafs.org/14399
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 47ab46e1e9fe56b5bf8147eab0b652e74078cbe7
+Author: Andrew Deason
+Date: Mon Jul 16 16:08:13 2018 -0500
+
+ afs: Split out bulkstat conditions into a function
+
+ Our current if() statement for determining whether we should run
+ afs_DoBulkStat to prefetch dir entries is a bit large, and grows over
+ time. Split this logic out into a separate function to make it easier
+ to maintain, and add some comments to help explain each condition.
+
+ This commit should have no visible effects; it's just code
+ reorganization.
+
+ Reviewed-on: https://gerrit.openafs.org/13254
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 19cd454f11997d286bc415e9bc9318a31f73e2c6)
+
+ Change-Id: Ida322c518d11787fd794df7534135fbc2dec2935
+ Reviewed-on: https://gerrit.openafs.org/14398
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 738eb3e4976947657f877ec107d517d63a66a907
+Author: Andrew Deason
+Date: Sun Jul 8 15:00:02 2018 -0500
+
+ afs: Bound afs_DoBulkStat dir scan
+
+ Currently, afs_DoBulkStat will scan the entire directory blob, looking
+ for entries to stat. If all or almost all entries are already stat'd,
+ we'll scan through the entire directory, doing nontrivial work on
+ each entry (we grab afs_xvcache, at least). All of this work is pretty
+ pointless, since the entries are already cached and so we won't do
+ anything. If many processes are trying to acquire afs_xvcache, this
+ can contribute to performance issues.
+
+ To avoid this, provide a constant bound on the number of entries we'll
+ search through: nentries * 4. The current arbitrary limits cap
+ nentries at 30, so this means we're capping the afs_DoBulkStat search
+ to 120 entries.
+
+ Reviewed-on: https://gerrit.openafs.org/13253
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit ba8b92401b8cb2f5a5306313c2702cb36cba083c)
+
+ Change-Id: Icf82f88328621cb5a9e0ad52f873b8a7d74b1f3a
+ Reviewed-on: https://gerrit.openafs.org/14397
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit fbba8e4cbf00f32181b5075e8d7a876cccd2a046
+Author: Andrew Deason
+Date: Thu Jul 13 17:40:36 2017 -0500
+
+ afs: Avoid needless W-locks for afs_FindVCache
+
+ The callers of afs_FindVCache must hold at least a read lock on
+ afs_xvcache; some hold a shared or write lock (and set IS_SLOCK or
+ IS_WLOCK in the given flags). Two callers (afs_EvalFakeStat_int and
+ afs_DoBulkStat) currently hold a write lock, but neither of them need
+ to.
+
+ In the optimal case, where afs_FindVCache finds the given vcache, this
+ means that we unnecessarily hold a write lock on afs_xvcache. This can
+ impact performance, since afs_xvcache can be a very frequently
+ accessed lock (a simple operation like afs_PutVCache briefly holds a
+ read lock, for example).
+
+ To avoid this, have afs_DoBulkStat hold a shared lock on afs_xvcache,
+ upgrading to a write lock when needed. afs_EvalFakeStat_int doesn't
+ ever need a write lock at all, so just convert it to a read lock.
+
+ Reviewed-on: https://gerrit.openafs.org/12656
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 6c808e05adb0609e02cd61e3c6c4c09eb93c1630)
+
+ Change-Id: Id517d1098b4c3a02db646b2a74535f77cb684ec3
+ Reviewed-on: https://gerrit.openafs.org/14396
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 5c476b91fd2259e9c34070be8ba201dd471ad974
+Author: Andrew Deason
+Date: Thu Jul 13 17:40:21 2017 -0500
+
+ afs: Change VerifyVCache2 calls to VerifyVCache
+
+ afs_VerifyVCache is a macro that (on most platforms) effectively
+ expands to:
+
+ if ((avc->f.states & CStatd)) {
+ return 0;
+ } else {
+ return afs_VerifyVCache2(...);
+ }
+
+ Some callers call afs_VerifyVCache2 directly, since they already check
+ for CStatd for other reasons. A few callers currently call
+ afs_VerifyVCache2, but without guaranteeing that CStatd is not set.
+ Specifically, in afs_getattr and afs_linux_VerifyVCache, CStatd could
+ be set while afs_CreateReq drops GLOCK. And in afs_linux_readdir,
+ CStatd could be cleared at multiple different points before the
+ VerifyVCache call.
+
+ This can result in afs_VerifyVCache2 acquiring a write-lock on the
+ vcache, even when CStatd is already set, which is an unnecessary
+ performance hit.
+
+ To avoid this, change these call sites to use afs_VerifyVCache instead
+ of calling afs_VerifyVCache2 directly, which skips the write lock when
+ CStatd is already set.
+
+ Reviewed-on: https://gerrit.openafs.org/12655
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit a05d5b7503e466e18f5157006c1de2a2f7d019f7)
+
+ Change-Id: I05bdcb7f10930ed465c24a8d7e51077a027b1a4b
+ Reviewed-on: https://gerrit.openafs.org/14395
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 150ee65f286409e37fcf94807dbeaf4b79ab0769
+Author: Andrew Deason
+Date: Sun Apr 26 17:26:02 2020 -0500
+
+ rx: Use _IsLast to check for last call in queue
+
+ Ever since commits 170dbb3c (rx: Use opr queues) and d9fc4890 (rx: Fix
+ test for end of call queue for LWP), rx_GetCall checks if the current
+ call is the last one on rx_incomingCallQueue by doing this:
+
+ opr_queue_IsEnd(&rx_incomingCallQueue, cursor)
+
+ But opr_queue_IsEnd checks if the given pointer is the _end_ of the
+ last; that is, if it's the end-of-list sentinel, not an item on the
+ actual list. Testing for the last item in a list is what
+ opr_queue_IsLast is for. This is the same convention that the old Rx
+ queues used, but 170dbb3c just accidentally replaced queue_IsLast with
+ opr_queue_IsEnd (instead of opr_queue_IsLast), and d9fc4890 copied the
+ mistake.
+
+ So because this is inside an opr_queue_Scan loop, opr_queue_IsEnd will
+ never be true, so we'll never enter this block of code (unless we are
+ the "fcfs" thread). This means that an incoming Rx call can get stuck
+ in the incoming call queue, if all of the following are true:
+
+ - The incoming call consists of more than 1 packet of incoming data.
+
+ - The incoming call "waits" when it comes in (that is, there are no
+ free threads or the service is over quota).
+
+ - The "fcfs" thread doesn't scan the incoming call queue (because it
+ is idle when the call comes in, but the relevant service is over
+ quota).
+
+ To fix this, just use opr_queue_IsLast here instead of
+ opr_queue_IsEnd.
+
+ Reviewed-on: https://gerrit.openafs.org/14158
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit befc72749884c6752c7789479343ba48c7d5cea1)
+
+ Change-Id: If724245414798ae7a86dfa048cf99863317aef8e
+ Reviewed-on: https://gerrit.openafs.org/14394
+ Reviewed-by: Cheyenne Wills
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Stephan Wiesand
+
+commit 12aed9ef2988a69187910bada5ba7325cb6144ab
+Author: Andrew Deason
+Date: Sun Jul 21 18:48:51 2019 -0500
+
+ rx: Avoid osi_NetSend during rx shutdown
+
+ Commit 8d939c08 (rx: avoid nat ping during shutdown) added a call
+ to shutdown_rx() inside the DARWIN shutdown sequence, before the rx
+ socket was closed. From the commit message, it sounds like this was
+ done to avoid NAT pings from calling osi_NetSend during the shutdown
+ sequence after the rx socket was closed; calling shutdown_rx() before
+ closing the socket would cause any connections we had to be destroyed
+ first, avoiding that.
+
+ The problem with this is that this means shutdown_rx() is called when
+ osi_StopNetIfPoller is called, which is much earlier than some other
+ portions of the shutdown sequence; some of which may hold references
+ to e.g. rx connections. If we try to, for instance, destroy an rx
+ connection after shutdown_rx() is called, we could panic.
+
+ An earlier version of that commit (gerrit PS1) just tried to insert a
+ check before the relevant osi_NetSend call, making us just skip the
+ osi_NetSend if the shutdown sequence had been started. So to avoid the
+ above issue, try to implement that approach instead. And instead of
+ doing it just for NAT pings, we can do it for almost all osi_NetSend
+ calls (besides those involved in the shutdown sequence itself), by
+ checking this in rxi_NetSend. Also return an error (ESHUTDOWN) if we
+ skip the osi_NetSend call, so we're not completely silent about doing
+ so.
+
+ This means we also remove the call to shutdown_rx() inside DARWIN's
+ osi_StopNetIfPoller(). This allows us to interact with Rx objects
+ during more of the shutdown process in cross-platform code.
+
+ Reviewed-on: https://gerrit.openafs.org/13718
+ Reviewed-by: Mark Vitale
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit 9866511bb0a5323853e97e3ee92524198813776e)
+
+ Change-Id: Ie62c1a68d8a8889f7a8aa3eff3973c219b45a95c
+ Reviewed-on: https://gerrit.openafs.org/14393
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 7f59989cf84df1e2077f4fcf5649c9624e79a5d2
+Author: Andrew Deason
+Date: Sun Jul 21 18:31:53 2019 -0500
+
+ rx: Introduce rxi_NetSend
+
+ Introduce a small wrapper around osi_NetSend, called rxi_NetSend. This
+ small wrapper allows future commits to change the code around our
+ osi_NetSend calls, without needing to change every single call site,
+ or every implementation of osi_NetSend.
+
+ Change most call sites to use rxi_NetSend, instead of osi_NetSend. Do
+ not change a few callers in the platform-specific kernel shutdown
+ sequence, since those call osi_NetSend for platform-specific reasons.
+
+ This commit on its own does not change any behavior with osi_NetSend;
+ it is just code reorganization.
+
+ Reviewed-on: https://gerrit.openafs.org/13717
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit 2a33a80f7026df6b5e47e42319c55d8b7155675a)
+
+ Change-Id: I6af8541953a582d044fb668eb4a91720536bc8e1
+ Reviewed-on: https://gerrit.openafs.org/14392
+ Reviewed-by: Cheyenne Wills
+ Tested-by: BuildBot
+ Reviewed-by: Stephan Wiesand
+
+commit 38f613f5e15552938cb425c68b22c166e35284be
+Author: Andrew Deason
+Date: Tue Oct 13 20:18:59 2020 -0500
+
+ ubik: Remove unused sampleName
+
+ The RPC-L type sampleName and related constant UMAXNAMELEN are not
+ referenced by anything, and have been unused since OpenAFS 1.0. Remove
+ the unused definitions.
+
+ Reviewed-on: https://gerrit.openafs.org/14386
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 83ce8d41c68a5ebcc84132d77af9024c6d285e05)
+
+ Change-Id: I1d6c583d9c630fc9704578ba3329132e16b3a803
+ Reviewed-on: https://gerrit.openafs.org/14401
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit f7374a883505aa34a3db34ddd1163367c544bb0c
+Author: Andrew Deason
+Date: Sat May 2 23:54:55 2020 -0500
+
+ afs: Drop GLOCK for RXAFS_GetCapabilities
+
+ We are hitting the net here; we certainly should not be holding
+ AFS_GLOCK while waiting for the server's response.
+
+ Found via FreeBSD WITNESS.
+
+ Reviewed-on: https://gerrit.openafs.org/14181
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 44b7b93b593371bfdddd0be0ae603f4f8720f78b)
+
+ Change-Id: I186e08c89136cc3109fd2519bb0d2abbb52f9ba0
+ Reviewed-on: https://gerrit.openafs.org/14391
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 02fb067d3fded0eee5c9326c56e66b512a75d71c
+Author: Michael Meffie
+Date: Mon Mar 23 09:46:05 2020 -0400
+
+ build: remove unused LINUX_PKGREL from configure.ac
+
+ This change removes the unused LINUX_PKGREL definition from the
+ configure.ac file.
+
+ Commit 6a27e228bac196abada96f34ca9cd57f32e31f5c converted the setting of
+ the RPM package version and release values in the openafs.spec file from
+ autoconf to the makesrpm.pl script. That commit left LINUX_PKGREL in
+ configure.ac because it was still referenced by the Debian packaging,
+ which was still in-tree at that time.
+
+ Commit ada9dba0756450993a8e57c05ddbcae7d1891582 removed the last trace
+ of the Debian packaging, but missed the removal of the LINUX_PKGREL.
+
+ Reviewed-on: https://gerrit.openafs.org/14117
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: Benjamin Kaduk
+ (cherry picked from commit 8ae4531c5720baff9e11e4b05706eab6c82de5f9)
+
+ Conflicts:
+ configure.ac
+
+ Change-Id: I69925f89c52aef32aea5bc308140936517b1aeb0
+ Reviewed-on: https://gerrit.openafs.org/14363
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Tested-by: BuildBot
+ Reviewed-by: Stephan Wiesand
+
+commit 2f2cbff766650e7c25eb332d5385f4a3fca8676d
+Author: Andrew Deason
+Date: Mon Apr 20 13:03:15 2020 -0500
+
+ ubik: Avoid unlinking garbage during recovery
+
+ In urecovery_Interact, if any of our operations fail around
+ calling DISK_GetFile, we will jump to FetchEndCall and eventually
+ unlink 'pbuffer'. But if we failed before opening our .DB0.TMP file,
+ the contents of 'pbuffer' will not be initialized yet.
+
+ During most iterations of the recovery loop, the contents of 'pbuffer'
+ will be filled in from previous loops, and it should always stay the
+ same, so it's not a big problem. But if this is the first iteration of
+ the loop, the contents of 'pbuffer' may be stack garbage.
+
+ Solve this in two ways. To make sure we don't use garbage contents in
+ 'pbuffer', memset the whole thing to zeroes at the beginning of
+ urecovery_Interact(). And then to make sure we're not reusing
+ 'pbuffer' contents from previous iterations of the loop, also clear
+ the first character to NUL each time we arrive at this area of the
+ recovery code. And avoid unlinking anything if pbuffer starts with a
+ NUL.
+
+ Commit 44e80643 (ubik: Avoid unlinking garbage) fixes the same issue,
+ but only fixed it in the SDISK_SendFile codepath in remote.c.
+
+ Reviewed-on: https://gerrit.openafs.org/14153
+ Tested-by: BuildBot
+ Reviewed-by: Marcio Brito Barbosa
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 98b5ffb52117aefac5afb47b30ce9b87eb2fdebf)
+
+ Change-Id: I5cadb88e466ddd326ef1e4138d5b1bf89fdb27dc
+ Reviewed-on: https://gerrit.openafs.org/14365
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 8993e35578e4ae51dd5e8941f77c18bb975e51af
+Author: Andrew Deason
+Date: Fri Sep 18 14:03:37 2020 -0600
+
+ WINNT: Make opr_threadname_set a no-op
+
+ We don't supply an implementation for opr_threadname_set for WINNT;
+ don't pretend that we do.
+
+ Reviewed-on: https://gerrit.openafs.org/13817
+ Tested-by: Andrew Deason
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit f895a9b51671ffdc920fd9b4284337c5b737a0ef)
+
+ Change-Id: Ie8df82550f5420e2b024dea29aae0e39e3ee506f
+ Reviewed-on: https://gerrit.openafs.org/14369
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 045a97dfbc8dd6a2794b74e16f47984dc5f8eccf
+Author: Andrew Deason
+Date: Fri Sep 18 12:11:36 2020 -0600
+
+ Move afs_pthread_setname_self to opr
+
+ Move the functionality in afs_pthread_setname_self from libutil to
+ opr, in a new function opr_threadname_set. This allows us to more
+ easily use the routine in more subsystems, since most code already
+ uses opr.
+
+ Reviewed-on: https://gerrit.openafs.org/13655
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 9d28f7390332c92b3d9e863c6fe70c26db28b5ad)
+
+ Change-Id: Ic6bbb615bc3494a7a114a0f4cae711b65ebec111
+ Reviewed-on: https://gerrit.openafs.org/14368
+ Reviewed-by: Andrew Deason
+ Tested-by: Andrew Deason
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 41f4bb48741065da6a69ffcb05e451e5c7dac757
+Author: Marcio Barbosa
+Date: Mon Aug 31 19:56:56 2020 +0000
+
+ Revert "vos: take RO volume offline during convertROtoRW"
+
+ This reverts commit 32d35db64061e4102281c235cf693341f9de9271. While that
+ commit did fix the mentioned problem, depending on "vos" to set the
+ volume to be converted as "out of service" is not ideal. Instead, this
+ volume should be set as offline by the SAFSVolConvertROtoRWvolume RPC,
+ executed on the volume server.
+
+ The proper fix for this problem will be introduced by another commit.
+
+ Reviewed-on: https://gerrit.openafs.org/14339
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Andrew Deason
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 85893ac3df0c2cb48776cf1203ec200507b6ce7d)
+
+ Change-Id: Ie125d2dae1301ca5a4f8323099e6e42bc57b6d28
+ Reviewed-on: https://gerrit.openafs.org/14361
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 29cdc0af10cb2a0f4cb4d1b05e72d6f066a1a7a5
+Author: Yadavendra Yadav
+Date: Wed Apr 15 05:33:00 2020 -0500
+
+ LINUX: Always crref after _settok_setParentPag
+
+ Commit b61eac78 (Linux: setpag() may replace credentials) changed
+ PSetTokens2 to call crref() after _settok_setParentPag(), since
+ changing the parent PAG may change our credentials structure. But that
+ commit did not update the old pioctl PSetTokens, so -setpag
+ functionality remained broken on Linux for utilities that called the
+ old pioctl ('klog' is one such utility).
+
+ To fix this, we could copy the same code from PSetTokens2 into
+ PSetTokens. But instead just move this code into _settok_setParentPag
+ itself, to avoid code duplication. This commit also refactors
+ _settok_setParentPag a little to make the platform-specific ifdefs a
+ little easier to read through.
+
+ Reviewed-on: https://gerrit.openafs.org/14147
+ Reviewed-by: Andrew Deason
+ Tested-by: BuildBot
+ Reviewed-by: Yadavendra Yadav
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 8002a46125e8224ba697c194edba5ad09e4cfc44)
+
+ Change-Id: I6a9d10428fe470cb38e3ca669f273dde0fa9c875
+ Reviewed-on: https://gerrit.openafs.org/14328
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 9553128008c7656d78759aa685a574906d352f3c
+Author: Yadavendra Yadav
+Date: Wed Apr 15 05:33:00 2020 -0500
+
+ LINUX: Copy session keys to parent in SetToken
+
+ Commit 48589b5d (Linux: Restore aklog -setpag functionality for kernel
+ 2.6.32+) added code to SetToken() to copy our session keyring to the
+ parent process, in order to implement -setpag functionality. But this
+ was removed from SetToken() in commit 1a6d4c16 (Linux: fix aklog
+ -setpag to work with ktc_SetTokenEx), when the same code was moved to
+ ktc_SetTokenEx().
+
+ Add this code back to SetTokens(), so -setpag functionality can work
+ again with utilities that use older functions like ktc_SetToken, like
+ 'klog'.
+
+ Reviewed-on: https://gerrit.openafs.org/14146
+ Reviewed-by: Andrew Deason
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 826bb826274e48c867b41cb948d031a423373901)
+
+ Change-Id: I1ae90d92efa27bce2ff59ff9b9dcca370eaf4730
+ Reviewed-on: https://gerrit.openafs.org/14327
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 01dfdf2608c5643714da61950637c1e7d1994023
+Author: Yadavendra Yadav
+Date: Fri Aug 21 01:54:00 2020 +0530
+
+ afs: Avoid NatPing event on all connection
+
+ Inside release_conns_user_server, connection vector is traversed and after
+ destroying a connection new eligible connection is found on which NatPing
+ event will be set. Ideally there should be only one connection on which
+ NatPing should be set but in current code while traversing all connection
+ of server a NatPing event is set on all connections to that server. In
+ cases where we have large number of connection to a server this can lead
+ to huge number of “RX_PACKET_TYPE_VERSION” packets sent to a server.
+ Since this happen during Garbage collection of user structs, to simulate
+ this issue below steps were tried
+
+ - had one script which “cd” to a volume mount and then script sleeps for
+ large time.
+ - Ran one infinite while loop where above script was called using PAG
+ based tokens (As new connection will be created for each PAG)
+ - Instrumented the code, so that we hit above code segment where NatPing
+ event is set. Mainly reduced NOTOKTIMEOUT to 60 sec.
+
+ To fix this issue set NatPing on one connection and once it is set break
+ from “for” loop traversing the server connection.
+
+ Reviewed-on: https://gerrit.openafs.org/14312
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ Reviewed-by: Andrew Deason
+ (cherry picked from commit b968875a342ba8f11378e76560b46701f21391e8)
+
+ Change-Id: I8c70108ab3eb73ed1d9e598381bc29b87ca42aa0
+ Reviewed-on: https://gerrit.openafs.org/14364
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit e4103743d91bcdba1c57c850eb07b0b03abe72d6
+Author: Andrew Deason
+Date: Mon Jun 22 22:54:52 2020 -0500
+
+ volser: Don't NUL-pad failed pread()s in dumps
+
+ Currently, the volserver SAFSVolDump RPC and the 'voldump' utility
+ handle short reads from pread() for vnode payloads by padding the
+ missing data with NUL bytes. That is, if we request 4k of data for our
+ pread() call, and we only get back 1k of data, we'll write 1k of data
+ to the volume dump stream followed by 3k of NUL bytes, and log
+ messages like this:
+
+ 1 Volser: DumpFile: Error reading inode 1234 for vnode 5678
+ 1 Volser: DumpFile: Null padding file: 3072 bytes at offset 40960
+
+ This can happen if we hit EOF on the underlying file sooner than
+ expected, or if the OS just responds with fewer bytes than requested
+ for any reason.
+
+ The same code path tries to do the same NUL-padding if pread() returns
+ an error (for example, EIO), padding the entire e.g. 4k block with
+ NULs. However, in this case, the "padding" code often doesn't work as
+ intended, because we compare 'n' (set to -1) with 'howMany' (set to 4k
+ in this example), like so:
+
+ if (n < howMany)
+
+ Here, 'n' is signed (ssize_t), and 'howMany' is unsigned (size_t), and
+ so compilers will promote 'n' to the unsigned type, causing this
+ conditional to fail when n is -1. As a result, all of the relevant log
+ messages are skipped, and the data in the dumpstream gets corrupted
+ (we skip a block of data, and our 'howFar' offset goes back by 1). So
+ this can result in rare silent data corruption in volume dumps, which
+ can occur during volume releases, moves, etc.
+
+ To fix all of this, remove this bizarre NUL-padding behavior in the
+ volserver. Instead:
+
+ - For actual errors from pread(), return an error, like we do for I/O
+ errors in most other code paths.
+
+ - For short reads, just write out the amount of data we actually read,
+ and keep going.
+
+ - For premature EOF, treat it like a pread() error, but log a slightly
+ different message.
+
+ For the 'voldump' utility, the padding behavior can make sense if a
+ user is trying to recover volume data offline in a disaster recovery
+ scenario. So for voldump, add a new switch (-pad-errors) to enable the
+ padding behavior, but change the default behavior to bail out on
+ errors.
+
+ Reviewed-on: https://gerrit.openafs.org/14255
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 4498bd8179e5e93a33468be3c8e7a30e569d560a)
+
+ Change-Id: Idf89d70c9d4d650dbf7b73e67c5b71b9bab7c3f4
+ Reviewed-on: https://gerrit.openafs.org/14367
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 9947625a1d67b4ffdc0582e9081000e34be2b46b
+Author: Michael Meffie
+Date: Fri May 15 12:01:44 2020 -0400
+
+ vos: avoid CreateVolume when restoring over an existing volume
+
+ Currently, the UV_RestoreVolume2 function always attempts to create a
+ new volume, even when doing a incremental restore over an existing
+ volume. When the volume already exists, the volume creation operation
+ fails on the volume server with a VVOLEXISTS error. The client will then
+ attempt to obtain a transaction on the existing volume. If a transaction
+ is obtained, the incremental restore operation will proceed. If a full
+ restore is being done, the existing volume is removed and a new empty
+ volume is created.
+
+ Unfortunately, the failed volume creation is logged to by the volume
+ server, and so litters the log file with:
+
+ Volser: CreateVolume: Unable to create the volume; aborted, error code 104
+
+ To avoid polluting the volume server log with these messages, reverse
+ the logic in UV_RestoreVolume2. Assume the volume already exists and try
+ to get the transaction first when doing an incremental restore. Create a
+ new volume if the transaction cannot be obtained because the volume is
+ not present. When doing a full restore, remove the existing volume, if
+ one exists, and then create a new empty volume.
+
+ Reviewed-on: https://gerrit.openafs.org/14208
+ Tested-by: BuildBot
+ Reviewed-by: Marcio Brito Barbosa
+ Tested-by: Marcio Brito Barbosa
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit f5051b87a56b3a4f7fd7188cbd16a663eee8abbf)
+
+ Change-Id: I422b81e0c800ff655ac8851b2872f4d7160d79a8
+ Reviewed-on: https://gerrit.openafs.org/14326
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 967aa95fe23f98c911b8a618132442159eda3f77
+Author: Yadavendra Yadav
+Date: Wed Apr 29 05:10:05 2020 +0000
+
+ rxkad: Use krb5_enctype_keysize in tkt_DecodeTicket5
+
+ Inside tkt_DecodeTicket5 (rxkad/ticket5.c) function, keysize is calculated
+ using krb5_enctype_keybits and then dividing number of bits by 8. For 3DES
+ number of keybits are 168, so keysize comes out to 21(168/8). However
+ actual keysize of 3DES key is 24. This keysize is passed to
+ _afsconf_GetRxkadKrb5Key where keysize comparison happens, since there is
+ keysize mismatch it returns AFSCONF_BADKEY.
+
+ To fix this issue get keysize from krb5_enctype_keysize function instead
+ of krb5_enctype_keybits. Thanks to John Janosik (jpjanosi@us.ibm.com)
+ for analyzing and fixing this issue.
+
+ Reviewed-on: https://gerrit.openafs.org/14203
+ Tested-by: BuildBot
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 5d53ed0bdab6fea6d2426691bdef2b6f9cb7f2fe)
+
+ Change-Id: I16cd7a803a139802671a8045dac09e10ef4ad6cb
+ Reviewed-on: https://gerrit.openafs.org/14325
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Stephan Wiesand
+
+commit 28e96b954fe17810d1ebdd9fdd4702511e870a67
+Author: Jan Iven
+Date: Tue Sep 1 14:51:25 2020 +0200
+
+ ptserver: Remove duplicate ubik_SetLock in listSuperGroups
+
+ It looks like a call to ubik_SetLock(.. LOCKREAD) was left in
+ place in listSuperGroups after locking was moved to ReadPreamble
+ in commit a6d64d70 (ptserver: Refactor per-call ubik initialisation)
+ When compiled with 'supergroups', and once contacted by
+ "pts mem -expandgroups ..", ptserver will therefore abort() with
+ Ubik: Internal Error: attempted to take lock twice
+ This patch removes the superfluous ubik_SetLock.
+
+ FIXES 135147
+
+ Reviewed-on: https://gerrit.openafs.org/14338
+ Tested-by: BuildBot
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 696f2ec67b049639abf04905255a7d6173dbb19e)
+
+ Change-Id: I62bfe44e374b398278658b61f2ecf9a66fab18ae
+ Reviewed-on: https://gerrit.openafs.org/14345
+ Reviewed-by: Michael Meffie
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Stephan Wiesand
+
+commit c7a3154382376ca2e5effdfed2c447c86b9f6eed
+Author: Michael Meffie
+Date: Wed Jul 1 21:50:09 2020 -0400
+
+ redhat: Add make to the dkms-openafs pre-requirements
+
+ If `make` is not installed before dkms-openafs, the OpenAFS kernel
+ module is not built during the dkms-openafs package installation.
+
+ The failure happens in the "checking if linux kernel module build works"
+ configure step, which invokes `make` to check the linux buildsystem.
+ configure fails when `make` is not available, and gives the unhelpful
+ suggestion (in this case) of configuring with --disable-kernel module.
+
+ Running the configure.log in the dkms build directory shows:
+
+ configure:7739: checking if linux kernel module build works
+ make -C /lib/modules/4.18.0-193.6.3.el8_2.x86_64/build M=/var/lib/dkms/openafs/...
+ ./configure: line 7771: make: command not found
+ configure: failed using Makefile:
+
+ Avoid this build failure by adding `make` to the list of dkms-openafs
+ package pre-requirements.
+
+ Reviewed-on: https://gerrit.openafs.org/14266
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit e61ab9353e99d3298815296abf6b02c50ebe3df0)
+
+ Change-Id: I9b2bb73acabfabc1cf8b5514c8aa66572cc96066
+ Reviewed-on: https://gerrit.openafs.org/14314
+ Tested-by: BuildBot
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit ddaf6a74ff3e0aeb4c8b2b15886eaa5c90db59bf
+Author: Cheyenne Wills
+Date: Fri Aug 28 10:32:01 2020 -0600
+
+ INSTALL: document the minimum Linux kernel level
+
+ The change associated with gerrit #14300 removed support for older
+ Linux kernels (2.6.10 and earlier).
+
+ The commit 'Import of code from autoconf-archive' (d8205bbb4) introduced
+ a check for Autoconf 2.64. Autoconf 2.64 was released in 2009.
+
+ The commit 'regen.sh: Use libtoolize -i, and .gitignore generated
+ build-tools' (a7cc505d3) introduced a dependency on libtool's '-i'
+ option. Libtool supported the '-i' option with libtool 1.9b in 2004.
+
+ Update the INSTALL instructions to document a minimum Linux kernel
+ level and the minimum levels for autoconf and libtool.
+
+ Notes: RHEL4 (EOL in 2017) had a 2.6.9 kernel and RHEL5 has a 2.6.18
+ kernel. RHEL5 has libtool 1.5.22 and autoconf 2.59, RHEL6 has libtool
+ 2.2.6 and autoconf 2.63, and RHEL7 has libtool 2.4.2 and autoconf 2.69.
+
+ Reviewed-on: https://gerrit.openafs.org/14305
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 16bae98ec525fa013514fb46398df682d7637ae0)
+
+ Change-Id: I7aaf434928204df77851dd2d651d43b86f5b53d2
+ Reviewed-on: https://gerrit.openafs.org/14331
+ Reviewed-by: Michael Meffie
+ Tested-by: BuildBot
+ Reviewed-by: Stephan Wiesand
+
+commit fee39617c350623dc659e7a21287a1791bdff5d2
+Author: Andrew Deason
+Date: Wed Apr 1 22:59:38 2020 -0500
+
+ vos: Print "done" in non-verbose 'vos remsite'
+
+ Currently, 'vos remsite' always prints the message "Deleting the
+ replication site for volume %lu ...", and then calls VDONE if the
+ operation is successful. VDONE prints the trailing "done", but only if
+ -verbose is turned on, and so if -verbose is not specified, the output
+ of 'vos remsite' looks broken:
+
+ $ vos remsite fs1 vicepa vol.foo
+ Deleting the replication site for volume 1234 ...Removed replication site fs1 /vicepa for volume vol.foo
+
+ To fix this, unconditionally print the trailing "done", instead of
+ going through VDONE, so 'vos remsite' output now looks like this:
+
+ $ vos remsite fs1 vicepa vol.foo
+ Deleting the replication site for volume 1234 ... done
+ Removed replication site fs1 /vicepa for volume vol.foo
+
+ Reviewed-on: https://gerrit.openafs.org/14127
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit f16d40ad26df3ec871f8c73952594ad2e723c9b4)
+
+ Change-Id: I4cd7cb2156391004e57cd42437d7174a6bd70992
+ Reviewed-on: https://gerrit.openafs.org/14311
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit ff5b64d074376992d0be02e19b4da789c20d6bab
+Author: Marcio Barbosa
+Date: Thu Feb 13 00:39:00 2020 -0300
+
+ vos: take RO volume offline during convertROtoRW
+
+ The vos convertROtoRW command converts a RO volume into a RW volume.
+ Unfortunately, the RO volume in question is not set as "out of service"
+ during this process. As a result, accesses to the volume being converted
+ can leave volume objects in an inconsistent state.
+
+ Consider the following scenario:
+
+ 1. Create a volume on host_b and add replicas on host_a and host_b.
+
+ $ vos create host_b a vol_1
+ $ vos addsite host_b a vol_1
+ $ vos addiste host_a a vol_1
+
+ 2. Mount the volume:
+
+ $ fs mkmount /afs/.mycell/vol_1 vol_1
+ $ vos release vol_1
+ $ vos release root.cell
+
+ 3. Shutdown dafs on host_b:
+
+ $ bos shutdown host_b dafs
+
+ 4. Remove RO reference to host_b from the vldb:
+
+ $ vos remsite host_b a vol_1
+
+ 5. Attach the RO copy by touching it:
+
+ $ fs flushall
+ $ ls /afs/mycell/vol_1
+
+ 6. Convert RO copy to RW:
+
+ $ vos convertROtoRW host_a a vol_1
+
+ Notice that FSYNC_com_VolDone fails silently (FSYNC_BAD_STATE), leaving
+ the volume object for the RO copy set as VOL_STATE_ATTACHED (on success,
+ this volume should be set as VOL_STATE_DELETED).
+
+ 7. Add replica on host_a:
+
+ $ vos addsite host_a a vol_1
+
+ 8. Wait until the "inUse" flag of the RO entry is cleared (or force this
+ to happen by attaching multiple volumes).
+
+ 9. Release the volume:
+
+ $ vos release vol_1
+
+ Failed to start transaction on volume 536870922
+ Volume not attached, does not exist, or not on line
+ Error in vos release command.
+ Volume not attached, does not exist, or not on line
+
+ To fix this problem, take the RO volume offline during the vos
+ convertROtoRW operation.
+
+ Reviewed-on: https://gerrit.openafs.org/14066
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 32d35db64061e4102281c235cf693341f9de9271)
+
+ Change-Id: Ie4cfab2f04a8859ddfcaece371198ac544066770
+ Reviewed-on: https://gerrit.openafs.org/14310
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 696d9ce83e3556bda2d3945326937c63dd3560ed
+Author: Michael Meffie
+Date: Tue Apr 19 20:46:33 2016 -0400
+
+ ubik: positional io for db reads and writes
+
+ The ubik library was written before positional i/o was available and
+ issues an lseek system call for each database file read and write. This
+ change converts the ubik database accesses to use positional i/o on
+ platforms where pread and pwrite are available, in order to reduce
+ system call load.
+
+ The new inline uphys_pread and uphys_pwrite functions are supplied on
+ platforms which do not supply pread and pwrite. These functions fall
+ back to non-positional i/o. If these symbols are present in the database
+ server binary then the server process will continue to call lseek before
+ each read and write access of the database file.
+
+ This change does not affect the whole-file database synchronization done
+ by ubik during database recovery (via the DISK_SendFile and DISK_GetFile
+ RPCs), which still uses non-positional i/o. However, that code does not
+ share file descriptors with the phys.c code, so there is no possibility
+ of mixing positional and non-positional i/o on the same FDs.
+
+ Reviewed-on: https://gerrit.openafs.org/12272
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Marcio Brito Barbosa
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Mark Vitale
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit f62fb17b3cf1c886f8cfc2fabe9984070dd3eec4)
+
+ Change-Id: Iccc8f749c89659f4acebd74a1115425f69610ba8
+ Reviewed-on: https://gerrit.openafs.org/14142
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Marcio Brito Barbosa
+ Reviewed-by: Stephan Wiesand
+
+commit fffd6e07c87e36cd9a4a36858c3df0c282622195
+Author: Michael Meffie
+Date: Wed Apr 20 18:17:16 2016 -0400
+
+ ubik: remove unnecessary lseeks in uphys_open
+
+ The ubik database file access layer has a file descriptor cache to avoid
+ reopening the database file on each file access. However, the file
+ offset is reset with lseek on each and every use of the cached file
+ descriptor, and the file offset is set twice when reading or writing
+ data records.
+
+ This change removes unnecessary and duplicate lseek system calls to
+ reduce the system call load.
+
+ Reviewed-on: https://gerrit.openafs.org/12271
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Mark Vitale
+ Reviewed-by: Marcio Brito Barbosa
+ Reviewed-by: Michael Meffie
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit 6892bfbd701899281b34ee337637d438c7d8f8c6)
+
+ Change-Id: I5ea7857796d94eb5b659d868e79b9fea2411f301
+ Reviewed-on: https://gerrit.openafs.org/14141
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Marcio Brito Barbosa
+ Reviewed-by: Stephan Wiesand
+
+commit 438bc2c4caf96485e12eda9e7591fc4bd887ebad
+Author: Andrew Deason
+Date: Thu Nov 9 12:47:57 2017 -0600
+
+ asetkey: Add new 'delete' command variants
+
+ The current 'delete' command from asetkey only lets the user delete
+ old-style rxkad keys. Add a couple of new variants to allow specifying
+ the key type and subtype, so the user can delete specific key types
+ and enctypes if they want.
+
+ Reviewed-on: https://gerrit.openafs.org/12767
+ Reviewed-by: Benjamin Kaduk
+ Tested-by: BuildBot
+ (cherry picked from commit 5120409cc998284f2fb0467c2f88030976140341)
+
+ Change-Id: I8c762839b50f4faf5e583fb5c510bf2ff9dd2259
+ Reviewed-on: https://gerrit.openafs.org/14293
+ Tested-by: BuildBot
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Stephan Wiesand
+
+commit 1c395cd1bcf5770f70dce36ef29f9bd7ba98acaa
+Author: Kailas Zadbuke
+Date: Thu May 7 23:55:39 2020 -0400
+
+ salvaged: Fix "-parallel all" parsing
+
+ In salavageserver -parallel option takes "all" argument.
+ However the code does not parse the numeric part correctly. Due
+ to this, only single instance of salvageserver process was running
+ even if we provide the larger number with "all" argument.
+
+ With this fix, numeric part of "all" argument will be parsed
+ correctly and will start required number of salvageserver instances.
+
+ Reviewed-on: https://gerrit.openafs.org/14201
+ Tested-by: BuildBot
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 4512d04a9b721cd9052c0e8fe026c93faf6edb9e)
+
+ Change-Id: I8910fb514986a404b22256e8a514955a684c8a27
+ Reviewed-on: https://gerrit.openafs.org/14285
+ Reviewed-by: Andrew Deason
+ Reviewed-by: Cheyenne Wills
+ Reviewed-by: Kailas Zadbuke
+ Reviewed-by: Michael Meffie
+ Tested-by: BuildBot
+ Reviewed-by: Stephan Wiesand
+
+commit 38f7e123c33c1c11eb275e0619080ee874244afd
+Author: Cheyenne Wills
+Date: Tue Jun 16 15:20:20 2020 -0600
+
+ tests: Use usleep instead of nanosleep
+
+ Commit "Build tests by default" 68f406436cc21853ff854c514353e7eb607cb6cb
+ changes the build so tests are always built.
+
+ On Solaris 10 the build fails because nanosleep is in librt, which we do
+ not link against.
+
+ Replace nanosleep with usleep. This avoids introducing extra configure
+ tests just for Solaris 10.
+
+ Note that with Solaris 11 nanosleep was moved from librt to libc, the
+ standard C library.
+
+ Reviewed-on: https://gerrit.openafs.org/14244
+ Reviewed-by: Andrew Deason
+ Tested-by: BuildBot
+ Reviewed-by: Benjamin Kaduk
+ (cherry picked from commit 22a66e7b7e1d73437a8c26c2a1b45bc4ef214e77)
+
+ Change-Id: Ic24c5a149451955b5c130e7b36cec27e02688d83
+ Reviewed-on: https://gerrit.openafs.org/14291
+ Reviewed-by: Cheyenne Wills
+ Tested-by: BuildBot
+ Reviewed-by: Stephan Wiesand
+
+commit 264d6b786c2fd0aff0e4abe835e42868f936afce
+Author: Andrew Deason