afs: fix broken volume callbacks (e.g. vos release) 90/13090/2
authorMark Vitale <mvitale@sinenomine.net>
Fri, 25 May 2018 21:05:28 +0000 (17:05 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 26 May 2018 02:05:14 +0000 (22:05 -0400)
commit1dc9bb4e7362029db073250f23a09f949e1655de
treeafd1fd60ff884c8a682c608362bd7e2dc03985c8
parente71985bce593e9dba43443e084eb726fcc5259e3
afs: fix broken volume callbacks (e.g. vos release)

Commit e99bfcfaa3bca3e65f03928718c2c9eb5eff7c8c ('afs: use jenkins hash
for dcache, vcache tables') introduced new hashing implementations for
the dcache and vcache hash tables.  Unfortunately, a typo introduced a
bug into the VCHashV hash function; instead of hashing by volume id, it
currently hashes by vnode.

The most common symptom is that volume callbacks (RXAFSCB_Callback with
fid <volid>:0:0) fail to find and invalidate all the files for the
specified volume.  This typically manifests as persistent stale RO
content after a 'vos release' for new RW content.

This bug only affects the Unix cache manager; the Windows cache manager
implementation of RXAFSCB_Callback was unaffected.

Change-Id: I7edca660671b880a69f0c499d54adffbbe62d2b2
Reviewed-on: https://gerrit.openafs.org/13090
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/afs_vcache.c