--- /dev/null
+--- ./fs/dcache.c.orig 2004-01-30 14:54:45.000000000 -0700
++++ ./fs/dcache.c 2004-02-20 14:49:18.000000000 -0700
+@@ -348,8 +348,20 @@
+ dentry_stat.nr_unused--;
+
+ /* Unused dentry with a count? */
+- if (atomic_read(&dentry->d_count))
++ if (atomic_read(&dentry->d_count)) {
++ struct inode *inode = dentry->d_inode;
++ printk(KERN_CRIT "dentry %*s %p->%lu/%u(%p/%s) ct %d\n",
++ dentry->d_name.len, dentry->d_name.name, dentry,
++ inode ? inode->i_ino : 0,
++ inode ? inode->i_generation : 0, inode,
++ inode ? inode->i_sb ?
++ inode->i_sb->s_type->name : "" : "",
++ atomic_read(&dentry->d_count));
++ spin_unlock(&dcache_lock);
++ set_task_state(current, TASK_UNINTERRUPTIBLE);
++ schedule();
+ BUG();
++ }
+
+ prune_one_dentry(dentry);
+ if (!--count)