Re: 2.6.16-rc5-mm1

Andrew Morton
2006-03-02T22:29:03Z

"J.A. Magallon" <jamagallon@able.es> wrote:
>
> What I have collected till now is below (against -mm2-pre1). What is
> (not) needed from this ? Thanks...

You should need only the below:

--- devel/fs/dcache.c~inotify-lock-avoidance-with-parent-watch-status-in-dentry-fix-2 2006-03-01 21:41:16.000000000 -0800
+++ devel-akpm/fs/dcache.c 2006-03-01 21:41:16.000000000 -0800
@@ -1177,6 +1177,9 @@ 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);
return;
diff -puN fs/inotify.c~inotify-lock-avoidance-with-parent-watch-status-in-dentry-fix-2 fs/inotify.c
--- devel/fs/inotify.c~inotify-lock-avoidance-with-parent-watch-status-in-dentry-fix-2 2006-03-01 21:41:16.000000000 -0800
+++ devel-akpm/fs/inotify.c 2006-03-01 21:41:16.000000000 -0800
@@ -390,6 +390,7 @@ static inline int inotify_inode_watched(

/*
* Get child dentry flag into synch with parent inode.
+ * Flag should always be clear for negative dentrys.
*/
static void set_dentry_child_flags(struct inode *inode, int watched)
{
@@ -400,6 +401,10 @@ 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);
+ continue;
+ }
spin_lock(&child->d_lock);
if (watched) {
WARN_ON(child->d_flags &
_

Anyway, I think things are pretty much sorted out now so I'll try to do mm2
today (approx 12 hours hence).