summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/delegation.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index bf1dcf186a47..f56b1d29650a 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -72,13 +72,6 @@ static void nfs_put_delegation(struct nfs_delegation *delegation)
__nfs_free_delegation(delegation);
}
-static void nfs_free_delegation(struct nfs_server *server,
- struct nfs_delegation *delegation)
-{
- nfs_mark_delegation_revoked(server, delegation);
- nfs_put_delegation(delegation);
-}
-
/**
* nfs_mark_delegation_referenced - set delegation's REFERENCED flag
* @delegation: delegation to process
@@ -539,7 +532,8 @@ out:
__nfs_free_delegation(delegation);
if (freeme != NULL) {
nfs_do_return_delegation(inode, freeme, 0);
- nfs_free_delegation(server, freeme);
+ nfs_mark_delegation_revoked(server, freeme);
+ nfs_put_delegation(freeme);
}
return status;
}
@@ -752,7 +746,8 @@ void nfs_inode_evict_delegation(struct inode *inode)
set_bit(NFS_DELEGATION_RETURNING, &delegation->flags);
nfs_do_return_delegation(inode, delegation, 1);
- nfs_free_delegation(server, delegation);
+ nfs_mark_delegation_revoked(server, delegation);
+ nfs_put_delegation(delegation);
}
/**
@@ -1250,8 +1245,10 @@ restart:
rcu_read_unlock();
if (delegation != NULL) {
if (nfs_detach_delegation(NFS_I(inode), delegation,
- server) != NULL)
- nfs_free_delegation(server, delegation);
+ server) != NULL) {
+ nfs_mark_delegation_revoked(server, delegation);
+ nfs_put_delegation(delegation);
+ }
/* Match nfs_start_delegation_return */
nfs_put_delegation(delegation);
}