From e159be073c8cbfe50f0b6db9d58e0993edfbb47d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 27 May 2011 13:42:10 -0700 Subject: [PATCH] --- yaml --- r: 252721 b: refs/heads/master c: 76cc071a06afb4d2dd17bb1b855a233a419e7e02 h: refs/heads/master i: 252719: 1f1ec06e9ef8448cf9f0e92fe274313ad8f3ff7c v: v3 --- [refs] | 2 +- trunk/fs/ncpfs/dir.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 9e6cf71bd412..3874b5bcce82 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7ce605d93b775e8a960b0be244f7be565e73b3c1 +refs/heads/master: 76cc071a06afb4d2dd17bb1b855a233a419e7e02 diff --git a/trunk/fs/ncpfs/dir.c b/trunk/fs/ncpfs/dir.c index 81c287d105d5..9c51f621e901 100644 --- a/trunk/fs/ncpfs/dir.c +++ b/trunk/fs/ncpfs/dir.c @@ -1144,8 +1144,16 @@ static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry, old_dentry->d_parent->d_name.name, old_dentry->d_name.name, new_dentry->d_parent->d_name.name, new_dentry->d_name.name); - if (new_dentry->d_inode && S_ISDIR(new_dentry->d_inode->i_mode)) + if (new_dentry->d_inode && S_ISDIR(new_dentry->d_inode->i_mode)) { + /* + * fail with EBUSY if there are still references to this + * directory. + */ dentry_unhash(new_dentry); + error = -EBUSY; + if (!d_unhashed(new_dentry)) + goto out; + } ncp_age_dentry(server, old_dentry); ncp_age_dentry(server, new_dentry);