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