]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blobdiff - db/metadump.c
xfs_db: refactor multi-fsb object detection decision making
[thirdparty/xfsprogs-dev.git] / db / metadump.c
index 83a257d00ab408754304a463e37c4639aa0326dc..23ecf3b740fc4186efd4744a33da5a5eed9301bd 100644 (file)
@@ -1979,6 +1979,16 @@ out_pop:
        return ret;
 }
 
+static bool
+is_multi_fsb_object(
+       struct xfs_mount        *mp,
+       typnm_t                 btype)
+{
+       if (btype == TYP_DIR2 && mp->m_dir_geo->fsbcount > 1)
+               return true;
+       return false;
+}
+
 static int
 process_multi_fsb_objects(
        xfs_fileoff_t   o,
@@ -2011,6 +2021,7 @@ process_bmbt_reclist(
        xfs_fileoff_t           last;
        xfs_agnumber_t          agno;
        xfs_agblock_t           agbno;
+       bool                    is_multi_fsb = is_multi_fsb_object(mp, btype);
        int                     error;
 
        if (btype == TYP_DATA)
@@ -2074,11 +2085,12 @@ process_bmbt_reclist(
                }
 
                /* multi-extent blocks require special handling */
-               if (btype != TYP_DIR2 || mp->m_dir_geo->fsbcount == 1) {
-                       error = process_single_fsb_objects(o, s, c, btype, last);
-               } else {
-                       error = process_multi_fsb_objects(o, s, c, btype, last);
-               }
+               if (is_multi_fsb)
+                       error = process_multi_fsb_objects(o, s, c, btype,
+                                       last);
+               else
+                       error = process_single_fsb_objects(o, s, c, btype,
+                                       last);
                if (error)
                        return 0;
        }