http://rzr.online.fr/q/segfault# Fixed #SegFault #BuG in latest #XfS #Xfs_Repair 3.1.7 but still fail to “mount: No such file or directory”
xfsprogs-3.1.7# ./repair/xfs_repair -v -L -P /dev/sda6 (gdb) r -v -L -P /dev/sda6 Starting program: /mnt/sdb6/local/home/rzr/xfsprogs-3.1.7/repair/xfs_repair -v -L -P /dev/sda6 [Thread debugging using libthread_db enabled] Phase 1 - find and verify superblock... Not enough RAM available for repair to enable prefetching. This will be _slow_. You need at least 237MB RAM to run with prefetching enabled. - block cache size set to 512 entries Phase 2 - using internal log - zero log... XFS: totally zeroed log (...) bad magic number 0xe483 on inode 1108554688, resetting magic number bad version number 0x0 on inode 1108554688, resetting version number bad inode format in inode 1108554688 cleared inode 1108554688 imap claims a free inode 1108554912 is in use, correcting imap and clearing inode cleared inode 1108554912 correcting nblocks for inode 1108578720, was 1 - counted 0 correcting nextents for inode 1108578720, was 1 - counted 0 Segmentation fault
Joined #XfS on IrC , hch asked for a BackTrace :
gdb ./repair/xfs_repair # -v -L -P /dev/sda6 (...) correcting nblocks for inode 369846144, was 1 - counted 0 correcting nextents for inode 369846144, was 1 - counted 0 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x4019b3c0 (LWP 25889)] blkmap_get (blkmap=0x0, o=0) at bmap.c:117 117 for (i = 0; i < blkmap->nexts; i++, ext++) { (gdb) p blkmap $1 = (blkmap_t *) 0x0 (gdb) bt #0 blkmap_get (blkmap=0x0, o=0) at bmap.c:117 #1 0x000187fc in process_symlink (mp=0x0, lino=369846144, dino=Cannot access memory at address 0x2a0 ) at dinode.c:1557 #2 0x0001a9a8 in process_dinode_int (mp=0x160b6780, dino=0x11fa600, agno=6, ino=41471, was_free=0, dirty=0xbeba832c, used=0xbeba8320, verify_mode=1, uncertain=0, ino_discovery=1, check_dups=-1095072976, extra_attr_check=-1095072972, isa_dir=0x1, parent=0xbeba8320) at dinode.c:2799 #3 0x0001aba4 in process_dinode (mp=0x0, dino=0xa2c, agno=0, ino=0, was_free=0, dirty=0xbeba8330, used=0xbeba8334, ino_discovery=1, check_dups=0, extra_attr_check=1, isa_dir=0xbeba832c, parent=0xbeba8320) at dinode.c:2898 #4 0x000107b4 in process_inode_chunk (mp=0xbeba8420, agno=2, num_inos=<value optimized out>, first_irec=0x0, ino_discovery=0, check_dups=0, extra_attr_check=1, bogus=0x0) at dino_chunks.c:779 #5 0x00010fec in process_aginodes (mp=0xbeba8420, pf_args=0x0, agno=22, ino_discovery=1, check_dups=0, extra_attr_check=1) at dino_chunks.c:1018 #6 0x0002819c in process_ag_func (wq=0xbbe98, agno=22, arg=0x0) at phase3.c:154 #7 0x000288bc in phase3 (mp=0xbeba8420) at phase3.c:193 #8 0x0003db80 in main (argc=<value optimized out>, argv=<value optimized out>) at xfs_repair.c:753
Been there Fixed it
diff -u ./repair/bmap.c~ ./repair/bmap.c --- ./repair/bmap.c~ 2011-10-21 22:46:09.000000000 +0000 +++ ./repair/bmap.c 2011-11-25 22:49:56.978587000 +0000 @@ -114,7 +114,8 @@ bmap_ext_t *ext = blkmap->exts; int i; - for (i = 0; i < blkmap->nexts; i++, ext++) { + + for (i = 0; (blkmap!=0 ) && i < blkmap->nexts; i++, ext++) { if (o >= ext->startoff && o < ext->startoff + ext->blockcount) return ext->startblock + (o - ext->startoff); }
Tried again and it did not faced that null ptr …
./repair/xfs_repair -d -v /dev/sda6 Phase 6 - check inode connectivity... reinitializing root directory reinitializing realtime bitmap inode reinitializing realtime summary inode - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - agno = 0 - agno = 1 corrupt block 1 in directory inode 16777387: junking block bad hash table for directory inode 16777387 (no data entry): rebuilding rebuilding directory inode 16777387 bad hash table for directory inode 16777498 (no data entry): rebuilding rebuilding directory inode 16777498 cache_node_purge: refcount was 1, not zero (node=0x2a4eee8) fatal error -- couldn't map inode 16777507, err = 117 real 59m50.000s
"cache_node_purge: refcount was 1, not zero"
http://oss.sgi.com/bugzilla/show_bug.cgi?id=757
"fatal error -- couldn't map inode $inode, err = 117"
http://permalink.gmane.org/gmane.comp.file-systems.xfs.general/30897
inode=16777481 part=/dev/sda6 xfs_db -x -c "blockget inode $inode" $part #| (...) #| dir 101162125 block 0 entry /9 bad inode number -72057594037927937 #| (...) xfsprogs-3.1.7# time PATH=./db:$PATH ./db/xfs_metadump.sh /dev/sda6 ../rzr-host-nas/xfs_metadump.dat
Time for hope, or thinking about reformating again …
mount /dev/sda6 /mnt/sda6 || dmesg #| mount: No such file or directory #| XFS mounting filesystem sda6 #| XFS: failed to read root inode