Windows: Negative Caching for Volume Lookups
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 16 Sep 2010 12:23:41 +0000 (14:23 +0200)
committerJeffrey Altman <jaltman@openafs.org>
Tue, 21 Sep 2010 04:06:50 +0000 (21:06 -0700)
commita00da7d2c9a66f1e5984ec2b3bd3efe10793e1c9
treecadef57be22fffefebf5fd8030f79209831b5c19
parent089cd2c1039315fe400f85eec1c9f2152ea090c7
Windows: Negative Caching for Volume Lookups

If a volume lookup returns VL_NOENT or VL_BADNAME, cache the negative
response for five minutes.  This prevents volume lookup storms caused
by the same volume lookup being performed repeated during a short
time period.  This can happen if mount points to volumes that do not
exist are present in a directory that is being evaluated by Windows
Explorer or Common Control File Dialogs.

This functionality is implemented by storing the most recent update
time for the volume group as part of the cm_volume_t.  A non-existing
volume group is identified with a new CM_VOLUMEFLAG_NOEXIST flag.
The presence of the lastUpdateTime value also permits volume location
information to expire at lastUpdateTime + lifetime instead of expiring
all volume information simultaneously each lifetime period.

LICENSE MIT

Change-Id: I01c5122a153fadc3824ff916655b0199d5c1de3c
Reviewed-on: http://gerrit.openafs.org/2771
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
src/WINNT/afsd/cm_daemon.c
src/WINNT/afsd/cm_ioctl.c
src/WINNT/afsd/cm_memmap.c
src/WINNT/afsd/cm_scache.h
src/WINNT/afsd/cm_volume.c
src/WINNT/afsd/cm_volume.h