freebsd-skq/sys/fs/nfsclient
Rick Macklem 175b3f31d3 Both NFS clients can deadlock when using the "rdirplus" mount
option. This can occur when an nfsiod thread that already holds
a buffer lock attempts to acquire a vnode lock on an entry in
the directory (a LOR) when another thread holding the vnode lock
is waiting on an nfsiod thread. This patch avoids the deadlock by disabling
readahead for this case, so the nfsiod threads never do readdirplus.
Since readaheads for directories need the directory offset cookie
from the previous read, they cannot normally happen in parallel.
As such, testing by jhb@ and myself didn't find any performance
degredation when this patch is applied. If there is a case where
this results in a significant performance degradation, mounting
without the "rdirplus" option can be done to re-enable readahead
for directories.

Reported and tested by:	jhb
Reviewed by:	jhb
MFC after:	2 weeks
2013-04-18 13:09:04 +00:00
..
nfs_clbio.c Both NFS clients can deadlock when using the "rdirplus" mount 2013-04-18 13:09:04 +00:00
nfs_clcomsubs.c Move the NFSv4.1 client patches over from projects/nfsv4.1-client 2012-12-08 22:52:39 +00:00
nfs_clkdtrace.c Move the NFSv4.1 client patches over from projects/nfsv4.1-client 2012-12-08 22:52:39 +00:00
nfs_clkrpc.c Revamp the old NFS server's File Handle Affinity (FHA) code so that 2013-04-17 21:00:22 +00:00
nfs_clnfsiod.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_clnode.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
nfs_clport.c Initialize the variable to avoid (false) compiler warning about 2013-03-21 12:59:24 +00:00
nfs_clrpcops.c Be conservative and do not try to consume more bytes than was 2013-01-27 09:34:25 +00:00
nfs_clstate.c The request queue is already locked, so we don't need the splsofclock/splx 2013-02-21 02:43:44 +00:00
nfs_clsubs.c Replace the MNT_VNODE_FOREACH interface with MNT_VNODE_FOREACH_ALL. 2012-04-17 16:28:22 +00:00
nfs_clvfsops.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
nfs_clvnops.c Revert 195703 and 195821 as this special stop handling in NFS is now 2013-03-13 21:06:03 +00:00
nfs_kdtrace.h Add DTrace support to the new NFS client. This is essentially 2011-06-18 23:02:53 +00:00
nfs.h Modify the experimental (newnfs) NFS client so that it uses the 2011-04-25 23:12:18 +00:00
nfsmount.h Move the NFSv4.1 client patches over from projects/nfsv4.1-client 2012-12-08 22:52:39 +00:00
nfsnode.h Move the NFSv4.1 client patches over from projects/nfsv4.1-client 2012-12-08 22:52:39 +00:00
nlminfo.h