svc: Clean up deferred requests on transport destruction
authorTom Tucker <tom@opengridcomputing.com>
Mon, 5 Jan 2009 21:21:19 +0000 (15:21 -0600)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 26 May 2010 21:27:08 +0000 (14:27 -0700)
commit60f30297ff9403dec857f23292bc82ecdc5b4a57
treeaffade200e8ac77c00ff86100ab7bcc0804d0b77
parentce58c0ab4bcf38482dfc095af0c4ed55a5a88698
svc: Clean up deferred requests on transport destruction

commit 22945e4a1c7454c97f5d8aee1ef526c83fef3223 upstream.

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>
Cc: roma1390 <roma1390@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/sunrpc/svc_xprt.c