]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: refactor fixed inode location checks
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 27 Feb 2020 20:04:29 +0000 (15:04 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Thu, 27 Feb 2020 20:04:29 +0000 (15:04 -0500)
Refactor the checking and resetting of fixed-location inodes (root,
rbmino, rsumino) into a helper function.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
repair/xfs_repair.c

index 3e9059f37e4d6322d9ccf3f204f0dea741072ea9..f8005f8a2962a79fe2981d76c20070ad39acd688 100644 (file)
@@ -395,6 +395,37 @@ do_log(char const *msg, ...)
        va_end(args);
 }
 
+/* Make sure a fixed-location inode is where it should be. */
+static void
+validate_sb_ino(
+       xfs_ino_t       *ino,
+       xfs_ino_t       expected_ino,
+       const char      *tag)
+{
+       if (*ino == expected_ino)
+               return;
+
+       do_warn(
+_("sb %s inode value %" PRIu64 " %sinconsistent with calculated value %"PRIu64"\n"),
+               tag, *ino, *ino == NULLFSINO ? "(NULLFSINO) " : "",
+               expected_ino);
+
+       if (!no_modify)
+               do_warn(
+_("resetting superblock %s inode pointer to %"PRIu64"\n"),
+                       tag, expected_ino);
+       else
+               do_warn(
+_("would reset superblock %s inode pointer to %"PRIu64"\n"),
+                       tag, expected_ino);
+
+       /*
+        * Just set the value -- safe since the superblock doesn't get flushed
+        * out if no_modify is set.
+        */
+       *ino = expected_ino;
+}
+
 static void
 calc_mkfs(xfs_mount_t *mp)
 {
@@ -463,75 +494,12 @@ calc_mkfs(xfs_mount_t *mp)
        /*
         * now the first 3 inodes in the system
         */
-       if (mp->m_sb.sb_rootino != first_prealloc_ino)  {
-               do_warn(
-_("sb root inode value %" PRIu64 " %sinconsistent with calculated value %u\n"),
-                       mp->m_sb.sb_rootino,
-                       (mp->m_sb.sb_rootino == NULLFSINO ? "(NULLFSINO) ":""),
-                       first_prealloc_ino);
-
-               if (!no_modify)
-                       do_warn(
-               _("resetting superblock root inode pointer to %u\n"),
-                               first_prealloc_ino);
-               else
-                       do_warn(
-               _("would reset superblock root inode pointer to %u\n"),
-                               first_prealloc_ino);
-
-               /*
-                * just set the value -- safe since the superblock
-                * doesn't get flushed out if no_modify is set
-                */
-               mp->m_sb.sb_rootino = first_prealloc_ino;
-       }
-
-       if (mp->m_sb.sb_rbmino != first_prealloc_ino + 1)  {
-               do_warn(
-_("sb realtime bitmap inode %" PRIu64 " %sinconsistent with calculated value %u\n"),
-                       mp->m_sb.sb_rbmino,
-                       (mp->m_sb.sb_rbmino == NULLFSINO ? "(NULLFSINO) ":""),
-                       first_prealloc_ino + 1);
-
-               if (!no_modify)
-                       do_warn(
-               _("resetting superblock realtime bitmap ino pointer to %u\n"),
-                               first_prealloc_ino + 1);
-               else
-                       do_warn(
-               _("would reset superblock realtime bitmap ino pointer to %u\n"),
-                               first_prealloc_ino + 1);
-
-               /*
-                * just set the value -- safe since the superblock
-                * doesn't get flushed out if no_modify is set
-                */
-               mp->m_sb.sb_rbmino = first_prealloc_ino + 1;
-       }
-
-       if (mp->m_sb.sb_rsumino != first_prealloc_ino + 2)  {
-               do_warn(
-_("sb realtime summary inode %" PRIu64 " %sinconsistent with calculated value %u\n"),
-                       mp->m_sb.sb_rsumino,
-                       (mp->m_sb.sb_rsumino == NULLFSINO ? "(NULLFSINO) ":""),
-                       first_prealloc_ino + 2);
-
-               if (!no_modify)
-                       do_warn(
-               _("resetting superblock realtime summary ino pointer to %u\n"),
-                               first_prealloc_ino + 2);
-               else
-                       do_warn(
-               _("would reset superblock realtime summary ino pointer to %u\n"),
-                               first_prealloc_ino + 2);
-
-               /*
-                * just set the value -- safe since the superblock
-                * doesn't get flushed out if no_modify is set
-                */
-               mp->m_sb.sb_rsumino = first_prealloc_ino + 2;
-       }
-
+       validate_sb_ino(&mp->m_sb.sb_rootino, first_prealloc_ino,
+                       _("root"));
+       validate_sb_ino(&mp->m_sb.sb_rbmino, first_prealloc_ino + 1,
+                       _("realtime bitmap"));
+       validate_sb_ino(&mp->m_sb.sb_rsumino, first_prealloc_ino + 2,
+                       _("realtime summary"));
 }
 
 /*