]> git.apps.os.sepia.ceph.com Git - xfsprogs-dev.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>
Tue, 24 Dec 2024 02:01:27 +0000 (18:01 -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>
Reviewed-by: Christoph Hellwig <hch@lst.de>
repair/phase6.c

index 0f13d996fe726a2e8873ac19c9ddcfcfd02a2d3e..79c8226110a89026f17deb6fd25253818d8c05d8 100644 (file)
@@ -2891,6 +2891,18 @@ _("error %d fixing shortform directory %llu\n"),
        libxfs_irele(ip);
 }
 
+static void
+mark_inode(
+       struct xfs_mount        *mp,
+       xfs_ino_t               ino)
+{
+       struct ino_tree_node    *irec =
+               find_inode_rec(mp, XFS_INO_TO_AGNO(mp, ino),
+                                  XFS_INO_TO_AGINO(mp, ino));
+
+       add_inode_reached(irec, XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum);
+}
+
 /*
  * mark realtime bitmap and summary inodes as reached.
  * quota inode will be marked here as well
@@ -2898,54 +2910,18 @@ _("error %d fixing shortform directory %llu\n"),
 static void
 mark_standalone_inodes(xfs_mount_t *mp)
 {
-       ino_tree_node_t         *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));
+       mark_inode(mp, mp->m_sb.sb_rbmino);
+       mark_inode(mp, mp->m_sb.sb_rsumino);
 
-       offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino) -
-                       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;
-
-       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