summaryrefslogtreecommitdiff
path: root/fs/nfs/dir.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2005-11-04 15:35:02 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-11-04 15:35:02 -0500
commit34ea818846e6cccdd6e05354ab8c8a6d7e34657a (patch)
treed00d3d61c03454856c9047afaab3ba60a2e84f32 /fs/nfs/dir.c
parent2c56617d76fa7b2a709d58abd7ed68889cc88b90 (diff)
downloadlwn-34ea818846e6cccdd6e05354ab8c8a6d7e34657a.tar.gz
lwn-34ea818846e6cccdd6e05354ab8c8a6d7e34657a.zip
NFSv4: Return any delegations before sillyrenaming the file
I missed this one... Any form of rename will result in a delegation recall, so it is more efficient to return the one we hold before trying the rename. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r--fs/nfs/dir.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 8272ed3fc707..7370583b61e5 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1257,6 +1257,9 @@ dentry->d_parent->d_name.name, dentry->d_name.name);
sprintf(silly, ".nfs%*.*lx",
i_inosize, i_inosize, dentry->d_inode->i_ino);
+ /* Return delegation in anticipation of the rename */
+ nfs_inode_return_delegation(dentry->d_inode);
+
sdentry = NULL;
do {
char *suffix = silly + slen - countersize;