Skip to content

Commit

Permalink
ncpfs: fix rmdir returns Device or resource busy
Browse files Browse the repository at this point in the history
1d2ef59 caused a regression in ncpfs such that
directories could no longer be removed.  This was because ncp_rmdir checked
to see if a dentry could be unhashed before allowing it to be removed. Since
1d2ef59 introduced a change that incremented
dentry->d_count causing it to always be greater than 1 unhash would always
fail.  Thus causing the error path in ncp_rmdir to always be taken.  Removing
this error path is safe as unhashing is still accomplished by calls to dput
from vfs_rmdir.

Signed-off-by: Dave Chiluk <[email protected]>
Signed-off-by: Petr Vandrovec <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Dave Chiluk authored and Al Viro committed Jun 7, 2013
1 parent 4d3797d commit 698b822
Showing 1 changed file with 0 additions and 9 deletions.
9 changes: 0 additions & 9 deletions fs/ncpfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1029,15 +1029,6 @@ static int ncp_rmdir(struct inode *dir, struct dentry *dentry)
DPRINTK("ncp_rmdir: removing %s/%s\n",
dentry->d_parent->d_name.name, dentry->d_name.name);

/*
* fail with EBUSY if there are still references to this
* directory.
*/
dentry_unhash(dentry);
error = -EBUSY;
if (!d_unhashed(dentry))
goto out;

len = sizeof(__name);
error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
dentry->d_name.len, !ncp_preserve_case(dir));
Expand Down

0 comments on commit 698b822

Please sign in to comment.