The segment fault with NULL point using when recovering failure
Dave Chinner
david at fromorbit.com
Wed Sep 29 01:05:09 CDT 2010
[Mike, please don't top-post responses - it makes it really hard to
quote properly. ]
On Fri, Sep 24, 2010 at 10:53:43AM -0500, Mike Gao wrote:
> On Thu, Sep 16, 2010 at 8:44 PM, Dave Chinner <david at fromorbit.com> wrote:
> > On Wed, Sep 15, 2010 at 10:59:07AM -0500, Mike Gao wrote:
> > > xlog_recover_process_iunlinks(
> > > xlog_t *log)
> > > {
> > > /*
> > > * Reacquire the agibuffer and continue around
> > > * the loop. This should never fail as we know
> > > * the buffer was good earlier on.
> > > */
> > > error = xfs_read_agi(mp, NULL, agno, &agibp);
> > > ASSERT(error == 0);
> > > agi = XFS_BUF_TO_AGI(agibp);
> > >
> > > }
> > > If no defined DEBUG, ASSERT will not work and agibp could be ZERO if
> > there
> > > is a error in xfs_read_agi.
> > > And the comment shouldn't say it never fail because xfs_read_agi will
> > > return error in function and it does when there is forced shutdown.
> >
> > Have you seen a failure here?
>
> I am curious about how this happens.
What, how a failure happens there? The ASSERT is saying that a
failure should never happen there....
> This error is caused by log recovery when mount try to fill super block. As
> super block is protected by log or Journaling, it shouldn't be corrupted or
> can't be recovery by journaling.
I'm not sure I follow you here - the above is reading an AGI, not a
superblock. What is the stack trace that you've seen?
> Anyway, this is reported as XFS INTERNAL ERROR.
>
> XFS internal error XFS_WANT_CORRUPTED_GOTO at line 4147 of file
> fs/xfs/xfs_bmap.c. Caller 0x871b9c26
That is from a corrupted bmap btree, which has no connection to
the AGI. I'm confused by what problems you are trying to report.
Cheers,
Dave.
--
Dave Chinner
david at fromorbit.com
More information about the xfs
mailing list