git: kernel - Add per-mount token to replace mplock.

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Dec 26 20:59:32 PST 2009


commit aac0aabd82a73635c9a3833e2802aa51946e5246
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Dec 26 18:12:56 2009 -0800

    kernel - Add per-mount token to replace mplock.
    
    * Fix issues with dupfdopen() not being MPSAFE.
    
    * Implement a dummy mount structure for devfs-synthesized vnodes prior
      to the root mount.
    
    * Wrap all VFS_*() calls, including vfs_init() and vfs_uninit(), to
      acquire the per-mount token if not flagged as being MPSAFE.
    
    * Wrap all VOP_*() calls to acquire the per-mount token if not flagged
      as being MPSAFE.
    
    * Move VOP_READ/VOP_WRITE MPSAFE flags to the mount structure.
    
    * Make fifoops MPSAFE (so HAMMER can flag read & write as being
      MPSAFE generally).
    
    * The VFS code currently also acquires the MP lock when not MPSAFE
      (there are things called by VFSes which are not yet MPSAFE), except
      for read() and write().

Summary of changes:
 sys/conf/files                 |    1 +
 sys/kern/kern_descrip.c        |   13 +-
 sys/kern/vfs_conf.c            |    7 +-
 sys/kern/vfs_init.c            |    5 +-
 sys/kern/vfs_mount.c           |   35 +++-
 sys/kern/vfs_syscalls.c        |   14 +-
 sys/kern/vfs_vfsops.c          |  330 ++++++++++++++++++++++++++++++++++++
 sys/kern/vfs_vnops.c           |   43 +----
 sys/kern/vfs_vopops.c          |  364 ++++++++++++++++++++++++++++++++++++++--
 sys/sys/mount.h                |   79 +++++++--
 sys/sys/vfsops.h               |    6 +-
 sys/sys/vnode.h                |   11 +-
 sys/vfs/fifofs/fifo_vnops.c    |   85 +++++++---
 sys/vfs/hammer/hammer_inode.c  |    5 -
 sys/vfs/hammer/hammer_vfsops.c |   12 ++
 15 files changed, 886 insertions(+), 124 deletions(-)
 create mode 100644 sys/kern/vfs_vfsops.c

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/aac0aabd82a73635c9a3833e2802aa51946e5246


-- 
DragonFly BSD source repository





More information about the Commits mailing list