vfs patch 03 (preliminary)

Matthew Dillon dillon at apollo.backplane.com
Wed Aug 25 23:19:22 PDT 2004


    This patch removes the v_vnlock mess and simply embeds the vnode lock
    directly in the vnode.  It goes one step beyond what FreeBSD-5 did in
    that it entirely removes the v_vnlock pointer field (and later on I will
    probably remove v_interlock in favor the v_lock.lck_interlock).

    This patch is currently only lightly tested and I do not consider it
    stable yet, I am looking for volunteers to test it with the various 
    filesystems you normally use and report on any problems.  e.g. msdosfs,
    cd9660, nullfs, unionfs, and so forth.  UFS testing under heavy loads
    is also needed.

    I fully expect there to be some problems.  DO NOT apply this patch unless
    you can handle the machine crashing and getting backtraces and dumps.  The
    code will be committed, tentitively, on Saturday.

	fetch http://leaf.dragonflybsd.org/~dillon/vfs03.patch

    * remove v_vnlock.
    * remove locks embedded in v_data.
    * embed a lock in the vnode and consolidate inode locks into vnode locks.
    * makes locking mandatory (removes vop_nolock() and friends).
      (the default is now vop_stdlock, rather then vop_nolock).
    * substantially rewrites the inode allocation interlocks in most of the
      VFS's.
    * replaces procfs's linear lookup list with a small hash table.  Adds
      code to fix a lookup/free race.
    * rewrites nullfs's locking code (this is where problems are most likely
      to be found).
    * replaces NFS's use of shared locks with normal shared/exclusive locks
      [ By Tomorrow I'll have an update which also fixes the race-to-root
        problem when an NFS volume goes offline ]

							-Matt






More information about the Kernel mailing list