diff options
author | mohans <mohans@FreeBSD.org> | 2007-10-12 19:12:21 +0000 |
---|---|---|
committer | mohans <mohans@FreeBSD.org> | 2007-10-12 19:12:21 +0000 |
commit | 77c0dc0000d99e0fec699a08ebe6226272a2ded5 (patch) | |
tree | 0d7de3ddaa35c174d847664040eb069950b8a6c1 /sys/nfsclient/nfsmount.h | |
parent | b3ebdff90d88ca9dd9bcdbdb45b44a3204e701d6 (diff) | |
download | FreeBSD-src-77c0dc0000d99e0fec699a08ebe6226272a2ded5.zip FreeBSD-src-77c0dc0000d99e0fec699a08ebe6226272a2ded5.tar.gz |
NFS MP scaling changes.
- Eliminate the hideous nfs_sndlock that serialized NFS/TCP request senders
thru the sndlock.
- Institute a new nfs_connectlock that serializes NFS/TCP reconnects. Add
logic to wait for pending request senders to finish sending before
reconnecting. Dial down the sb_timeo for NFS/TCP sockets to 1 sec.
- Break out the nfs xid manipulation under a new nfs xid lock, rather than
over loading the nfs request lock for this purpose.
- Fix some of the locking in nfs_request.
Many thanks to Kris Kennaway for his help with this and for initiating the
MP scaling analysis and work. Kris also tested this patch thorougly.
Approved by: re@ (Ken Smith)
Diffstat (limited to 'sys/nfsclient/nfsmount.h')
-rw-r--r-- | sys/nfsclient/nfsmount.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/nfsclient/nfsmount.h b/sys/nfsclient/nfsmount.h index 4fd2afe..8615846 100644 --- a/sys/nfsclient/nfsmount.h +++ b/sys/nfsclient/nfsmount.h @@ -40,7 +40,9 @@ struct nfs_tcp_mountstate { int rpcresid; #define NFS_TCP_EXPECT_RPCMARKER 0x0001 /* Expect to see a RPC/TCP marker next */ #define NFS_TCP_FORCE_RECONNECT 0x0002 /* Force a TCP reconnect */ +#define NFS_TCP_WAIT_WRITE_DRAIN 0x0004 /* Waiting for socket writers to finish */ int flags; + int sock_send_inprog; }; /* |