git: kernel - Add frontend cache for cache_findmount()
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Feb 21 20:59:48 PST 2013
commit 07baed26dd284572e0253aef3527c82a999438c3
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Feb 21 20:32:03 2013 -0800
kernel - Add frontend cache for cache_findmount()
* When a name lookup crosses a mount point boundary it must call
cache_findmount() to locate the mount linkage. This linkage is
not stored in the vp or ncp because there is a 1:N relationship
between vp/ncp and possible mounts due to DragonFly's ability
to do arbitrary nullfs mounts in the topology.
* The mountlist scan requires an exclusive token to deal with ripouts
during the scan. This creates a bottleneck when highly parallel
filesystem operations are being run on the machine and use mount-crossing
paths or absolute paths.
* The frontend cache is able to use a shared spinlock for the fast path,
and implements a simple non-chained linear array hashed by pointer
values.
Summary of changes:
sys/kern/vfs_cache.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++---
sys/kern/vfs_syscalls.c | 3 ++
sys/sys/namecache.h | 3 +-
3 files changed, 94 insertions(+), 5 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/07baed26dd284572e0253aef3527c82a999438c3
--
DragonFly BSD source repository
More information about the Commits
mailing list