Re: [PATCH 1/2] xfs_repair: complain about ag header crc errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 29, 2020 at 08:20:31AM -0400, Brian Foster wrote:
> On Thu, Jun 25, 2020 at 01:52:32PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> > 
> > Repair doesn't complain about crc errors in the AG headers, and it
> > should.  Otherwise give the admin the wrong impression about the

"Otherwise, this gives the admin the wrong impression..."

I'll fix this before the next repost, though if the maintainer chooses
to pull it in before then, please make this minor correction.

> > state of the filesystem after a nomodify check.
> > 
> > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> > ---
> >  repair/scan.c |    6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > 
> > diff --git a/repair/scan.c b/repair/scan.c
> > index 505cfc53..42b299f7 100644
> > --- a/repair/scan.c
> > +++ b/repair/scan.c
> > @@ -2441,6 +2441,8 @@ scan_ag(
> >  		objname = _("root superblock");
> >  		goto out_free_sb;
> >  	}
> > +	if (sbbuf->b_error == -EFSBADCRC)
> > +		do_warn(_("superblock has bad CRC for ag %d\n"), agno);
> 
> So salvage_buffer() reads the buf and passes along the verifier. If the
> verifier fails, we ignore the error and return 0 because of
> LIBXFS_READBUF_SALVAGE, but leave it set in bp->b_error so it should be
> accessible here. Looks Ok:

Yep.

> Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

Thanks for the review!

--D

> 
> >  	libxfs_sb_from_disk(sb, sbbuf->b_addr);
> >  
> >  	error = salvage_buffer(mp->m_dev,
> > @@ -2450,6 +2452,8 @@ scan_ag(
> >  		objname = _("agf block");
> >  		goto out_free_sbbuf;
> >  	}
> > +	if (agfbuf->b_error == -EFSBADCRC)
> > +		do_warn(_("agf has bad CRC for ag %d\n"), agno);
> >  	agf = agfbuf->b_addr;
> >  
> >  	error = salvage_buffer(mp->m_dev,
> > @@ -2459,6 +2463,8 @@ scan_ag(
> >  		objname = _("agi block");
> >  		goto out_free_agfbuf;
> >  	}
> > +	if (agibuf->b_error == -EFSBADCRC)
> > +		do_warn(_("agi has bad CRC for ag %d\n"), agno);
> >  	agi = agibuf->b_addr;
> >  
> >  	/* fix up bad ag headers */
> > 
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux