xfs
[Top] [All Lists]

Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree)

To: Martin Spott <Martin.Spott@xxxxxxxxx>
Subject: Re: Kernel crash with 2.6.29 + nfs + xfs (radix-tree)
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sun, 7 Jun 2009 14:55:58 -0400
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <h0gtcd$136u$1@xxxxxxxxxxxxxxx>
References: <20090520003745.GA27491@xxxxxxxxxxxx> <20090604112657.GA10738@xxxxxxxxxxxxx> <h0gtcd$136u$1@xxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.18 (2008-05-17)
On Sun, Jun 07, 2009 at 05:28:45PM +0000, Martin Spott wrote:
> reconnect_path: npd != pd
> reconnect_path: npd != pd
> reconnect_path: npd != pd
> [...]
> 
> 
> ....  I'm unable to find any helpful information in this context.
> Anything I could try - this sunday evening ?

That warning is what really makes me freak out, as it really, really
shouldn't happen.  Can you see if it gives any additional useful output
with the patch below?


Index: linux-2.6/fs/exportfs/expfs.c
===================================================================
--- linux-2.6.orig/fs/exportfs/expfs.c  2009-06-07 20:40:09.085814403 +0200
+++ linux-2.6/fs/exportfs/expfs.c       2009-06-07 20:54:47.550942377 +0200
@@ -88,6 +88,14 @@ find_disconnected_root(struct dentry *de
        return dentry;
 }
 
+static void dump_dentry(struct dentry *dentry, const char *var)
+{
+       printk("%s: dentry 0x%p inode 0x%p ino %lld name %s\n",
+               var, dentry, dentry->d_inode,
+               dentry->d_inode ?
+                       (unsigned long long)dentry->d_inode->i_ino : 0,
+               dentry->d_name.name);
+}
 
 /*
  * Make sure target_dir is fully connected to the dentry tree.
@@ -187,8 +195,11 @@ reconnect_path(struct vfsmount *mnt, str
                         */
                        if (npd == pd)
                                noprogress = 0;
-                       else
+                       else {
                                printk("%s: npd != pd\n", __func__);
+                               dump_dentry(npd, "npd");
+                               dump_dentry(pd, "pd");
+                       }
                        dput(npd);
                        dput(ppd);
                        if (IS_ROOT(pd)) {

<Prev in Thread] Current Thread [Next in Thread>