]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs_repair: refactor marking of metadata inodes
authorDarrick J. Wong <djwong@kernel.org>
Wed, 3 Jul 2024 21:21:53 +0000 (14:21 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 30 Jul 2024 00:13:18 +0000 (17:13 -0700)
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 eb194982e034d30d36872b4e2de6b5f5ad5aeda1..39e1dabdc0972995bad266614db3e5c74067ed0d 100644 (file)
@@ -3080,61 +3080,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