DragonFly BSD
DragonFly commits List (threaded) for 2013-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: kernel - Add frontend cache for cache_findmount()


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 21 Feb 2013 20:59:48 -0800 (PST)

commit 07baed26dd284572e0253aef3527c82a999438c3
Author: Matthew Dillon <dillon@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



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]