Skip to content

Commit

Permalink
nfs: kill renewd before clearing client minor version
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alexandros Batsakis authored and Trond Myklebust committed Mar 2, 2010
1 parent f895c53 commit 888ef2e
Showing 1 changed file with 24 additions and 24 deletions.
48 changes: 24 additions & 24 deletions fs/nfs/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,30 +164,7 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
return ERR_PTR(err);
}

static void nfs4_shutdown_client(struct nfs_client *clp)
{
#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
* reverting it to minorversion 0.
Expand All @@ -202,9 +179,33 @@ static void nfs4_clear_client_minor_version(struct nfs_client *clp)

clp->cl_call_sync = _nfs4_call_sync;
#endif /* CONFIG_NFS_V4_1 */
}

/*
* 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
Expand All @@ -213,7 +214,6 @@ static void nfs_free_client(struct nfs_client *clp)
{
dprintk("--> nfs_free_client(%u)\n", clp->rpc_ops->version);

nfs4_clear_client_minor_version(clp);
nfs4_shutdown_client(clp);

nfs_fscache_release_client_cookie(clp);
Expand Down

0 comments on commit 888ef2e

Please sign in to comment.