xfs
[Top] [All Lists]

Re: Seg fault during xfs repair (segmentation fault / segv)

To: Jesse Stroik <jstroik@xxxxxxxxxxxxx>
Subject: Re: Seg fault during xfs repair (segmentation fault / segv)
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Wed, 01 Jul 2009 15:34:02 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <4A4BBECC.8000308@xxxxxxxxxxx>
References: <4A4A596D.8030800@xxxxxxxxxxxxx> <4A4A5C4E.7030605@xxxxxxxxxxx> <4A4A7D44.7040009@xxxxxxxxxxxxx> <4A4BBECC.8000308@xxxxxxxxxxx>
User-agent: Thunderbird 2.0.0.22 (Macintosh/20090605)
Eric Sandeen wrote:

> Ok, from a metadump image Jesse provided (thanks!) it's dying in here:
> 
>                 bno = be32_to_cpu(agfl->agfl_bno[i]);
>                 printf("agfl at %p i is %d agfl_bno[i] %u bno is %u\n",
> agfl, i, agfl->agfl_bno[i], bno);
>                 if (verify_agbno(mp, be32_to_cpu(agf->agf_seqno), bno))
>                         set_agbno_state(mp, be32_to_cpu(agf->agf_seqno),
>                                         bno, XR_E_FREE);
> 
> agfl_bno looks corrupt, and bno is coming out to be huge.
> 
> set_agbno_state() does:
> 
> *(ba_bmap[(agno)] + (ag_blockno)/XR_BB_NUM) = ....
> 
> where ag_blockno is that bno above; this wanders us off into bad memory
> and boom.  I'll see what we can do to fix it up.

Ok patch sent, but now I hit:

junking entry "soh " in directory inode 128
entry ".nsr" in shortform directory 128 references invalid inode 210397
junking entry ".nsr" in directory inode 128
bogus .. inode number (128) in directory inode 128, clearing inode number
xfs_repair: dir2.c:2123: process_dir2: Assertion `(ino !=
mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino &&
(ino == *parent || need_root_dotdot == 1))' failed.
Aborted

that's one crunchy filesystem you've got there; what happened to it?

-Eric

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