]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
common/populate: refactor caching of metadumps to a helper
authorDarrick J. Wong <djwong@kernel.org>
Tue, 6 Feb 2024 00:06:40 +0000 (16:06 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Fri, 1 Nov 2024 20:41:57 +0000 (13:41 -0700)
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>
common/populate

index 88c8ba2b32767cbc312aca5af23595d90b1d6499..82f526dcf9e2d599f32c39e908f71745c91e8680 100644 (file)
@@ -1051,6 +1051,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 "$@")"
@@ -1074,26 +1099,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}"
 }