Make it match the real unlink(2)/rmdir(2) - notify *after* the operation. And use fsnotify_delete() instead of messing with fsnotify_unlink()/fsnotify_rmdir(). Currently the only caller that cares is the one in debugfs, and there the order matching the normal syscalls makes more sense; it'll get more serious for users introduced later in the series. Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> --- fs/libfs.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fs/libfs.c b/fs/libfs.c index 9ea0ecc325a8..42e226af6095 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -628,12 +628,9 @@ void simple_recursive_removal(struct dentry *dentry, inode_lock(inode); if (simple_positive(victim)) { d_invalidate(victim); // avoid lost mounts - if (d_is_dir(victim)) - fsnotify_rmdir(inode, victim); - else - fsnotify_unlink(inode, victim); if (callback) callback(victim); + fsnotify_delete(inode, d_inode(victim), victim); dput(victim); // unpin it } if (victim == dentry) { -- 2.39.5