linux-stable/net/sunrpc/xprtrdma
Neil Brown b48fa6b991 sunrpc: centralise most calls to svc_xprt_received
svc_xprt_received must be called when ->xpo_recvfrom has finished
receiving a message, so that the XPT_BUSY flag will be cleared and
if necessary, requeued for further work.

This call is currently made in each ->xpo_recvfrom function, often
from multiple different points.  In each case it is the earliest point
on a particular path where it is known that the protection provided by
XPT_BUSY is no longer needed.

However there are (still) some error paths which do not call
svc_xprt_received, and requiring each ->xpo_recvfrom to make the call
does not encourage robustness.

So: move the svc_xprt_received call to be made just after the
call to ->xpo_recvfrom(), and move it of the various ->xpo_recvfrom
methods.

This means that it may not be called at the earliest possible instant,
but this is unlikely to be a measurable performance issue.

Note that there are still other calls to svc_xprt_received as it is
also needed when an xprt is newly created.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2010-05-03 08:33:00 -04:00
..
Makefile
rpc_rdma.c XPRTRDMA: correct an rpc/rdma inline send marshaling error 2009-03-11 14:37:55 -04:00
svc_rdma.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
svc_rdma_marshal.c
svc_rdma_recvfrom.c sunrpc: centralise most calls to svc_xprt_received 2010-05-03 08:33:00 -04:00
svc_rdma_sendto.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
svc_rdma_transport.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
transport.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
verbs.c net: Move && and || to end of previous line 2009-11-29 16:55:45 -08:00
xprt_rdma.h RPC/RDMA: harden connection logic against missing/late rdma_cm upcalls. 2008-10-10 15:13:31 -04:00