Ok. I managed to reproduce the bus error during xfs_repair on SPARC.
Btw. this particular file system has several gigs of free space. It
just finished a successful dbench 32 run.
I'm off to fight my way through the snow to the office now. I'll look
at this again tonight...
---8<---
This GDB was configured as "sparc-redhat-linux"...
(gdb) run /dev/sdb2
Starting program: /usr/src/slinx-pristine/cmd/xfs/repair/./xfs_repair /
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
freeblk count 1 != flcount -2048 in ag 0
bad agbno 4294965248 for btbno root, agno 0
bad agbno 374885040 for btbcnt root, agno 0
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
Program received signal SIGBUS, Bus error.
0x7b504 in libxfs_bmbt_get_all (r=0xfb5a4, s=0xeffff238)
at xfs_bmap_btree.c:1567
1567 s->br_startoff = ((xfs_fileoff_t)INT_GET(r->l0, ARCH_CO
(gdb) bt
#0 0x7b504 in libxfs_bmbt_get_all (r=0xfb5a4, s=0xeffff238)
at xfs_bmap_btree.c:1567
#1 0x1e5d0 in convert_extent (rp=0xfb5a4, op=0xeffff310, sp=0xeffff320
cp=0xeffff330, fp=0xeffff2f4) at dinode.c:446
#2 0x1e8a8 in process_bmbt_reclist_int (mp=0xeffff830, rp=0xfb5a4, num
type=5, ino=259, tot=0xeffff550, blkmapp=0xeffff4fc, first_key=0xef
last_key=0xeffff458, check_dups=0, whichfork=0) at dinode.c:536
#3 0x1fab8 in process_bmbt_reclist (mp=0xeffff830, rp=0xfb5a4, numrecs
type=5, ino=259, tot=0xeffff550, blkmapp=0xeffff4fc, first_key=0xef
last_key=0xeffff458, whichfork=0) at dinode.c:782
#4 0x21838 in process_exinode (mp=0xeffff830, agno=0, ino=259, dip=0xf
type=5, dirty=0xeffff694, tot=0xeffff550, nex=0xeffff520,
blkmapp=0xeffff4fc, whichfork=0, check_dups=0) at dinode.c:1294
#5 0x2481c in process_dinode_int (mp=0xeffff830, dino=0xfb540, agno=0,
ino=259, was_free=0, dirty=0xeffff694, cleared=0xeffff67c,
used=0xeffff6a0, verify_mode=0, uncertain=0, ino_discovery=1,
check_dups=0, extra_attr_check=1, isa_dir=0xeffff678, parent=0xefff
at dinode.c:2298
#6 0x25f24 in process_dinode (mp=0xeffff830, dino=0xfb540, agno=0, ino
was_free=0, dirty=0xeffff694, cleared=0xeffff67c, used=0xeffff6a0,
ino_discovery=1, check_dups=0, extra_attr_check=1, isa_dir=0xeffff6
parent=0xeffff6b8) at dinode.c:2855
#7 0x1c30c in process_inode_chunk (mp=0xeffff830, agno=0, num_inos=64,
first_irec=0xfb1d8, ino_discovery=1, check_dups=0, extra_attr_check
bogus=0xeffff740) at dino_chunks.c:739
#8 0x1d0c0 in process_aginodes (mp=0xeffff830, agno=0, ino_discovery=1
check_dups=0, extra_attr_check=1) at dino_chunks.c:953
#9 0x39fe8 in phase3 (mp=0xeffff830) at phase3.c:193
#10 0x57768 in main (argc=2, argv=0xeffffb8c) at xfs_repair.c:473
(gdb)
--
Martin K. Petersen, Principal Linux Consultant, Linuxcare, Inc.
mkp@xxxxxxxxxxxxx, http://www.linuxcare.com/
Linuxcare. Moving Forward.
|