xfs: set the scrub AG number in xchk_ag_read_headers
authorDarrick J. Wong <djwong@kernel.org>
Mon, 22 Mar 2021 16:51:53 +0000 (09:51 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 25 Mar 2021 23:47:49 +0000 (16:47 -0700)
Since xchk_ag_read_headers initializes fields in struct xchk_ag, we
might as well set the AG number and save the callers the trouble.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/scrub/agheader.c
fs/xfs/scrub/common.c
fs/xfs/scrub/common.h

index ae8e2e0ac64aed1371027ee60c8dff6b431b4341..afe60a9ca93fd50470eac3294f05035baa393b2e 100644 (file)
@@ -508,7 +508,7 @@ xchk_agf(
        struct xfs_mount        *mp = sc->mp;
        struct xfs_agf          *agf;
        struct xfs_perag        *pag;
-       xfs_agnumber_t          agno;
+       xfs_agnumber_t          agno = sc->sm->sm_agno;
        xfs_agblock_t           agbno;
        xfs_agblock_t           eoag;
        xfs_agblock_t           agfl_first;
@@ -518,9 +518,7 @@ xchk_agf(
        int                     level;
        int                     error = 0;
 
-       agno = sc->sa.agno = sc->sm->sm_agno;
-       error = xchk_ag_read_headers(sc, agno, &sc->sa.agi_bp,
-                       &sc->sa.agf_bp, &sc->sa.agfl_bp);
+       error = xchk_ag_read_headers(sc, agno, &sc->sa);
        if (!xchk_process_error(sc, agno, XFS_AGF_BLOCK(sc->mp), &error))
                goto out;
        xchk_buffer_recheck(sc, sc->sa.agf_bp);
@@ -691,14 +689,12 @@ xchk_agfl(
 {
        struct xchk_agfl_info   sai;
        struct xfs_agf          *agf;
-       xfs_agnumber_t          agno;
+       xfs_agnumber_t          agno = sc->sm->sm_agno;
        unsigned int            agflcount;
        unsigned int            i;
        int                     error;
 
-       agno = sc->sa.agno = sc->sm->sm_agno;
-       error = xchk_ag_read_headers(sc, agno, &sc->sa.agi_bp,
-                       &sc->sa.agf_bp, &sc->sa.agfl_bp);
+       error = xchk_ag_read_headers(sc, agno, &sc->sa);
        if (!xchk_process_error(sc, agno, XFS_AGFL_BLOCK(sc->mp), &error))
                goto out;
        if (!sc->sa.agf_bp)
@@ -846,7 +842,7 @@ xchk_agi(
        struct xfs_mount        *mp = sc->mp;
        struct xfs_agi          *agi;
        struct xfs_perag        *pag;
-       xfs_agnumber_t          agno;
+       xfs_agnumber_t          agno = sc->sm->sm_agno;
        xfs_agblock_t           agbno;
        xfs_agblock_t           eoag;
        xfs_agino_t             agino;
@@ -857,9 +853,7 @@ xchk_agi(
        int                     level;
        int                     error = 0;
 
-       agno = sc->sa.agno = sc->sm->sm_agno;
-       error = xchk_ag_read_headers(sc, agno, &sc->sa.agi_bp,
-                       &sc->sa.agf_bp, &sc->sa.agfl_bp);
+       error = xchk_ag_read_headers(sc, agno, &sc->sa);
        if (!xchk_process_error(sc, agno, XFS_AGI_BLOCK(sc->mp), &error))
                goto out;
        xchk_buffer_recheck(sc, sc->sa.agi_bp);
index 53456f3de881e2d48034d9ae7e9560ae8611ac53..45c5bf37daaac2cbf1c4627ce4f60e54b5fd3a55 100644 (file)
@@ -402,22 +402,22 @@ int
 xchk_ag_read_headers(
        struct xfs_scrub        *sc,
        xfs_agnumber_t          agno,
-       struct xfs_buf          **agi,
-       struct xfs_buf          **agf,
-       struct xfs_buf          **agfl)
+       struct xchk_ag          *sa)
 {
        struct xfs_mount        *mp = sc->mp;
        int                     error;
 
-       error = xfs_ialloc_read_agi(mp, sc->tp, agno, agi);
+       sa->agno = agno;
+
+       error = xfs_ialloc_read_agi(mp, sc->tp, agno, &sa->agi_bp);
        if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGI))
                goto out;
 
-       error = xfs_alloc_read_agf(mp, sc->tp, agno, 0, agf);
+       error = xfs_alloc_read_agf(mp, sc->tp, agno, 0, &sa->agf_bp);
        if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGF))
                goto out;
 
-       error = xfs_alloc_read_agfl(mp, sc->tp, agno, agfl);
+       error = xfs_alloc_read_agfl(mp, sc->tp, agno, &sa->agfl_bp);
        if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGFL))
                goto out;
        error = 0;
@@ -547,9 +547,7 @@ xchk_ag_init(
 {
        int                     error;
 
-       sa->agno = agno;
-       error = xchk_ag_read_headers(sc, agno, &sa->agi_bp,
-                       &sa->agf_bp, &sa->agfl_bp);
+       error = xchk_ag_read_headers(sc, agno, sa);
        if (error)
                return error;
 
index 2e50d146105d21a27c84131780d6d63467f39ba8..bf94b2db0b967a2abda7921d1a894170356cf5fc 100644 (file)
@@ -120,8 +120,7 @@ int xchk_ag_init(struct xfs_scrub *sc, xfs_agnumber_t agno,
                struct xchk_ag *sa);
 void xchk_perag_get(struct xfs_mount *mp, struct xchk_ag *sa);
 int xchk_ag_read_headers(struct xfs_scrub *sc, xfs_agnumber_t agno,
-               struct xfs_buf **agi, struct xfs_buf **agf,
-               struct xfs_buf **agfl);
+               struct xchk_ag *sa);
 void xchk_ag_btcur_free(struct xchk_ag *sa);
 int xchk_ag_btcur_init(struct xfs_scrub *sc, struct xchk_ag *sa);
 int xchk_count_rmap_ownedby_ag(struct xfs_scrub *sc, struct xfs_btree_cur *cur,