]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: use xfs_validate_rt_geometry
authorChristoph Hellwig <hch@lst.de>
Tue, 29 Oct 2024 00:03:33 +0000 (17:03 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 31 Oct 2024 22:45:05 +0000 (15:45 -0700)
Use shared libxfs code with the kernel instead of reimplementing it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
libxfs/libxfs_api_defs.h
repair/sb.c

index b9986a00681c1ea924a59b58c28f2350a6c7e163..a4e8fd08a9054194c7c6d902a289b3a1c88f2a22 100644 (file)
 
 #define xfs_update_secondary_sbs       libxfs_update_secondary_sbs
 
+#define xfs_validate_rt_geometry       libxfs_validate_rt_geometry
 #define xfs_validate_stripe_geometry   libxfs_validate_stripe_geometry
 #define xfs_verify_agbno               libxfs_verify_agbno
 #define xfs_verify_agbext              libxfs_verify_agbext
index 4b49c1b33c6c83d3e520ff3f6a84d13b06ed4587..1320929caee5905d52583ee2d990b4f0e43df38f 100644 (file)
@@ -447,44 +447,8 @@ verify_sb(char *sb_buf, xfs_sb_t *sb, int is_primary_sb)
                        return(XR_BAD_SECT_SIZE_DATA);
        }
 
-       /*
-        * real-time extent size is always set
-        */
-       if (sb->sb_rextsize * sb->sb_blocksize > XFS_MAX_RTEXTSIZE)
-               return(XR_BAD_RT_GEO_DATA);
-
-       if (sb->sb_rextsize * sb->sb_blocksize < XFS_MIN_RTEXTSIZE)
-                       return(XR_BAD_RT_GEO_DATA);
-
-       if (sb->sb_rblocks == 0)  {
-               if (sb->sb_rextents != 0)
-                       return(XR_BAD_RT_GEO_DATA);
-
-               if (sb->sb_rbmblocks != 0)
-                       return(XR_BAD_RT_GEO_DATA);
-
-               if (sb->sb_rextslog != 0)
-                       return(XR_BAD_RT_GEO_DATA);
-
-               if (sb->sb_frextents != 0)
-                       return(XR_BAD_RT_GEO_DATA);
-       } else  {
-               /*
-                * if we have a real-time partition, sanity-check geometry
-                */
-               if (sb->sb_rblocks / sb->sb_rextsize != sb->sb_rextents)
-                       return(XR_BAD_RT_GEO_DATA);
-
-               if (sb->sb_rextents == 0)
-                       return XR_BAD_RT_GEO_DATA;
-
-               if (sb->sb_rextslog != libxfs_compute_rextslog(sb->sb_rextents))
-                       return(XR_BAD_RT_GEO_DATA);
-
-               if (sb->sb_rbmblocks != (xfs_extlen_t) howmany(sb->sb_rextents,
-                                               NBBY * sb->sb_blocksize))
-                       return(XR_BAD_RT_GEO_DATA);
-       }
+       if (!libxfs_validate_rt_geometry(sb))
+               return XR_BAD_RT_GEO_DATA;
 
        /*
         * verify correctness of inode alignment if it's there