forked from Minki/linux
nfs: kill renewd before clearing client minor version
renewd should be synchronously killed before we destroy the session in nfs4_clear_minor_version Signed-off-by: Alexandros Batsakis <batsakis@netapp.com> [Trond.Myklebust@netapp.com: clean up to remove 'unused function warning when !CONFIG_NFS_V4] Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
f895c53f8a
commit
888ef2e3f8
@ -164,30 +164,7 @@ error_0:
|
|||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nfs4_shutdown_client(struct nfs_client *clp)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_NFS_V4
|
#ifdef CONFIG_NFS_V4
|
||||||
if (__test_and_clear_bit(NFS_CS_RENEWD, &clp->cl_res_state))
|
|
||||||
nfs4_kill_renewd(clp);
|
|
||||||
BUG_ON(!RB_EMPTY_ROOT(&clp->cl_state_owners));
|
|
||||||
if (__test_and_clear_bit(NFS_CS_IDMAP, &clp->cl_res_state))
|
|
||||||
nfs_idmap_delete(clp);
|
|
||||||
|
|
||||||
rpc_destroy_wait_queue(&clp->cl_rpcwaitq);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Destroy the NFS4 callback service
|
|
||||||
*/
|
|
||||||
static void nfs4_destroy_callback(struct nfs_client *clp)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_NFS_V4
|
|
||||||
if (__test_and_clear_bit(NFS_CS_CALLBACK, &clp->cl_res_state))
|
|
||||||
nfs_callback_down(clp->cl_minorversion);
|
|
||||||
#endif /* CONFIG_NFS_V4 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clears/puts all minor version specific parts from an nfs_client struct
|
* Clears/puts all minor version specific parts from an nfs_client struct
|
||||||
* reverting it to minorversion 0.
|
* reverting it to minorversion 0.
|
||||||
@ -202,10 +179,34 @@ static void nfs4_clear_client_minor_version(struct nfs_client *clp)
|
|||||||
|
|
||||||
clp->cl_call_sync = _nfs4_call_sync;
|
clp->cl_call_sync = _nfs4_call_sync;
|
||||||
#endif /* CONFIG_NFS_V4_1 */
|
#endif /* CONFIG_NFS_V4_1 */
|
||||||
|
|
||||||
nfs4_destroy_callback(clp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Destroy the NFS4 callback service
|
||||||
|
*/
|
||||||
|
static void nfs4_destroy_callback(struct nfs_client *clp)
|
||||||
|
{
|
||||||
|
if (__test_and_clear_bit(NFS_CS_CALLBACK, &clp->cl_res_state))
|
||||||
|
nfs_callback_down(clp->cl_minorversion);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void nfs4_shutdown_client(struct nfs_client *clp)
|
||||||
|
{
|
||||||
|
if (__test_and_clear_bit(NFS_CS_RENEWD, &clp->cl_res_state))
|
||||||
|
nfs4_kill_renewd(clp);
|
||||||
|
nfs4_clear_client_minor_version(clp);
|
||||||
|
nfs4_destroy_callback(clp);
|
||||||
|
if (__test_and_clear_bit(NFS_CS_IDMAP, &clp->cl_res_state))
|
||||||
|
nfs_idmap_delete(clp);
|
||||||
|
|
||||||
|
rpc_destroy_wait_queue(&clp->cl_rpcwaitq);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void nfs4_shutdown_client(struct nfs_client *clp)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_NFS_V4 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Destroy a shared client record
|
* Destroy a shared client record
|
||||||
*/
|
*/
|
||||||
@ -213,7 +214,6 @@ static void nfs_free_client(struct nfs_client *clp)
|
|||||||
{
|
{
|
||||||
dprintk("--> nfs_free_client(%u)\n", clp->rpc_ops->version);
|
dprintk("--> nfs_free_client(%u)\n", clp->rpc_ops->version);
|
||||||
|
|
||||||
nfs4_clear_client_minor_version(clp);
|
|
||||||
nfs4_shutdown_client(clp);
|
nfs4_shutdown_client(clp);
|
||||||
|
|
||||||
nfs_fscache_release_client_cookie(clp);
|
nfs_fscache_release_client_cookie(clp);
|
||||||
|
Loading…
Reference in New Issue
Block a user