Re: [PATCH 1/4] xfs: remove xfs_rmap_ag_owner and friends

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

 



On Wed, Nov 28, 2018 at 03:26:18PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> 
> Owner information for static fs metadata can be defined readonly at
> build time because it never changes across filesystems.  This enables us
> to reduce stack usage (particularly in scrub) because we can use the
> statically defined oinfo structures.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> ---

Looks fine to me:

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

>  fs/xfs/libxfs/xfs_ag.c             |    9 ++++-----
>  fs/xfs/libxfs/xfs_alloc.c          |    9 ++++-----
>  fs/xfs/libxfs/xfs_bmap.c           |    4 ++--
>  fs/xfs/libxfs/xfs_ialloc.c         |    8 +++-----
>  fs/xfs/libxfs/xfs_ialloc_btree.c   |    7 ++-----
>  fs/xfs/libxfs/xfs_refcount_btree.c |    6 ++----
>  fs/xfs/libxfs/xfs_rmap.c           |   28 ++++++++++++++++++++++++++++
>  fs/xfs/libxfs/xfs_rmap.h           |   34 ++++++++++------------------------
>  fs/xfs/scrub/agheader.c            |   25 +++++++------------------
>  fs/xfs/scrub/agheader_repair.c     |    5 ++---
>  fs/xfs/scrub/alloc.c               |    4 +---
>  fs/xfs/scrub/ialloc.c              |   28 +++++++++-------------------
>  fs/xfs/scrub/inode.c               |    4 +---
>  fs/xfs/scrub/refcount.c            |   15 +++++----------
>  fs/xfs/scrub/repair.c              |    4 +---
>  fs/xfs/scrub/rmap.c                |    5 +----
>  fs/xfs/xfs_extfree_item.c          |    5 ++---
>  17 files changed, 84 insertions(+), 116 deletions(-)
> 
> 
> diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c
> index 9345802c99f7..999ad8d00d43 100644
> --- a/fs/xfs/libxfs/xfs_ag.c
> +++ b/fs/xfs/libxfs/xfs_ag.c
> @@ -414,7 +414,6 @@ xfs_ag_extend_space(
>  	struct aghdr_init_data	*id,
>  	xfs_extlen_t		len)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_buf		*bp;
>  	struct xfs_agi		*agi;
>  	struct xfs_agf		*agf;
> @@ -448,17 +447,17 @@ xfs_ag_extend_space(
>  	/*
>  	 * Free the new space.
>  	 *
> -	 * XFS_RMAP_OWN_NULL is used here to tell the rmap btree that
> +	 * XFS_RMAP_OINFO_SKIP_UPDATE is used here to tell the rmap btree that
>  	 * this doesn't actually exist in the rmap btree.
>  	 */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_NULL);
>  	error = xfs_rmap_free(tp, bp, id->agno,
>  				be32_to_cpu(agf->agf_length) - len,
> -				len, &oinfo);
> +				len, &XFS_RMAP_OINFO_SKIP_UPDATE);
>  	if (error)
>  		return error;
>  
>  	return  xfs_free_extent(tp, XFS_AGB_TO_FSB(mp, id->agno,
>  					be32_to_cpu(agf->agf_length) - len),
> -				len, &oinfo, XFS_AG_RESV_NONE);
> +				len, &XFS_RMAP_OINFO_SKIP_UPDATE,
> +				XFS_AG_RESV_NONE);
>  }
> diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
> index ef039777f314..2b900eb2aec2 100644
> --- a/fs/xfs/libxfs/xfs_alloc.c
> +++ b/fs/xfs/libxfs/xfs_alloc.c
> @@ -1594,7 +1594,6 @@ xfs_alloc_ag_vextent_small(
>  	xfs_extlen_t	*flenp,	/* result length */
>  	int		*stat)	/* status: 0-freelist, 1-normal/none */
>  {
> -	struct xfs_owner_info	oinfo;
>  	int		error;
>  	xfs_agblock_t	fbno;
>  	xfs_extlen_t	flen;
> @@ -1648,9 +1647,8 @@ xfs_alloc_ag_vextent_small(
>  			 * doesn't live in the free space, we need to clear
>  			 * out the OWN_AG rmap.
>  			 */
> -			xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG);
>  			error = xfs_rmap_free(args->tp, args->agbp, args->agno,
> -					fbno, 1, &oinfo);
> +					fbno, 1, &XFS_RMAP_OINFO_AG);
>  			if (error)
>  				goto error0;
>  
> @@ -2314,10 +2312,11 @@ xfs_alloc_fix_freelist(
>  	 * repair/rmap.c in xfsprogs for details.
>  	 */
>  	memset(&targs, 0, sizeof(targs));
> +	/* struct copy below */
>  	if (flags & XFS_ALLOC_FLAG_NORMAP)
> -		xfs_rmap_skip_owner_update(&targs.oinfo);
> +		targs.oinfo = XFS_RMAP_OINFO_SKIP_UPDATE;
>  	else
> -		xfs_rmap_ag_owner(&targs.oinfo, XFS_RMAP_OWN_AG);
> +		targs.oinfo = XFS_RMAP_OINFO_AG;
>  	while (!(flags & XFS_ALLOC_FLAG_NOSHRINK) && pag->pagf_flcount > need) {
>  		error = xfs_alloc_get_freelist(tp, agbp, &bno, 0);
>  		if (error)
> diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> index d5672ab58b1f..332eefa2700b 100644
> --- a/fs/xfs/libxfs/xfs_bmap.c
> +++ b/fs/xfs/libxfs/xfs_bmap.c
> @@ -564,7 +564,7 @@ __xfs_bmap_add_free(
>  	if (oinfo)
>  		new->xefi_oinfo = *oinfo;
>  	else
> -		xfs_rmap_skip_owner_update(&new->xefi_oinfo);
> +		new->xefi_oinfo = XFS_RMAP_OINFO_SKIP_UPDATE;
>  	new->xefi_skip_discard = skip_discard;
>  	trace_xfs_bmap_free_defer(tp->t_mountp,
>  			XFS_FSB_TO_AGNO(tp->t_mountp, bno), 0,
> @@ -3453,7 +3453,7 @@ xfs_bmap_btalloc(
>  	args.tp = ap->tp;
>  	args.mp = mp;
>  	args.fsbno = ap->blkno;
> -	xfs_rmap_skip_owner_update(&args.oinfo);
> +	args.oinfo = XFS_RMAP_OINFO_SKIP_UPDATE;
>  
>  	/* Trim the allocation back to the maximum an AG can fit. */
>  	args.maxlen = min(ap->length, mp->m_ag_max_usable);
> diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
> index a8f6db735d5d..fcf0d17405d8 100644
> --- a/fs/xfs/libxfs/xfs_ialloc.c
> +++ b/fs/xfs/libxfs/xfs_ialloc.c
> @@ -641,7 +641,7 @@ xfs_ialloc_ag_alloc(
>  	args.tp = tp;
>  	args.mp = tp->t_mountp;
>  	args.fsbno = NULLFSBLOCK;
> -	xfs_rmap_ag_owner(&args.oinfo, XFS_RMAP_OWN_INODES);
> +	args.oinfo = XFS_RMAP_OINFO_INODES;
>  
>  #ifdef DEBUG
>  	/* randomly do sparse inode allocations */
> @@ -1849,14 +1849,12 @@ xfs_difree_inode_chunk(
>  	int				nextbit;
>  	xfs_agblock_t			agbno;
>  	int				contigblk;
> -	struct xfs_owner_info		oinfo;
>  	DECLARE_BITMAP(holemask, XFS_INOBT_HOLEMASK_BITS);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INODES);
>  
>  	if (!xfs_inobt_issparse(rec->ir_holemask)) {
>  		/* not sparse, calculate extent info directly */
>  		xfs_bmap_add_free(tp, XFS_AGB_TO_FSB(mp, agno, sagbno),
> -				  mp->m_ialloc_blks, &oinfo);
> +				  mp->m_ialloc_blks, &XFS_RMAP_OINFO_INODES);
>  		return;
>  	}
>  
> @@ -1900,7 +1898,7 @@ xfs_difree_inode_chunk(
>  		ASSERT(agbno % mp->m_sb.sb_spino_align == 0);
>  		ASSERT(contigblk % mp->m_sb.sb_spino_align == 0);
>  		xfs_bmap_add_free(tp, XFS_AGB_TO_FSB(mp, agno, agbno),
> -				  contigblk, &oinfo);
> +				  contigblk, &XFS_RMAP_OINFO_INODES);
>  
>  		/* reset range to current bit and carry on... */
>  		startidx = endidx = nextbit;
> diff --git a/fs/xfs/libxfs/xfs_ialloc_btree.c b/fs/xfs/libxfs/xfs_ialloc_btree.c
> index 7fbf8af0b159..9b25e7a0df47 100644
> --- a/fs/xfs/libxfs/xfs_ialloc_btree.c
> +++ b/fs/xfs/libxfs/xfs_ialloc_btree.c
> @@ -84,7 +84,7 @@ __xfs_inobt_alloc_block(
>  	memset(&args, 0, sizeof(args));
>  	args.tp = cur->bc_tp;
>  	args.mp = cur->bc_mp;
> -	xfs_rmap_ag_owner(&args.oinfo, XFS_RMAP_OWN_INOBT);
> +	args.oinfo = XFS_RMAP_OINFO_INOBT;
>  	args.fsbno = XFS_AGB_TO_FSB(args.mp, cur->bc_private.a.agno, sbno);
>  	args.minlen = 1;
>  	args.maxlen = 1;
> @@ -136,12 +136,9 @@ __xfs_inobt_free_block(
>  	struct xfs_buf		*bp,
>  	enum xfs_ag_resv_type	resv)
>  {
> -	struct xfs_owner_info	oinfo;
> -
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INOBT);
>  	return xfs_free_extent(cur->bc_tp,
>  			XFS_DADDR_TO_FSB(cur->bc_mp, XFS_BUF_ADDR(bp)), 1,
> -			&oinfo, resv);
> +			&XFS_RMAP_OINFO_INOBT, resv);
>  }
>  
>  STATIC int
> diff --git a/fs/xfs/libxfs/xfs_refcount_btree.c b/fs/xfs/libxfs/xfs_refcount_btree.c
> index 1aaa01c97517..d9eab657b63e 100644
> --- a/fs/xfs/libxfs/xfs_refcount_btree.c
> +++ b/fs/xfs/libxfs/xfs_refcount_btree.c
> @@ -70,7 +70,7 @@ xfs_refcountbt_alloc_block(
>  	args.type = XFS_ALLOCTYPE_NEAR_BNO;
>  	args.fsbno = XFS_AGB_TO_FSB(cur->bc_mp, cur->bc_private.a.agno,
>  			xfs_refc_block(args.mp));
> -	xfs_rmap_ag_owner(&args.oinfo, XFS_RMAP_OWN_REFC);
> +	args.oinfo = XFS_RMAP_OINFO_REFC;
>  	args.minlen = args.maxlen = args.prod = 1;
>  	args.resv = XFS_AG_RESV_METADATA;
>  
> @@ -106,15 +106,13 @@ xfs_refcountbt_free_block(
>  	struct xfs_buf		*agbp = cur->bc_private.a.agbp;
>  	struct xfs_agf		*agf = XFS_BUF_TO_AGF(agbp);
>  	xfs_fsblock_t		fsbno = XFS_DADDR_TO_FSB(mp, XFS_BUF_ADDR(bp));
> -	struct xfs_owner_info	oinfo;
>  	int			error;
>  
>  	trace_xfs_refcountbt_free_block(cur->bc_mp, cur->bc_private.a.agno,
>  			XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno), 1);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_REFC);
>  	be32_add_cpu(&agf->agf_refcount_blocks, -1);
>  	xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_REFCOUNT_BLOCKS);
> -	error = xfs_free_extent(cur->bc_tp, fsbno, 1, &oinfo,
> +	error = xfs_free_extent(cur->bc_tp, fsbno, 1, &XFS_RMAP_OINFO_REFC,
>  			XFS_AG_RESV_METADATA);
>  	if (error)
>  		return error;
> diff --git a/fs/xfs/libxfs/xfs_rmap.c b/fs/xfs/libxfs/xfs_rmap.c
> index e7d06295338d..8ed885507dd8 100644
> --- a/fs/xfs/libxfs/xfs_rmap.c
> +++ b/fs/xfs/libxfs/xfs_rmap.c
> @@ -2550,3 +2550,31 @@ xfs_rmap_has_other_keys(
>  	*has_rmap = rks.has_rmap;
>  	return error;
>  }
> +
> +const struct xfs_owner_info XFS_RMAP_OINFO_SKIP_UPDATE = {
> +	.oi_owner = XFS_RMAP_OWN_NULL,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_ANY_OWNER = {
> +	.oi_owner = XFS_RMAP_OWN_UNKNOWN,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_FS = {
> +	.oi_owner = XFS_RMAP_OWN_FS,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_LOG = {
> +	.oi_owner = XFS_RMAP_OWN_LOG,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_AG = {
> +	.oi_owner = XFS_RMAP_OWN_AG,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_INOBT = {
> +	.oi_owner = XFS_RMAP_OWN_INOBT,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_INODES = {
> +	.oi_owner = XFS_RMAP_OWN_INODES,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_REFC = {
> +	.oi_owner = XFS_RMAP_OWN_REFC,
> +};
> +const struct xfs_owner_info XFS_RMAP_OINFO_COW = {
> +	.oi_owner = XFS_RMAP_OWN_COW,
> +};
> diff --git a/fs/xfs/libxfs/xfs_rmap.h b/fs/xfs/libxfs/xfs_rmap.h
> index 6d32838aa184..e21ed0294e5c 100644
> --- a/fs/xfs/libxfs/xfs_rmap.h
> +++ b/fs/xfs/libxfs/xfs_rmap.h
> @@ -6,16 +6,6 @@
>  #ifndef __XFS_RMAP_H__
>  #define __XFS_RMAP_H__
>  
> -static inline void
> -xfs_rmap_ag_owner(
> -	struct xfs_owner_info	*oi,
> -	uint64_t		owner)
> -{
> -	oi->oi_owner = owner;
> -	oi->oi_offset = 0;
> -	oi->oi_flags = 0;
> -}
> -
>  static inline void
>  xfs_rmap_ino_bmbt_owner(
>  	struct xfs_owner_info	*oi,
> @@ -43,13 +33,6 @@ xfs_rmap_ino_owner(
>  		oi->oi_flags |= XFS_OWNER_INFO_ATTR_FORK;
>  }
>  
> -static inline void
> -xfs_rmap_skip_owner_update(
> -	struct xfs_owner_info	*oi)
> -{
> -	xfs_rmap_ag_owner(oi, XFS_RMAP_OWN_NULL);
> -}
> -
>  static inline bool
>  xfs_rmap_should_skip_owner_update(
>  	const struct xfs_owner_info	*oi)
> @@ -57,13 +40,6 @@ xfs_rmap_should_skip_owner_update(
>  	return oi->oi_owner == XFS_RMAP_OWN_NULL;
>  }
>  
> -static inline void
> -xfs_rmap_any_owner_update(
> -	struct xfs_owner_info	*oi)
> -{
> -	xfs_rmap_ag_owner(oi, XFS_RMAP_OWN_UNKNOWN);
> -}
> -
>  /* Reverse mapping functions. */
>  
>  struct xfs_buf;
> @@ -225,4 +201,14 @@ int xfs_rmap_has_other_keys(struct xfs_btree_cur *cur, xfs_agblock_t bno,
>  		bool *has_rmap);
>  int xfs_rmap_map_raw(struct xfs_btree_cur *cur, struct xfs_rmap_irec *rmap);
>  
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_SKIP_UPDATE;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_ANY_OWNER;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_FS;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_LOG;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_AG;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_INOBT;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_INODES;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_REFC;
> +extern const struct xfs_owner_info XFS_RMAP_OINFO_COW;
> +
>  #endif	/* __XFS_RMAP_H__ */
> diff --git a/fs/xfs/scrub/agheader.c b/fs/xfs/scrub/agheader.c
> index 3068a9382feb..90955ab1e895 100644
> --- a/fs/xfs/scrub/agheader.c
> +++ b/fs/xfs/scrub/agheader.c
> @@ -32,7 +32,6 @@ xchk_superblock_xref(
>  	struct xfs_scrub	*sc,
>  	struct xfs_buf		*bp)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_mount	*mp = sc->mp;
>  	xfs_agnumber_t		agno = sc->sm->sm_agno;
>  	xfs_agblock_t		agbno;
> @@ -49,8 +48,7 @@ xchk_superblock_xref(
>  
>  	xchk_xref_is_used_space(sc, agbno, 1);
>  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_FS);
> -	xchk_xref_is_owned_by(sc, agbno, 1, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  
>  	/* scrub teardown will take care of sc->sa for us */
> @@ -484,7 +482,6 @@ STATIC void
>  xchk_agf_xref(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_mount	*mp = sc->mp;
>  	xfs_agblock_t		agbno;
>  	int			error;
> @@ -502,8 +499,7 @@ xchk_agf_xref(
>  	xchk_agf_xref_freeblks(sc);
>  	xchk_agf_xref_cntbt(sc);
>  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_FS);
> -	xchk_xref_is_owned_by(sc, agbno, 1, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);
>  	xchk_agf_xref_btreeblks(sc);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  	xchk_agf_xref_refcblks(sc);
> @@ -598,7 +594,6 @@ xchk_agf(
>  /* AGFL */
>  
>  struct xchk_agfl_info {
> -	struct xfs_owner_info	oinfo;
>  	unsigned int		sz_entries;
>  	unsigned int		nr_entries;
>  	xfs_agblock_t		*entries;
> @@ -609,15 +604,14 @@ struct xchk_agfl_info {
>  STATIC void
>  xchk_agfl_block_xref(
>  	struct xfs_scrub	*sc,
> -	xfs_agblock_t		agbno,
> -	struct xfs_owner_info	*oinfo)
> +	xfs_agblock_t		agbno)
>  {
>  	if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)
>  		return;
>  
>  	xchk_xref_is_used_space(sc, agbno, 1);
>  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);
> -	xchk_xref_is_owned_by(sc, agbno, 1, oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_AG);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  }
>  
> @@ -638,7 +632,7 @@ xchk_agfl_block(
>  	else
>  		xchk_block_set_corrupt(sc, sc->sa.agfl_bp);
>  
> -	xchk_agfl_block_xref(sc, agbno, priv);
> +	xchk_agfl_block_xref(sc, agbno);
>  
>  	if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)
>  		return XFS_BTREE_QUERY_RANGE_ABORT;
> @@ -662,7 +656,6 @@ STATIC void
>  xchk_agfl_xref(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_mount	*mp = sc->mp;
>  	xfs_agblock_t		agbno;
>  	int			error;
> @@ -678,8 +671,7 @@ xchk_agfl_xref(
>  
>  	xchk_xref_is_used_space(sc, agbno, 1);
>  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_FS);
> -	xchk_xref_is_owned_by(sc, agbno, 1, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  
>  	/*
> @@ -732,7 +724,6 @@ xchk_agfl(
>  	}
>  
>  	/* Check the blocks in the AGFL. */
> -	xfs_rmap_ag_owner(&sai.oinfo, XFS_RMAP_OWN_AG);
>  	error = xfs_agfl_walk(sc->mp, XFS_BUF_TO_AGF(sc->sa.agf_bp),
>  			sc->sa.agfl_bp, xchk_agfl_block, &sai);
>  	if (error == XFS_BTREE_QUERY_RANGE_ABORT) {
> @@ -791,7 +782,6 @@ STATIC void
>  xchk_agi_xref(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_mount	*mp = sc->mp;
>  	xfs_agblock_t		agbno;
>  	int			error;
> @@ -808,8 +798,7 @@ xchk_agi_xref(
>  	xchk_xref_is_used_space(sc, agbno, 1);
>  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);
>  	xchk_agi_xref_icounts(sc);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_FS);
> -	xchk_xref_is_owned_by(sc, agbno, 1, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  
>  	/* scrub teardown will take care of sc->sa for us */
> diff --git a/fs/xfs/scrub/agheader_repair.c b/fs/xfs/scrub/agheader_repair.c
> index f7568a4b5fe5..03d1e15cceba 100644
> --- a/fs/xfs/scrub/agheader_repair.c
> +++ b/fs/xfs/scrub/agheader_repair.c
> @@ -646,7 +646,6 @@ int
>  xrep_agfl(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_bitmap	agfl_extents;
>  	struct xfs_mount	*mp = sc->mp;
>  	struct xfs_buf		*agf_bp;
> @@ -708,8 +707,8 @@ xrep_agfl(
>  		goto err;
>  
>  	/* Dump any AGFL overflow. */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG);
> -	return xrep_reap_extents(sc, &agfl_extents, &oinfo, XFS_AG_RESV_AGFL);
> +	return xrep_reap_extents(sc, &agfl_extents, &XFS_RMAP_OINFO_AG,
> +			XFS_AG_RESV_AGFL);
>  err:
>  	xfs_bitmap_destroy(&agfl_extents);
>  	return error;
> diff --git a/fs/xfs/scrub/alloc.c b/fs/xfs/scrub/alloc.c
> index 376bcb585ae6..44883e9112ad 100644
> --- a/fs/xfs/scrub/alloc.c
> +++ b/fs/xfs/scrub/alloc.c
> @@ -125,12 +125,10 @@ xchk_allocbt(
>  	struct xfs_scrub	*sc,
>  	xfs_btnum_t		which)
>  {
> -	struct xfs_owner_info	oinfo;
>  	struct xfs_btree_cur	*cur;
>  
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG);
>  	cur = which == XFS_BTNUM_BNO ? sc->sa.bno_cur : sc->sa.cnt_cur;
> -	return xchk_btree(sc, cur, xchk_allocbt_rec, &oinfo, NULL);
> +	return xchk_btree(sc, cur, xchk_allocbt_rec, &XFS_RMAP_OINFO_AG, NULL);
>  }
>  
>  int
> diff --git a/fs/xfs/scrub/ialloc.c b/fs/xfs/scrub/ialloc.c
> index 224dba937492..72f45b298fa5 100644
> --- a/fs/xfs/scrub/ialloc.c
> +++ b/fs/xfs/scrub/ialloc.c
> @@ -82,15 +82,12 @@ xchk_iallocbt_chunk_xref(
>  	xfs_agblock_t			agbno,
>  	xfs_extlen_t			len)
>  {
> -	struct xfs_owner_info		oinfo;
> -
>  	if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)
>  		return;
>  
>  	xchk_xref_is_used_space(sc, agbno, len);
>  	xchk_iallocbt_chunk_xref_other(sc, irec, agino);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INODES);
> -	xchk_xref_is_owned_by(sc, agbno, len, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, len, &XFS_RMAP_OINFO_INODES);
>  	xchk_xref_is_not_shared(sc, agbno, len);
>  }
>  
> @@ -186,7 +183,6 @@ xchk_iallocbt_check_freemask(
>  	struct xchk_btree		*bs,
>  	struct xfs_inobt_rec_incore	*irec)
>  {
> -	struct xfs_owner_info		oinfo;
>  	struct xfs_imap			imap;
>  	struct xfs_mount		*mp = bs->cur->bc_mp;
>  	struct xfs_dinode		*dip;
> @@ -205,7 +201,6 @@ xchk_iallocbt_check_freemask(
>  	/* Make sure the freemask matches the inode records. */
>  	blks_per_cluster = xfs_icluster_size_fsb(mp);
>  	nr_inodes = XFS_OFFBNO_TO_AGINO(mp, blks_per_cluster, 0);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INODES);
>  
>  	for (agino = irec->ir_startino;
>  	     agino < irec->ir_startino + XFS_INODES_PER_CHUNK;
> @@ -230,12 +225,13 @@ xchk_iallocbt_check_freemask(
>  		/* If any part of this is a hole, skip it. */
>  		if (ir_holemask) {
>  			xchk_xref_is_not_owned_by(bs->sc, agbno,
> -					blks_per_cluster, &oinfo);
> +					blks_per_cluster,
> +					&XFS_RMAP_OINFO_INODES);
>  			continue;
>  		}
>  
>  		xchk_xref_is_owned_by(bs->sc, agbno, blks_per_cluster,
> -				&oinfo);
> +				&XFS_RMAP_OINFO_INODES);
>  
>  		/* Grab the inode cluster buffer. */
>  		imap.im_blkno = XFS_AGB_TO_DADDR(mp, bs->cur->bc_private.a.agno,
> @@ -366,7 +362,6 @@ xchk_iallocbt_xref_rmap_btreeblks(
>  	struct xfs_scrub	*sc,
>  	int			which)
>  {
> -	struct xfs_owner_info	oinfo;
>  	xfs_filblks_t		blocks;
>  	xfs_extlen_t		inobt_blocks = 0;
>  	xfs_extlen_t		finobt_blocks = 0;
> @@ -388,9 +383,8 @@ xchk_iallocbt_xref_rmap_btreeblks(
>  			return;
>  	}
>  
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INOBT);
> -	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur, &oinfo,
> -			&blocks);
> +	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur,
> +			&XFS_RMAP_OINFO_INOBT, &blocks);
>  	if (!xchk_should_check_xref(sc, &error, &sc->sa.rmap_cur))
>  		return;
>  	if (blocks != inobt_blocks + finobt_blocks)
> @@ -407,7 +401,6 @@ xchk_iallocbt_xref_rmap_inodes(
>  	int			which,
>  	xfs_filblks_t		inode_blocks)
>  {
> -	struct xfs_owner_info	oinfo;
>  	xfs_filblks_t		blocks;
>  	int			error;
>  
> @@ -415,9 +408,8 @@ xchk_iallocbt_xref_rmap_inodes(
>  		return;
>  
>  	/* Check that we saw as many inode blocks as the rmap knows about. */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INODES);
> -	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur, &oinfo,
> -			&blocks);
> +	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur,
> +			&XFS_RMAP_OINFO_INODES, &blocks);
>  	if (!xchk_should_check_xref(sc, &error, &sc->sa.rmap_cur))
>  		return;
>  	if (blocks != inode_blocks)
> @@ -431,13 +423,11 @@ xchk_iallocbt(
>  	xfs_btnum_t		which)
>  {
>  	struct xfs_btree_cur	*cur;
> -	struct xfs_owner_info	oinfo;
>  	xfs_filblks_t		inode_blocks = 0;
>  	int			error;
>  
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INOBT);
>  	cur = which == XFS_BTNUM_INO ? sc->sa.ino_cur : sc->sa.fino_cur;
> -	error = xchk_btree(sc, cur, xchk_iallocbt_rec, &oinfo,
> +	error = xchk_btree(sc, cur, xchk_iallocbt_rec, &XFS_RMAP_OINFO_INOBT,
>  			&inode_blocks);
>  	if (error)
>  		return error;
> diff --git a/fs/xfs/scrub/inode.c b/fs/xfs/scrub/inode.c
> index e386c9b0b4ab..e213efc194a1 100644
> --- a/fs/xfs/scrub/inode.c
> +++ b/fs/xfs/scrub/inode.c
> @@ -509,7 +509,6 @@ xchk_inode_xref(
>  	xfs_ino_t		ino,
>  	struct xfs_dinode	*dip)
>  {
> -	struct xfs_owner_info	oinfo;
>  	xfs_agnumber_t		agno;
>  	xfs_agblock_t		agbno;
>  	int			error;
> @@ -526,8 +525,7 @@ xchk_inode_xref(
>  
>  	xchk_xref_is_used_space(sc, agbno, 1);
>  	xchk_inode_xref_finobt(sc, ino);
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INODES);
> -	xchk_xref_is_owned_by(sc, agbno, 1, &oinfo);
> +	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_INODES);
>  	xchk_xref_is_not_shared(sc, agbno, 1);
>  	xchk_inode_xref_bmap(sc, dip);
>  
> diff --git a/fs/xfs/scrub/refcount.c b/fs/xfs/scrub/refcount.c
> index b7ade620acee..708b4158eb90 100644
> --- a/fs/xfs/scrub/refcount.c
> +++ b/fs/xfs/scrub/refcount.c
> @@ -385,7 +385,6 @@ xchk_refcount_xref_rmap(
>  	struct xfs_scrub	*sc,
>  	xfs_filblks_t		cow_blocks)
>  {
> -	struct xfs_owner_info	oinfo;
>  	xfs_extlen_t		refcbt_blocks = 0;
>  	xfs_filblks_t		blocks;
>  	int			error;
> @@ -394,21 +393,19 @@ xchk_refcount_xref_rmap(
>  		return;
>  
>  	/* Check that we saw as many refcbt blocks as the rmap knows about. */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_REFC);
>  	error = xfs_btree_count_blocks(sc->sa.refc_cur, &refcbt_blocks);
>  	if (!xchk_btree_process_error(sc, sc->sa.refc_cur, 0, &error))
>  		return;
> -	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur, &oinfo,
> -			&blocks);
> +	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur,
> +			&XFS_RMAP_OINFO_REFC, &blocks);
>  	if (!xchk_should_check_xref(sc, &error, &sc->sa.rmap_cur))
>  		return;
>  	if (blocks != refcbt_blocks)
>  		xchk_btree_xref_set_corrupt(sc, sc->sa.rmap_cur, 0);
>  
>  	/* Check that we saw as many cow blocks as the rmap knows about. */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_COW);
> -	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur, &oinfo,
> -			&blocks);
> +	error = xchk_count_rmap_ownedby_ag(sc, sc->sa.rmap_cur,
> +			&XFS_RMAP_OINFO_COW, &blocks);
>  	if (!xchk_should_check_xref(sc, &error, &sc->sa.rmap_cur))
>  		return;
>  	if (blocks != cow_blocks)
> @@ -420,13 +417,11 @@ int
>  xchk_refcountbt(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
>  	xfs_agblock_t		cow_blocks = 0;
>  	int			error;
>  
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_REFC);
>  	error = xchk_btree(sc, sc->sa.refc_cur, xchk_refcountbt_rec,
> -			&oinfo, &cow_blocks);
> +			&XFS_RMAP_OINFO_REFC, &cow_blocks);
>  	if (error)
>  		return error;
>  
> diff --git a/fs/xfs/scrub/repair.c b/fs/xfs/scrub/repair.c
> index 90ae9e173de7..1c8eecfe52b8 100644
> --- a/fs/xfs/scrub/repair.c
> +++ b/fs/xfs/scrub/repair.c
> @@ -505,7 +505,6 @@ xrep_put_freelist(
>  	struct xfs_scrub	*sc,
>  	xfs_agblock_t		agbno)
>  {
> -	struct xfs_owner_info	oinfo;
>  	int			error;
>  
>  	/* Make sure there's space on the freelist. */
> @@ -518,9 +517,8 @@ xrep_put_freelist(
>  	 * create an rmap for the block prior to merging it or else other
>  	 * parts will break.
>  	 */
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG);
>  	error = xfs_rmap_alloc(sc->tp, sc->sa.agf_bp, sc->sa.agno, agbno, 1,
> -			&oinfo);
> +			&XFS_RMAP_OINFO_AG);
>  	if (error)
>  		return error;
>  
> diff --git a/fs/xfs/scrub/rmap.c b/fs/xfs/scrub/rmap.c
> index 8a5bf15d544d..92a140c5b55e 100644
> --- a/fs/xfs/scrub/rmap.c
> +++ b/fs/xfs/scrub/rmap.c
> @@ -174,11 +174,8 @@ int
>  xchk_rmapbt(
>  	struct xfs_scrub	*sc)
>  {
> -	struct xfs_owner_info	oinfo;
> -
> -	xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG);
>  	return xchk_btree(sc, sc->sa.rmap_cur, xchk_rmapbt_rec,
> -			&oinfo, NULL);
> +			&XFS_RMAP_OINFO_AG, NULL);
>  }
>  
>  /* xref check that the extent is owned by a given owner */
> diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c
> index d9da66c718bb..74ddf66f4cfe 100644
> --- a/fs/xfs/xfs_extfree_item.c
> +++ b/fs/xfs/xfs_extfree_item.c
> @@ -494,7 +494,6 @@ xfs_efi_recover(
>  	int			error = 0;
>  	xfs_extent_t		*extp;
>  	xfs_fsblock_t		startblock_fsb;
> -	struct xfs_owner_info	oinfo;
>  
>  	ASSERT(!test_bit(XFS_EFI_RECOVERED, &efip->efi_flags));
>  
> @@ -526,11 +525,11 @@ xfs_efi_recover(
>  		return error;
>  	efdp = xfs_trans_get_efd(tp, efip, efip->efi_format.efi_nextents);
>  
> -	xfs_rmap_any_owner_update(&oinfo);
>  	for (i = 0; i < efip->efi_format.efi_nextents; i++) {
>  		extp = &efip->efi_format.efi_extents[i];
>  		error = xfs_trans_free_extent(tp, efdp, extp->ext_start,
> -					      extp->ext_len, &oinfo, false);
> +					      extp->ext_len,
> +					      &XFS_RMAP_OINFO_ANY_OWNER, false);
>  		if (error)
>  			goto abort_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