]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs_repair: refactor marking of metadata inodes
authorDarrick J. Wong <djwong@kernel.org>
Thu, 21 Nov 2024 00:24:18 +0000 (16:24 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 28 Nov 2024 02:33:12 +0000 (18:33 -0800)
Refactor the mechanics of marking a metadata inode into a helper
function so that we don't have to open-code that for every single
metadata inode.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
repair/phase6.c

index 0f13d996fe726a2e8873ac19c9ddcfcfd02a2d3e..0c80c4aa36af4a2416efb58dcede7d63ff22d760 100644 (file)
@@ -2891,61 +2891,41 @@ _("error %d fixing shortform directory %llu\n"),
        libxfs_irele(ip);
 }
 
-/*
- * mark realtime bitmap and summary inodes as reached.
- * quota inode will be marked here as well
- */
 static void
-mark_standalone_inodes(xfs_mount_t *mp)
+mark_inode(
+       struct xfs_mount        *mp,
+       xfs_ino_t               ino)
 {
-       ino_tree_node_t         *irec;
+       struct ino_tree_node    *irec;
        int                     offset;
 
-       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino),
-                       XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino));
+       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, ino),
+                       XFS_INO_TO_AGINO(mp, ino));
 
-       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino) -
-                       irec->ino_startnum;
+       offset = XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum;
 
        add_inode_reached(irec, offset);
+}
 
-       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino),
-                       XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino));
-
-       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino) -
-                       irec->ino_startnum;
+/*
+ * mark realtime bitmap and summary inodes as reached.
+ * quota inode will be marked here as well
+ */
+static void
+mark_standalone_inodes(xfs_mount_t *mp)
+{
+       mark_inode(mp, mp->m_sb.sb_rbmino);
+       mark_inode(mp, mp->m_sb.sb_rsumino);
 
-       add_inode_reached(irec, offset);
+       if (!fs_quotas)
+               return;
 
-       if (fs_quotas)  {
-               if (mp->m_sb.sb_uquotino
-                               && mp->m_sb.sb_uquotino != NULLFSINO)  {
-                       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp,
-                                               mp->m_sb.sb_uquotino),
-                               XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino));
-                       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)
-                                       - irec->ino_startnum;
-                       add_inode_reached(irec, offset);
-               }
-               if (mp->m_sb.sb_gquotino
-                               && mp->m_sb.sb_gquotino != NULLFSINO)  {
-                       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp,
-                                               mp->m_sb.sb_gquotino),
-                               XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino));
-                       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)
-                                       - irec->ino_startnum;
-                       add_inode_reached(irec, offset);
-               }
-               if (mp->m_sb.sb_pquotino
-                               && mp->m_sb.sb_pquotino != NULLFSINO)  {
-                       irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp,
-                                               mp->m_sb.sb_pquotino),
-                               XFS_INO_TO_AGINO(mp, mp->m_sb.sb_pquotino));
-                       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_pquotino)
-                                       - irec->ino_startnum;
-                       add_inode_reached(irec, offset);
-               }
-       }
+       if (mp->m_sb.sb_uquotino && mp->m_sb.sb_uquotino != NULLFSINO)
+               mark_inode(mp, mp->m_sb.sb_uquotino);
+       if (mp->m_sb.sb_gquotino && mp->m_sb.sb_gquotino != NULLFSINO)
+               mark_inode(mp, mp->m_sb.sb_gquotino);
+       if (mp->m_sb.sb_pquotino && mp->m_sb.sb_pquotino != NULLFSINO)
+               mark_inode(mp, mp->m_sb.sb_pquotino);
 }
 
 static void