SUNRPC: Run rpc timeout functions as callbacks instead of in softirqs
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 22 Feb 2008 21:34:17 +0000 (16:34 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 26 Feb 2008 05:40:44 +0000 (21:40 -0800)
commit5d00837b90340af9106dcd93af75fd664c8eb87f
treef537dc84421cf150d66b630e56ea8107078c07a8
parentfda1393938035559b417dd5b26b9cc293a7aee00
SUNRPC: Run rpc timeout functions as callbacks instead of in softirqs

An audit of the current RPC timeout functions shows that they don't really
ever need to run in the softirq context. As long as the softirq is
able to signal that the wakeup is due to a timeout (which it can do by
setting task->tk_status to -ETIMEDOUT) then the callback functions can just
run as standard task->tk_callback functions (in the rpciod/process
context).

The only possible border-line case would be xprt_timer() for the case of
UDP, when the callback is used to reduce the size of the transport
congestion window. In testing, however, the effect of moving that update
to a callback would appear to be minor.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4proc.c
fs/nfs/nfs4state.c
include/linux/sunrpc/sched.h
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/rpcb_clnt.c
net/sunrpc/sched.c
net/sunrpc/xprt.c