@@ -1047,6 +1047,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
+ 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 "$@")"
@@ -1070,26 +1095,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
;;
"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}"
}