xfs: convert secondary superblock walk to use perags
authorDave Chinner <dchinner@redhat.com>
Wed, 2 Jun 2021 00:48:24 +0000 (10:48 +1000)
committerDave Chinner <david@fromorbit.com>
Wed, 2 Jun 2021 00:48:24 +0000 (10:48 +1000)
Clean up the last external manual AG walk.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_sb.c

index 99dc905..04f5386 100644 (file)
@@ -24,6 +24,7 @@
 #include "xfs_refcount_btree.h"
 #include "xfs_da_format.h"
 #include "xfs_health.h"
+#include "xfs_ag.h"
 
 /*
  * Physical superblock buffer manipulations. Shared with libxfs in userspace.
@@ -855,17 +856,18 @@ int
 xfs_update_secondary_sbs(
        struct xfs_mount        *mp)
 {
-       xfs_agnumber_t          agno;
+       struct xfs_perag        *pag;
+       xfs_agnumber_t          agno = 1;
        int                     saved_error = 0;
        int                     error = 0;
        LIST_HEAD               (buffer_list);
 
        /* update secondary superblocks. */
-       for (agno = 1; agno < mp->m_sb.sb_agcount; agno++) {
+       for_each_perag_from(mp, agno, pag) {
                struct xfs_buf          *bp;
 
                error = xfs_buf_get(mp->m_ddev_targp,
-                                XFS_AG_DADDR(mp, agno, XFS_SB_DADDR),
+                                XFS_AG_DADDR(mp, pag->pag_agno, XFS_SB_DADDR),
                                 XFS_FSS_TO_BB(mp, 1), &bp);
                /*
                 * If we get an error reading or writing alternate superblocks,
@@ -877,7 +879,7 @@ xfs_update_secondary_sbs(
                if (error) {
                        xfs_warn(mp,
                "error allocating secondary superblock for ag %d",
-                               agno);
+                               pag->pag_agno);
                        if (!saved_error)
                                saved_error = error;
                        continue;
@@ -898,7 +900,7 @@ xfs_update_secondary_sbs(
                if (error) {
                        xfs_warn(mp,
                "write error %d updating a secondary superblock near ag %d",
-                               error, agno);
+                               error, pag->pag_agno);
                        if (!saved_error)
                                saved_error = error;
                        continue;