]> git.michaelhowe.org Git - packages/o/openafs.git/commit
afs: Avoid GetDCache delays on screwy cache
authorAndrew Deason <adeason@sinenomine.net>
Thu, 26 Apr 2018 17:01:57 +0000 (12:01 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 15 Jun 2018 13:11:40 +0000 (09:11 -0400)
commit56ce248751d804efe664c9af3b62f5e15a026afe
treee8cbf611cd82a3e867aa89cef48a48342714790b
parent38207faabe6641e97d177160f45ccdaef8cef8ab
afs: Avoid GetDCache delays on screwy cache

Currently, if our afs_AllocDCache call fails in afs_GetDCache, we
retry once per second for 5 minutes. The reasoning is that we're out
of dcache slots, and so if we wait a little while, maybe something
will become freeable and we can continue.

However, afs_AllocDCache can also fail if we have plenty of free
dslots, but we are unable to successfully call afs_GetUnusedDSlot() on
any of them. This can happen if our disk cache is screwed up, and so
waiting and retrying will not make things better (but we'll spew a ton
of "disk cache read error in CacheItems slot" errors in the log each
time, and do so 300 times).

So instead, only do our sleep/retry loop if we actually appear to be
out of free or discarded dslots. Otherwise, just return an error
immediately, since sleeping and retrying will not make anything
better.

Reviewed-on: https://gerrit.openafs.org/13033
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit bec329c1c81d96b5933527f7cdb3638f24833087)

Change-Id: Iaee53eca133985ad5964b61b3641cd8ad2802014
Reviewed-on: https://gerrit.openafs.org/13190
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Joe Gorse <jhgorse@gmail.com>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/afs_dcache.c