afs: Return memcache allocation errors 07/13307/5
authorAndrew Deason <adeason@sinenomine.net>
Tue, 7 Aug 2018 22:08:26 +0000 (17:08 -0500)
committerStephan Wiesand <stephan.wiesand@desy.de>
Fri, 21 Dec 2018 11:10:24 +0000 (06:10 -0500)
commitfc9211be1b242e7026a679a41e5f53f3b4a7e818
tree911bda9beddc775a1e8be172542ea1236df244aa
parenteca7ade855e0f9b14d0bb763be2d2d3e925dcd86
afs: Return memcache allocation errors

During cache initialization, we can fail to allocate our dcache
entries for memcache. Currently when this happens, we just log a
message and try to disable dcache access. However, this results in at
least one code path that causes a panic anyway during startup, since
afs_CacheTruncateDaemon will try to trim the cache, and afs_GetDownD
will call afs_MemGetDSlot, and we cannot find the given dslot.

To avoid this, change our cache initialization to return an error,
instead of trying to continue without a functional dcache. This causes
afs_dcacheInit to return an error in this case, and by extension
afs_CacheInit and the AFSOP_CACHEINIT syscall. Also change afsd to
actually detect errors from AFSOP_CACHEINIT, and to bail out when it
does.

Thanks to gsgatlin@ncsu.edu for reporting the relevant panic.

Reviewed-on: https://gerrit.openafs.org/13273
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit 0da5ac4d9fb2a9b46c7415403a3cd26e711554e2)

Change-Id: I00b0d3dac1f4d8edc46389fe3c59501fd23c18f8
Reviewed-on: https://gerrit.openafs.org/13307
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
src/afs/afs_dcache.c
src/afs/afs_init.c
src/afs/afs_prototypes.h
src/afsd/afsd.c