On Mon, Aug 31, 2020 at 03:07:12PM -0400, Brian Foster wrote: > On Thu, Aug 27, 2020 at 07:36:55PM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > > Add the necessary bits to the online repair code to support logging the > > inode btree counters when rebuilding the btrees, and to support fixing > > the counters when rebuilding the AGI. > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > --- > > fs/xfs/libxfs/xfs_ialloc_btree.c | 16 +++++++++++++--- > > fs/xfs/scrub/agheader_repair.c | 23 +++++++++++++++++++++++ > > 2 files changed, 36 insertions(+), 3 deletions(-) > > > > > ... > > diff --git a/fs/xfs/scrub/agheader_repair.c b/fs/xfs/scrub/agheader_repair.c > > index bca2ab1d4be9..efa8152a0139 100644 > > --- a/fs/xfs/scrub/agheader_repair.c > > +++ b/fs/xfs/scrub/agheader_repair.c > > @@ -810,10 +810,33 @@ xrep_agi_calc_from_btrees( > > error = xfs_ialloc_count_inodes(cur, &count, &freecount); > > if (error) > > goto err; > > + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { > > + xfs_agblock_t blocks; > > + > > + error = xfs_btree_count_blocks(cur, &blocks); > > + if (error) > > + goto err; > > + agi->agi_iblocks = cpu_to_be32(blocks); > > + } > > xfs_btree_del_cursor(cur, error); > > > > agi->agi_count = cpu_to_be32(count); > > agi->agi_freecount = cpu_to_be32(freecount); > > + > > + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { > > + xfs_agblock_t blocks; > > + > > + cur = xfs_inobt_init_cursor(mp, sc->tp, agi_bp, sc->sa.agno, > > + XFS_BTNUM_FINO); > > + if (error) > > + goto err; > > + error = xfs_btree_count_blocks(cur, &blocks); > > + if (error) > > + goto err; > > + xfs_btree_del_cursor(cur, error); > > + agi->agi_fblocks = cpu_to_be32(blocks); > > Similar question as for patch 1 around using hasfinobt()... Yep, and the fix (adding a hasfinobt check) is the same. --D > Brian > > > + } > > + > > return 0; > > err: > > xfs_btree_del_cursor(cur, error); > > >