Re: [PATCH 4/5] xfs: support inode btree blockcounts in online repair

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

 



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);
> > 
> 



[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