diff options
author | Benny Halevy <bhalevy@primarydata.com> | 2013-10-29 11:39:12 +0200 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-10-29 12:00:48 -0400 |
commit | 956c4fee446c568ad102625da931e259f22c67ee (patch) | |
tree | 5ab6f11336d060e1bbabb4d95f0761d2b7eb90f0 /fs/nfsd | |
parent | 01a87d91fcecced2e2bdcd797794b4ede1f64b77 (diff) | |
download | linux-956c4fee446c568ad102625da931e259f22c67ee.tar.bz2 |
nfsd4: need to destroy revoked delegations in destroy_client
[use list_splice_init]
Signed-off-by: Benny Halevy <bhalevy@primarydata.com>
[bfields: no need for recall_lock here]
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index a90949aefe80..21eb6788cb33 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1129,6 +1129,11 @@ destroy_client(struct nfs4_client *clp) dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru); destroy_delegation(dp); } + list_splice_init(&clp->cl_revoked, &reaplist); + while (!list_empty(&reaplist)) { + dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru); + destroy_revoked_delegation(dp); + } while (!list_empty(&clp->cl_openowners)) { oo = list_entry(clp->cl_openowners.next, struct nfs4_openowner, oo_perclient); release_openowner(oo); |