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

git: network - Tokenize NFS, fix MP races


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 10 Sep 2010 12:14:56 -0700 (PDT)

commit c6b43e93a6cf0a70bde32cd141057a0df9860e13
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Fri Sep 10 12:09:34 2010 -0700

    network - Tokenize NFS, fix MP races
    
    * Now that the rest of the network stack is running MPSAFE, poor NFS is
      hitting races and other issues because it was depending on the MP lock.
    
    * Recombobulate NFS with tokens, protecting all border crossings:
    
      A global nfs_token is used for the nfs mount list, nfsd list, and
      server socket list.
    
      A per-socket token (nfssvc_sock->ns_token) governs each served mount.
    
      A per-mount token (nfsmount->nm_token) governs each client mount.
    
    * Callouts and TCP upcalls are protected.  The per-socket TCP upcall
      is protected by the nfssvc_sock token.
    
    * The NFS iod thread pairs and nfsd threads now run MPSAFE.
    
    * NFSv3 is now holy-shit fast and can trivially max-out a GigE link
      without TSO when the server is not otherwise limited by server-side
      disks.

Summary of changes:
 sys/vfs/nfs/nfs.h          |    7 ++-
 sys/vfs/nfs/nfs_bio.c      |   14 ++--
 sys/vfs/nfs/nfs_iod.c      |   19 +----
 sys/vfs/nfs/nfs_node.c     |   11 +++-
 sys/vfs/nfs/nfs_socket.c   |   32 +++++++-
 sys/vfs/nfs/nfs_subs.c     |    8 ++-
 sys/vfs/nfs/nfs_syscalls.c |   91 ++++++++++++++++++-----
 sys/vfs/nfs/nfs_vfsops.c   |   41 +++++++++-
 sys/vfs/nfs/nfs_vnops.c    |  174 ++++++++++++++++++++++++++++++++++++++-----
 sys/vfs/nfs/nfsmount.h     |    2 +
 10 files changed, 324 insertions(+), 75 deletions(-)

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


-- 
DragonFly BSD source repository



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