In recent -mm kernels (e.g. 2.6.16-mm1), IN_DELETE events are no longer generated for the removal of a file from a watched directory.
This seems to be a result of clearing DCACHE_INOTIFY_PARENT_WATCHED in
d_delete() directly before calling fsnotify_nameremove().
Assuming the flag doesn't need to be cleared before dentry_iput(), this should
do the trick.
Signed-off-by: Amy Griffis <amy.griffis@xxxxxx>
diff --git a/fs/dcache.c b/fs/dcache.c
index 363cd4b..344ce91 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1198,11 +1198,11 @@ void d_delete(struct dentry * dentry)
spin_lock(&dentry->d_lock);
isdir = S_ISDIR(dentry->d_inode->i_mode);
if (atomic_read(&dentry->d_count) == 1) {
- /* remove this and other inotify debug checks after 2.6.18 */
- dentry->d_flags &= ~DCACHE_INOTIFY_PARENT_WATCHED;
-
dentry_iput(dentry);
fsnotify_nameremove(dentry, isdir);
+
+ /* remove this and other inotify debug checks after 2.6.18 */
+ dentry->d_flags &= ~DCACHE_INOTIFY_PARENT_WATCHED;
return;
}