diff options
author | Al Viro | 2013-06-15 03:53:23 +0200 |
---|---|---|
committer | Al Viro | 2013-06-29 10:57:16 +0200 |
commit | 338b2f57499f37c18887182b48a499efb8a6b68f (patch) | |
tree | 08dfffef3694e07b02bf6ae03c5862e69b827dbb /fs | |
parent | don't call file_pos_write() if vfs_{read,write}{,v}() fails (diff) | |
download | kernel-qcow2-linux-338b2f57499f37c18887182b48a499efb8a6b68f.tar.gz kernel-qcow2-linux-338b2f57499f37c18887182b48a499efb8a6b68f.tar.xz kernel-qcow2-linux-338b2f57499f37c18887182b48a499efb8a6b68f.zip |
ncpfs: don't bother with EBUSY on removal of busy directories
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ncpfs/dir.c | 11 | ||||
-rw-r--r-- | fs/ncpfs/inode.c | 4 |
2 files changed, 4 insertions, 11 deletions
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c index 0e7f00298213..e5d488530580 100644 --- a/fs/ncpfs/dir.c +++ b/fs/ncpfs/dir.c @@ -1123,17 +1123,6 @@ 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)) { - /* - * 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); diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c index 26910c8154da..0765ad12c382 100644 --- a/fs/ncpfs/inode.c +++ b/fs/ncpfs/inode.c @@ -891,6 +891,10 @@ int ncp_notify_change(struct dentry *dentry, struct iattr *attr) if (!server) /* How this could happen? */ goto out; + result = -EPERM; + if (IS_DEADDIR(dentry->d_inode)) + goto out; + /* ageing the dentry to force validation */ ncp_age_dentry(server, dentry); |