On Thursday, March 15, 2001 02:00:11 PM +0100 Andreas Klein
<[EMAIL PROTECTED]> wrote:

[ oops ]

>>> EIP; c016f090 <comp_short_keys+10/40>   <=====
> Trace; c0160046 <reiserfs_iget+6a/a4>
> Trace; c015c8a8 <reiserfs_lookup+94/c4>
> 
> The machine is running linux-2.4.3-pre4 including the reiserfs-patches
> from  Alexander Zarochentcev. 

Ah, I see.  objectid-sharing.diff will pass a null inode to comp_short_keys
if iget4 returns a bad_inode.

Looks like you were using NFS, you'll want to look through the docs on
www.reiserfs.org for the additional patches required to make NFS and
reiserfs play nice.

The attached patch replaces objectid-sharing.diff.  The bug was not present
in pure 2.4.x or 2.4.x-ac kernels.

-chris
--- diff/linux/fs/reiserfs/inode.c      Thu Mar 15 09:47:18 2001
+++ linux/fs/reiserfs/inode.c   Thu Mar 15 09:39:06 2001
@@ -1159,11 +1159,17 @@
     if (!inode) 
       return inode ;
 
-    //    if (comp_short_keys (INODE_PKEY (inode), key)) {
     if (is_bad_inode (inode)) {
        reiserfs_warning ("vs-13048: reiserfs_iget: "
                          "bad_inode. Stat data of (%lu %lu) not found\n",
                          key->on_disk_key.k_dir_id, key->on_disk_key.k_objectid);
+       iput (inode);
+       inode = 0;
+    } else if (comp_short_keys (INODE_PKEY (inode), key)) {
+       reiserfs_warning ("vs-13049: reiserfs_iget: "
+                         "Looking for (%lu %lu), found inode of (%lu %lu)\n",
+                         key->on_disk_key.k_dir_id, key->on_disk_key.k_objectid,
+                         INODE_PKEY (inode)->k_dir_id, INODE_PKEY 
+(inode)->k_objectid);
        iput (inode);
        inode = 0;
     }

Reply via email to