]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
common/populate: refactor caching of metadumps to a helper
authorDarrick J. Wong <djwong@kernel.org>
Thu, 20 Feb 2025 21:47:05 +0000 (13:47 -0800)
committerZorro Lang <zlang@kernel.org>
Thu, 6 Mar 2025 13:25:55 +0000 (21:25 +0800)
Hoist out of _scratch_populate_cached all the code that we use to save a
metadump of the populated filesystem.  We're going to make this more
involved for XFS in the next few patches so that we can take advantage
of the new support for external devices in metadump/mdrestore.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
common/populate

index 7690f269df8e79f61afa14549a067984eddf418e..627e8ca49694e7c2c6733c14cce3549936d298e1 100644 (file)
@@ -1064,6 +1064,31 @@ _scratch_populate_restore_cached() {
        return 1
 }
 
+# Take a metadump of the scratch filesystem and cache it for later.
+_scratch_populate_save_metadump()
+{
+       local metadump_file="$1"
+
+       case "${FSTYP}" in
+       "xfs")
+               local logdev=none
+               [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+                       logdev=$SCRATCH_LOGDEV
+
+               _xfs_metadump "$metadump_file" "$SCRATCH_DEV" "$logdev" \
+                               compress -a -o
+               res=$?
+               ;;
+       "ext2"|"ext3"|"ext4")
+               _ext4_metadump "${SCRATCH_DEV}" "${metadump_file}" compress
+               res=$?
+               ;;
+       *)
+               _fail "Don't know how to save a ${FSTYP} filesystem."
+       esac
+       return $res
+}
+
 # Populate a scratch FS from scratch or from a cached image.
 _scratch_populate_cached() {
        local meta_descr="$(_scratch_populate_cache_tag "$@")"
@@ -1087,26 +1112,20 @@ _scratch_populate_cached() {
 
        # Oh well, just create one from scratch
        _scratch_mkfs
-       echo "${meta_descr}" > "${populate_metadump_descr}"
        case "${FSTYP}" in
        "xfs")
                _scratch_xfs_populate $@
                _scratch_xfs_populate_check
-
-               local logdev=none
-               [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
-                       logdev=$SCRATCH_LOGDEV
-
-               _xfs_metadump "$POPULATE_METADUMP" "$SCRATCH_DEV" "$logdev" \
-                       compress -a -o
                ;;
        "ext2"|"ext3"|"ext4")
                _scratch_ext4_populate $@
                _scratch_ext4_populate_check
-               _ext4_metadump "${SCRATCH_DEV}" "${POPULATE_METADUMP}" compress
                ;;
        *)
                _fail "Don't know how to populate a ${FSTYP} filesystem."
                ;;
        esac
+
+       _scratch_populate_save_metadump "${POPULATE_METADUMP}" && \
+                       echo "${meta_descr}" > "${populate_metadump_descr}"
 }