]> git.neil.brown.name Git - history.git/commit
[PATCH] 2.5.25 Clean up RPC receive code
authorTrond Myklebust <trond.myklebust@fys.uio.no>
Sun, 14 Jul 2002 14:26:44 +0000 (07:26 -0700)
committerTrond Myklebust <trond.myklebust@fys.uio.no>
Sun, 14 Jul 2002 14:26:44 +0000 (07:26 -0700)
commit1eedbd787885779dc4ddab09772ac0a2334f2f69
tree521001678f9d280298f85367c18fd93163a9f566
parent45bde054c19ee2ff05078c3aa05efb6d80c764b3
[PATCH] 2.5.25 Clean up RPC receive code

  Divorces task xid<->request slot mapping from the internals of the
rpc_waitqueue xprt->pending. Instead xprt_lookup_rqst() is made to
search a dedicated list (xprt->recv) on which the request slot is
placed immediately after being allocated to a task. The new queue is
protected using the spinlock xprt->sock_lock rather than the generic
RPC task lock.

  Both udp_data_ready() and tcp_data_ready() (well tcp_read_request()
actually) now need to protect against the request being removed from
the xprt->recv list while they copy the RPC reply data from the skb.
On the other hand, they no longer need to worry about the task
disappearing from xprt->pending. This means that rpc_lock_task() hack
can be replaced by the spinlock xprt->sock_lock.
include/linux/sunrpc/xprt.h
net/sunrpc/clnt.c
net/sunrpc/xprt.c