linux/net/sunrpc
Trond Myklebust c1384c9c4c SUNRPC: fix hang due to eventd deadlock...
Brian Behlendorf writes:

The root cause of the NFS hang we were observing appears to be a rare
deadlock between the kernel provided usermodehelper API and the linux NFS
client.  The deadlock can arise because both of these services use the
generic linux work queues.  The usermodehelper API run the specified user
application in the context of the work queue.  And NFS submits both cleanup
and reconnect work to the generic work queue for handling.  Normally this
is fine but a deadlock can result in the following situation.

  - NFS client is in a disconnected state
  - [events/0] runs a usermodehelper app with an NFS dependent operation,
    this triggers an NFS reconnect.
  - NFS reconnect happens to be submitted to [events/0] work queue.
  - Deadlock, the [events/0] work queue will never process the
    reconnect because it is blocked on the previous NFS dependent
    operation which will not complete.`

The solution is simply to run reconnect requests on rpciod.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-07-10 23:40:31 -04:00
..
auth_gss sendfile: convert nfsd to splice_direct_to_actor() 2007-07-10 08:04:14 +02:00
Makefile SUNRPC: remove old portmapper 2007-04-30 22:17:15 -07:00
auth.c Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ 2007-02-12 22:43:25 -08:00
auth_null.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
auth_unix.c SUNRPC: fix print format for tk_pid 2007-02-03 15:35:10 -08:00
cache.c [SUNRPC]: cleanup: use seq_release_private() where appropriate 2007-04-26 01:03:43 -07:00
clnt.c SUNRPC: clean up rpc_call_async/rpc_call_sync/rpc_run_task 2007-07-10 23:40:30 -04:00
rpc_pipe.c SUNRPC: Convert rpc_clnt->cl_users to a kref 2007-07-10 23:40:28 -04:00
rpcb_clnt.c SUNRPC: Remove rpc_clnt->cl_count 2007-07-10 23:40:29 -04:00
sched.c SUNRPC: clean up rpc_call_async/rpc_call_sync/rpc_run_task 2007-07-10 23:40:30 -04:00
socklib.c [NET]: Treat CHECKSUM_PARTIAL as CHECKSUM_UNNECESSARY 2007-04-25 22:28:43 -07:00
stats.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sunrpc_syms.c SUNRPC: Remove redundant calls to rpciod_up()/rpciod_down() 2007-07-10 23:40:30 -04:00
svc.c sendfile: convert nfsd to splice_direct_to_actor() 2007-07-10 08:04:14 +02:00
svcauth.c Fix occurrences of "the the " 2007-05-09 08:57:56 +02:00
svcauth_unix.c knfsd: rename sk_defer_lock to sk_lock 2007-05-09 12:30:54 -07:00
svcsock.c knfsd: simplify a 'while' condition in svcsock.c 2007-05-09 12:30:54 -07:00
sysctl.c [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
timer.c SUNRPC: remove extraneous header inclusions 2006-09-22 23:24:47 -04:00
xdr.c [NET] SUNRPC: Fix whitespace errors. 2007-02-10 23:20:13 -08:00
xprt.c SUNRPC: fix hang due to eventd deadlock... 2007-07-10 23:40:31 -04:00
xprtsock.c SUNRPC: fix hang due to eventd deadlock... 2007-07-10 23:40:31 -04:00