mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
3f393cea96
On some platforms (such as LINUX), unlinked vcaches are not destroyed until the next execution of afs_ShakeLooseVCaches(). Since the hash for a given vcache is computed from its volume id and vnode number, keeping unlinked vcaches around can be a problem if files are repeatedly deleted and recreated in the same volume. In this scenario, the same vnode number will be reused several times, resulting in many vcaches with the same volume id and vnode number (but different unique ids) in the same bucket. Consequently, finding a given vcache in the bucket in question can be time consuming (and cause extra cpu processing), as we would have to traverse a long linked list. To mitigate this problem, move vcaches associated with unlinked files to the least recently used position in our VLRU, prioritizing their removal the next time afs_ShakeLooseVCaches() is executed. Introduce the QAddEnd() macro to make it easier to add a vcache to the end of the VLRU. Change-Id: Idc74da0c3c0b27bfdf2cd491b003bdd42c889a95 Reviewed-on: https://gerrit.openafs.org/14961 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Cheyenne Wills <cwills@sinenomine.net> Reviewed-by: Mark Vitale <mvitale@sinenomine.net> Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Andrew Deason <adeason@sinenomine.net> |
||
---|---|---|
build-tools | ||
doc | ||
src | ||
tests | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.splintrc | ||
acinclude.m4 | ||
CODING | ||
configure-libafs.ac | ||
configure.ac | ||
CONTRIBUTING | ||
INSTALL | ||
libafsdep | ||
LICENSE | ||
Makefile-libafs.in | ||
Makefile.in | ||
NEWS | ||
NTMakefile | ||
README | ||
README-WINDOWS | ||
regen.sh |
AFS is a distributed file system that enables users to share and access all of the files stored in a network of computers as easily as they access the files stored on their local machines. The file system is called distributed for this exact reason: files can reside on many different machines, but are available to users on every machine. OpenAFS 1.0 was originally released by IBM under the terms of the IBM Public License 1.0 (IPL10). For details on IPL10 see the LICENSE file in this directory. The current OpenAFS distribution is licensed under a combination of the IPL10 and many other licenses as granted by the relevant copyright holders. The LICENSE file in this directory contains more details, thought it is not a comprehensive statement. See INSTALL for information about building and installing OpenAFS on various platforms. See CODING for developer information and guidelines. See NEWS for recent changes to OpenAFS.