svc: Clean up deferred requests on transport destruction
authorTom Tucker <tom@opengridcomputing.com>
Mon, 5 Jan 2009 21:21:19 +0000 (15:21 -0600)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 7 Jan 2009 22:08:46 +0000 (17:08 -0500)
commit22945e4a1c7454c97f5d8aee1ef526c83fef3223
treef082143420da55b97c98a1534336b0cf03412e0b
parent9a8d248e2d2e9c880ac4561f27fea5dc200655bd
svc: Clean up deferred requests on transport destruction

A race between svc_revisit and svc_delete_xprt can result in
deferred requests holding references on a transport that can never be
recovered because dead transports are not enqueued for subsequent
processing.

Check for XPT_DEAD in revisit to clean up completing deferrals on a dead
transport and sweep a transport's deferred queue to do the same for queued
but unprocessed deferrals.

Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
net/sunrpc/svc_xprt.c