HEADS UP: nfs server locking.
Jeff Roberson
jroberson at chesapeake.net
Sat Mar 17 22:38:27 UTC 2007
The nfs server has had the last vestiges of giant removed when the local
filesystem doesn't require it. The nfsd locking has also been reduced in
scope. These patches were tested fairly thoroughly by isilon and kris,
but there is a potential for bugs.
Let me know if you encounter anything unusual. Keep in mind that there
are still client bugs under high load. If you attempt to break the server
you more often break the client instead.
Jeff
---------- Forwarded message ----------
Date: Sat, 17 Mar 2007 18:18:09 +0000 (UTC)
From: Jeff Roberson <jeff at FreeBSD.org>
To: src-committers at FreeBSD.org, cvs-src at FreeBSD.org, cvs-all at FreeBSD.org
Subject: cvs commit: src/sys/nfsserver nfs.h nfs_serv.c nfs_srvcache.c
nfs_srvsock.c nfs_srvsubs.c nfs_syscalls.c nfsm_subs.h
jeff 2007-03-17 18:18:09 UTC
FreeBSD src repository
Modified files:
sys/nfsserver nfs.h nfs_serv.c nfs_srvcache.c
nfs_srvsock.c nfs_srvsubs.c
nfs_syscalls.c nfsm_subs.h
Log:
- Turn all explicit giant acquires into conditional VFS_LOCK_GIANTs.
Only ops which used namei still remained.
- Implement a scheme for reducing the overhead of tracking which vops
require giant by constantly reducing the number of recursive giant
acquires to one, leaving us with only one vfslocked variable.
- Remove all NFSD lock acquisition and release from the individual nfs
ops. Careful examination has shown that they are not required. This
greatly simplifies the code.
Sponsored by: Isilon Systems, Inc.
Discussed with: rwatson
Tested by: kkenn
Approved by: re
Revision Changes Path
1.82 +1 -4 src/sys/nfsserver/nfs.h
1.171 +187 -554 src/sys/nfsserver/nfs_serv.c
1.44 +2 -0 src/sys/nfsserver/nfs_srvcache.c
1.102 +0 -10 src/sys/nfsserver/nfs_srvsock.c
1.146 +42 -71 src/sys/nfsserver/nfs_srvsubs.c
1.112 +2 -0 src/sys/nfsserver/nfs_syscalls.c
1.39 +2 -5 src/sys/nfsserver/nfsm_subs.h
More information about the freebsd-current
mailing list