nfsd: remove_stid can be incorporated into nfs4_put_delegation
authorBenny Halevy <bhalevy@primarydata.com>
Tue, 15 Oct 2013 06:58:00 +0000 (09:58 +0300)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 28 Oct 2013 19:58:32 +0000 (15:58 -0400)
All calls to nfs4_put_delegation are preceded with remove_stid.

Signed-off-by: Benny Halevy <bhalevy@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index 3feb38e818abde447d3bf463846705e2e9cc662a..77dfc5a6a01163000123fd2cadc088b239966d20 100644 (file)
@@ -410,6 +410,7 @@ static void nfs4_free_stid(struct kmem_cache *slab, struct nfs4_stid *s)
 void
 nfs4_put_delegation(struct nfs4_delegation *dp)
 {
+       remove_stid(&dp->dl_stid);
        if (atomic_dec_and_test(&dp->dl_count)) {
                nfs4_free_stid(deleg_slab, &dp->dl_stid);
                num_delegations--;
@@ -450,14 +451,12 @@ unhash_delegation(struct nfs4_delegation *dp)
 static void destroy_revoked_delegation(struct nfs4_delegation *dp)
 {
        list_del_init(&dp->dl_recall_lru);
-       remove_stid(&dp->dl_stid);
        nfs4_put_delegation(dp);
 }
 
 static void destroy_delegation(struct nfs4_delegation *dp)
 {
        unhash_delegation(dp);
-       remove_stid(&dp->dl_stid);
        nfs4_put_delegation(dp);
 }
 
@@ -3159,7 +3158,6 @@ nfs4_open_delegation(struct net *net, struct svc_fh *fh,
        open->op_delegate_type = NFS4_OPEN_DELEGATE_READ;
        return;
 out_free:
-       remove_stid(&dp->dl_stid);
        nfs4_put_delegation(dp);
 out_no_deleg:
        open->op_delegate_type = NFS4_OPEN_DELEGATE_NONE;