From 338b2f57499f37c18887182b48a499efb8a6b68f Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sat, 15 Jun 2013 05:53:23 +0400 Subject: [PATCH] ncpfs: don't bother with EBUSY on removal of busy directories Signed-off-by: Al Viro --- fs/ncpfs/dir.c | 11 ----------- 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 0e7f002..e5d4885 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 26910c8..0765ad1 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); -- 2.7.4