Neil Brown had to explain to me why we do this here; record the answer
for posterity.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
if (test_and_set_bit(XPT_BUSY, &xprt->xpt_flags))
/* someone else will have to effect the close */
return;
if (test_and_set_bit(XPT_BUSY, &xprt->xpt_flags))
/* someone else will have to effect the close */
return;
+ /*
+ * We expect svc_close_xprt() to work even when no threads are
+ * running (e.g., while configuring the server before starting
+ * any threads), so if the transport isn't busy, we delete
+ * it ourself:
+ */
svc_delete_xprt(xprt);
}
EXPORT_SYMBOL_GPL(svc_close_xprt);
svc_delete_xprt(xprt);
}
EXPORT_SYMBOL_GPL(svc_close_xprt);