From: Brian Foster <bfoster@redhat.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/4] xfs: remove xfs_rmap_ag_owner and friends
Date: Thu, 29 Nov 2018 10:00:14 -0500 [thread overview]
Message-ID: <20181129150014.GA22294@bfoster> (raw)
In-Reply-To: <154344757829.3700.17896189195883141406.stgit@magnolia>
On Wed, Nov 28, 2018 at 03:26:18PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> 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@oracle.com>
> ---
Looks fine to me:
Reviewed-by: Brian Foster <bfoster@redhat.com>
> 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;
>
>
next prev parent reply other threads:[~2018-11-30 2:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-28 23:26 [PATCH 0/4] xfs-5.0: cleanups Darrick J. Wong
2018-11-28 23:26 ` [PATCH 1/4] xfs: remove xfs_rmap_ag_owner and friends Darrick J. Wong
2018-11-29 15:00 ` Brian Foster [this message]
2018-11-28 23:26 ` [PATCH 2/4] xfs: add a block to inode count converter Darrick J. Wong
2018-11-28 23:26 ` [PATCH 3/4] xfs: precalculate inodes and blocks per inode cluster Darrick J. Wong
2018-11-29 15:00 ` Brian Foster
2018-11-28 23:26 ` [PATCH 4/4] xfs: precalculate cluster alignment in inodes and blocks Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181129150014.GA22294@bfoster \
--to=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox