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 > 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: Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > 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 */ >