| From stable-bounces@linux.kernel.org Wed Mar 26 09:04:06 2008 |
| To: stable@kernel.org |
| Message-Id: <E1Je8Ze-0003Vx-2Z@debian64.daheim> |
| From: Christian Lamparter <chunkeey@web.de> |
| Date: Tue, 25 Mar 2008 13:48:18 +0100 |
| Cc: nickpiggin@yahoo.com.au |
| Subject: inotify: remove debug code |
| |
| From: Nick Piggin <npiggin@suse.de> |
| |
| upstream commit: 0d71bd5993b630a989d15adc2562a9ffe41cd26d |
| |
| 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. |
| |
| Signed-off-by: Nick Piggin <npiggin@suse.de> |
| Cc: Robert Love <rlove@google.com> |
| Cc: John McCutchan <ttb@tentacle.dhs.org> |
| Cc: Jan Kara <jack@ucw.cz> |
| Cc: Yan Zheng <yanzheng@21cn.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Christian Lamparter <chunkeey@web.de> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| --- |
| fs/dcache.c | 3 --- |
| fs/inotify.c | 17 +++++------------ |
| 2 files changed, 5 insertions(+), 15 deletions(-) |
| |
| --- a/fs/dcache.c |
| +++ b/fs/dcache.c |
| @@ -1408,9 +1408,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; |
| } |
| |
| --- a/fs/inotify.c |
| +++ b/fs/inotify.c |
| @@ -168,20 +168,14 @@ static void set_dentry_child_flags(struc |
| 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); |
| } |
| } |
| @@ -253,7 +247,6 @@ void inotify_d_instantiate(struct dentry |
| 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)) |