diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2005-10-18 14:20:19 -0700 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2005-10-18 14:20:19 -0700 |
commit | cae7a073a4c5484cc5713eab606bf54b46724ab3 (patch) | |
tree | e5cdcf0376da5b04bca9bbbf8f226abe13f33275 /fs/nfs/dir.c | |
parent | cdce5d6b94b6182f6d8a5b7b52923933e98cbc92 (diff) | |
download | op-kernel-dev-cae7a073a4c5484cc5713eab606bf54b46724ab3.zip op-kernel-dev-cae7a073a4c5484cc5713eab606bf54b46724ab3.tar.gz |
NFSv4: Return delegation upon rename or removal of file.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r-- | fs/nfs/dir.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index ac331d2..72f50c0 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -801,6 +801,7 @@ static int nfs_dentry_delete(struct dentry *dentry) */ static void nfs_dentry_iput(struct dentry *dentry, struct inode *inode) { + nfs_inode_return_delegation(inode); if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { lock_kernel(); inode->i_nlink--; @@ -1329,6 +1330,7 @@ static int nfs_safe_remove(struct dentry *dentry) nfs_begin_data_update(dir); if (inode != NULL) { + nfs_inode_return_delegation(inode); nfs_begin_data_update(inode); error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); /* The VFS may want to delete this inode */ @@ -1547,6 +1549,7 @@ go_ahead: nfs_wb_all(old_inode); shrink_dcache_parent(old_dentry); } + nfs_inode_return_delegation(old_inode); if (new_inode) d_delete(new_dentry); |