From: Danny Feng <dfeng@redhat.com> Date: Thu, 30 Jul 2009 07:09:05 -0400 Subject: [fs] inotify: remove debug code Message-id: 20090730110907.17617.20038.sendpatchset@danny O-Subject: [RHEL5.5 PATCH 2/2] inotify: remove debug code Bugzilla: 499019 RH-Acked-by: Eric Paris <eparis@redhat.com> RH-Acked-by: Josef Bacik <josef@redhat.com> >From 76b6ce1d42b35dce660865e43eb2556b33b7c5b8 Mon Sep 17 00:00:00 2001 From: Xiaotian Feng <dfeng@redhat.com> Date: Thu, 30 Jul 2009 18:33:37 +0800 Subject: [PATCH 2/2] inotify: remove debug code The inotify debugging code is supposed to verify that the DCACHE_INOTIFY_PARENT_WATCHED scalability optimisation does not result in notifications getting lost nor extra needless locking generated. Unfortunately there are also some races in the debugging code. And it isn't very good at finding problems anyway. So remove it for now. diff --git a/fs/dcache.c b/fs/dcache.c index 6071ec0..d5bedd0 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1504,9 +1504,6 @@ void d_delete(struct dentry * dentry) if (atomic_read(&dentry->d_count) == 1) { 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; } diff --git a/fs/inotify.c b/fs/inotify.c index 6010796..a2320da 100644 --- a/fs/inotify.c +++ b/fs/inotify.c @@ -188,20 +188,14 @@ static void set_dentry_child_flags(struct inode *inode, int watched) struct dentry *child; list_for_each_entry(child, &alias->d_subdirs, d_u.d_child) { - if (!child->d_inode) { - WARN_ON(child->d_flags & DCACHE_INOTIFY_PARENT_WATCHED); + if (!child->d_inode) continue; - } + spin_lock(&child->d_lock); - if (watched) { - WARN_ON(child->d_flags & - DCACHE_INOTIFY_PARENT_WATCHED); + if (watched) child->d_flags |= DCACHE_INOTIFY_PARENT_WATCHED; - } else { - WARN_ON(!(child->d_flags & - DCACHE_INOTIFY_PARENT_WATCHED)); - child->d_flags&=~DCACHE_INOTIFY_PARENT_WATCHED; - } + else + child->d_flags &= ~DCACHE_INOTIFY_PARENT_WATCHED; spin_unlock(&child->d_lock); } } @@ -273,7 +267,6 @@ void inotify_d_instantiate(struct dentry *entry, struct inode *inode) if (!inode) return; - WARN_ON(entry->d_flags & DCACHE_INOTIFY_PARENT_WATCHED); spin_lock(&entry->d_lock); parent = entry->d_parent; if (parent->d_inode && inotify_inode_watched(parent->d_inode))