[PATCH v2] xfs: store rmapbt block count in the AGF

Darrick J. Wong darrick.wong at oracle.com
Thu Aug 4 10:50:42 CDT 2016


On Thu, Aug 04, 2016 at 08:44:39AM -0700, Christoph Hellwig wrote:
> On Wed, Aug 03, 2016 at 02:46:13PM -0700, Darrick J. Wong wrote:
> > Track the number of blocks used for the rmapbt in the AGF.  When we
> > get to the AG reservation code we need this counter to quickly
> > make our reservation during mount.
> > 
> > v2: Actually include growfs support.
> > 
> > Signed-off-by: Darrick J. Wong <darrick.wong at oracle.com>
> > ---
> >  fs/xfs/libxfs/xfs_alloc.c      |    1 +
> >  fs/xfs/libxfs/xfs_format.h     |   11 ++++++++---
> >  fs/xfs/libxfs/xfs_rmap_btree.c |    6 ++++++
> >  fs/xfs/xfs_fsops.c             |    1 +
> >  4 files changed, 16 insertions(+), 3 deletions(-)
> > 
> > diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
> > index 776ae2f..af1a72e 100644
> > --- a/fs/xfs/libxfs/xfs_alloc.c
> > +++ b/fs/xfs/libxfs/xfs_alloc.c
> > @@ -2264,6 +2264,7 @@ xfs_alloc_log_agf(
> >  		offsetof(xfs_agf_t, agf_longest),
> >  		offsetof(xfs_agf_t, agf_btreeblks),
> >  		offsetof(xfs_agf_t, agf_uuid),
> > +		offsetof(xfs_agf_t, agf_rmap_blocks),
> >  		sizeof(xfs_agf_t)
> >  	};
> >  
> > diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h
> > index f814d42..e6a8bea 100644
> > --- a/fs/xfs/libxfs/xfs_format.h
> > +++ b/fs/xfs/libxfs/xfs_format.h
> > @@ -640,12 +640,15 @@ typedef struct xfs_agf {
> >  	__be32		agf_btreeblks;	/* # of blocks held in AGF btrees */
> >  	uuid_t		agf_uuid;	/* uuid of filesystem */
> >  
> > +	__be32		agf_rmap_blocks;	/* rmapbt blocks used */
> > +	__be32		agf_padding;		/* padding */
> 
> Now _spare?  It could easily be used by the next new field.

The reflink patches will (almost immediately) consume agf_padding
and the next spare for refcount_{root,level,blocks}.

--D

> Otherwise this looks fine to me:
> 
> Reviewed-by: Christoph Hellwig <hch at lst.de>



More information about the xfs mailing list