afs: only reset access caches for the matching cell
authorMark Vitale <mvitale@sinenomine.net>
Thu, 3 Apr 2014 20:37:51 +0000 (16:37 -0400)
committerD Brashear <shadow@your-file-system.com>
Thu, 5 Jun 2014 11:20:40 +0000 (07:20 -0400)
commit7d4f3a4710fb8c9fbde4294c2458ecf32658300b
treed9e6e47bcea6f6b804aa6ef2bde221aa5221a6f6
parente2f666fe81f2152a9dd1f35680499cf029e8381b
afs: only reset access caches for the matching cell

When an AFS user's tokens change (unlog, aklog) or expire,
afs_ResetAccessCache() is called to reset all the access caches
for that uid/PAG.

However, a user/PAG may have tokens for multiple cells, and they
may expire or be set/reset at different times.  Therefore, it is
incorrect to assume that all access caches for a uid/PAG should
be discarded when only one cell's tokens have changed.

Modify afs_ResetAccessCache() to acccept a new argument 'cell',
and only reset the access caches for a uid/PAG if the vcache
resides in the specified cell.  If the caller really wants to
reset all a user's access caches,┬áspecify cell=-1.

For cache managers that are running with multiple PAGs and multiple
cells, this should improve performance because 1) it avoids
scanning access caches chains for vcaches that are not part of the
current cell and 2) it avoids deleting access caches that may still
good, thus preventing unnecessary FetchStatus calls.

Change-Id: Id4c138dab45fd48265a4029880a5d57947e67a52
Reviewed-on: http://gerrit.openafs.org/11070
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: D Brashear <shadow@your-file-system.com>
src/afs/afs_prototypes.h
src/afs/afs_user.c