nfsd4: shutdown callbacks on expiry
authorJ. Bruce Fields <bfields@citi.umich.edu>
Mon, 22 Feb 2010 01:41:19 +0000 (17:41 -0800)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Fri, 2 Apr 2010 20:36:30 +0000 (16:36 -0400)
Once we've expired the client, there's no further purpose to the
callbacks; go ahead and shut down the callback client rather than
waiting for the last reference to go.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
fs/nfsd/nfs4state.c

index efef7f2442d5e8ec6cb3c654e4c78298ee3db2f0..9ce58318ca8c4431286c3206425ea66623f498dd 100644 (file)
@@ -697,9 +697,6 @@ shutdown_callback_client(struct nfs4_client *clp)
 static inline void
 free_client(struct nfs4_client *clp)
 {
-       shutdown_callback_client(clp);
-       if (clp->cl_cb_xprt)
-               svc_xprt_put(clp->cl_cb_xprt);
        if (clp->cl_cred.cr_group_info)
                put_group_info(clp->cl_cred.cr_group_info);
        kfree(clp->cl_principal);
@@ -752,6 +749,9 @@ expire_client(struct nfs4_client *clp)
                                 se_perclnt);
                release_session(ses);
        }
+       shutdown_callback_client(clp);
+       if (clp->cl_cb_xprt)
+               svc_xprt_put(clp->cl_cb_xprt);
        put_nfs4_client(clp);
 }