Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c6d2152 authored by Jan Harkes's avatar Jan Harkes Committed by Linus Torvalds
Browse files

coda: allow removal of busy directories



A directory without children may still be busy when it is the cwd for some
process.  We can safely remove such a directory because the VFS prevents
further operations.  Also we don't need to call d_delete as it is already
called in vfs_rmdir.

Signed-off-by: default avatarJan Harkes <jaharkes@cs.cmu.edu>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d728900c
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -396,23 +396,18 @@ int coda_rmdir(struct inode *dir, struct dentry *de)
	lock_kernel();
	coda_vfs_stat.rmdir++;

	if (!d_unhashed(de)) {
		unlock_kernel();
		return -EBUSY;
	}
	error = venus_rmdir(dir->i_sb, coda_i2f(dir), name, len);
	if (!error) {
		/* VFS may delete the child */
		if (de->d_inode)
		    de->d_inode->i_nlink = 0;

	if ( error ) {
		unlock_kernel();
		return error;
	}

		/* fix the link count of the parent */
		coda_dir_drop_nlink(dir);
		coda_dir_update_mtime(dir);
	drop_nlink(de->d_inode);
	d_delete(de);
	}
	unlock_kernel();
	return 0;
	return error;
}

/* rename */