Re: [PATCH 5/5] libfs : file/directory removal fix, 2.6.18

Al Viro
2006-11-23T08:51:00Z

On Thu, Nov 23, 2006 at 03:22:44AM -0500, Mathieu Desnoyers wrote:
> Fix file and directory removal in libfs. Add inotify support for file removal.
>
> The following scenario :
> create dir a
> create dir a/b
>
> cd a/b (some process goes in cwd a/b)
>
> rmdir a/b
> rmdir a
>
> fails due to the fact that "a" appears to be non empty.

What? Caller will do d_delete() itself. Care to show a version where
that would happen and post an strace of the second rmdir?

> It is because the "b"
> dentry is not deleted from "a" and still in use. The same problem happens if
> "b" is a file. d_delete is nice enough to know when it needs to unhash and free
> the dentry if nothing else is using it or, if someone is using it, to remove it
> from the hash queues and wait for it to be deleted when it has no users.
>
> The nice side-effect of this fix is that it calls the file removal
> notification.

NAK. First of all, I won't believe you without actual strace.

What's more, WTF would fs _method_ call idiotify? Keep that crap
out of filesystems; caller will do it for us just fine.