--- /dev/null
+##/bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2024 Oracle. All Rights Reserved.
+#
+# Filesystem metadata dump testing functions.
+#
+
+# Set up environment variables for a metadump test. Requires the test and
+# scratch devices. Sets XFS_METADUMP_{FILE,IMG} and MAX_XFS_METADUMP_VERSION.
+_xfs_setup_verify_metadump()
+{
+ XFS_METADUMP_FILE="$TEST_DIR/${seq}_metadump"
+ XFS_METADUMP_IMG="$TEST_DIR/${seq}_image"
+ MAX_XFS_METADUMP_VERSION="$(_xfs_metadump_max_version)"
+
+ rm -f "$XFS_METADUMP_FILE" "$XFS_METADUMP_IMG"*
+}
+
+_xfs_cleanup_verify_metadump()
+{
+ local img
+
+ _scratch_unmount &>> $seqres.full
+
+ test -n "$XFS_METADUMP_FILE" && rm -f "$XFS_METADUMP_FILE"
+
+ if [ -n "$XFS_METADUMP_IMG" ]; then
+ losetup -n -a -O BACK-FILE,NAME | grep "^$XFS_METADUMP_IMG" | while read backing ldev; do
+ losetup -d "$ldev"
+ done
+
+ # Don't call rm directly with a globbed argument here to avoid
+ # issues issues with variable expansions.
+ for img in "$XFS_METADUMP_IMG"*; do
+ test -e "$img" && rm -f "$img"
+ done
+ fi
+}
+
+# Create a metadump in v1 format, restore it to fs image files, then mount the
+# images and fsck them.
+_xfs_verify_metadump_v1()
+{
+ local metadump_args="$1"
+ local extra_test="$2"
+
+ local metadump_file="$XFS_METADUMP_FILE"
+ local version=""
+ local data_img="$XFS_METADUMP_IMG.data"
+ local data_loop
+
+ # Force v1 if we detect v2 support
+ if [[ $MAX_XFS_METADUMP_FORMAT > 1 ]]; then
+ version="-v 1"
+ fi
+
+ # Capture metadump, which creates metadump_file
+ _scratch_xfs_metadump $metadump_file $metadump_args $version
+
+ # Restore metadump, which creates data_img
+ SCRATCH_DEV=$data_img _scratch_xfs_mdrestore $metadump_file
+
+ # Create loopdev for data device so we can mount the fs
+ data_loop=$(_create_loop_device $data_img)
+
+ # Mount fs, run an extra test, fsck, and unmount
+ SCRATCH_DEV=$data_loop _scratch_mount
+ if [ -n "$extra_test" ]; then
+ SCRATCH_DEV=$data_loop $extra_test
+ fi
+ SCRATCH_DEV=$data_loop _check_xfs_scratch_fs
+ SCRATCH_DEV=$data_loop _scratch_unmount
+
+ # Tear down what we created
+ _destroy_loop_device $data_loop
+ rm -f $data_img
+}
+
+# Create a metadump in v2 format, restore it to fs image files, then mount the
+# images and fsck them.
+_xfs_verify_metadump_v2()
+{
+ local metadump_args="$1"
+ local extra_test="$2"
+
+ local metadump_file="$XFS_METADUMP_FILE"
+ local version="-v 2"
+ local data_img="$XFS_METADUMP_IMG.data"
+ local data_loop
+ local log_img=""
+ local log_loop
+
+ # Capture metadump, which creates metadump_file
+ _scratch_xfs_metadump $metadump_file $metadump_args $version
+
+ #
+ # Metadump v2 files can contain contents dumped from an external log
+ # device. Use a temporary file to hold the log device contents restored
+ # from such a metadump file.
+ test -n "$SCRATCH_LOGDEV" && log_img="$XFS_METADUMP_IMG.log"
+
+ # Restore metadump, which creates data_img and log_img
+ SCRATCH_DEV=$data_img SCRATCH_LOGDEV=$log_img \
+ _scratch_xfs_mdrestore $metadump_file
+
+ # Create loopdev for data device so we can mount the fs
+ data_loop=$(_create_loop_device $data_img)
+
+ # Create loopdev for log device if we recovered anything
+ test -s "$log_img" && log_loop=$(_create_loop_device $log_img)
+
+ # Mount fs, run an extra test, fsck, and unmount
+ SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop _scratch_mount
+ if [ -n "$extra_test" ]; then
+ SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop $extra_test
+ fi
+ SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop _check_xfs_scratch_fs
+ SCRATCH_DEV=$data_loop _scratch_unmount
+
+ # Tear down what we created
+ if [ -b "$log_loop" ]; then
+ _destroy_loop_device $log_loop
+ rm -f $log_img
+ fi
+ _destroy_loop_device $data_loop
+ rm -f $data_img
+}
+
+# Verify both metadump formats if possible
+_xfs_verify_metadumps()
+{
+ _xfs_verify_metadump_v1 "$@"
+
+ if [[ $MAX_XFS_METADUMP_FORMAT == 2 ]]; then
+ _xfs_verify_metadump_v2 "$@"
+ fi
+}
case $FSTYP in
xfs)
- local scratch_log="none"
- local scratch_rt="none"
- [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
- scratch_log="$SCRATCH_LOGDEV"
-
- [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ] && \
- scratch_rt="$SCRATCH_RTDEV"
-
- _check_xfs_filesystem $device $scratch_log $scratch_rt
+ _check_xfs_scratch_fs $device
;;
udf)
_check_udf_filesystem $device $udf_fsize
return $?
}
+_check_xfs_scratch_fs()
+{
+ local device="${1:-$SCRATCH_DEV}"
+ local scratch_log="none"
+ local scratch_rt="none"
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+ scratch_log="$SCRATCH_LOGDEV"
+
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ] && \
+ scratch_rt="$SCRATCH_RTDEV"
+
+ _check_xfs_filesystem $device $scratch_log $scratch_rt
+}
+
# modeled after _scratch_xfs_repair
_test_xfs_repair()
{
{
cd /
_scratch_unmount > /dev/null 2>&1
- [[ -n $logdev && $logdev != "none" && $logdev != $SCRATCH_LOGDEV ]] && \
- _destroy_loop_device $logdev
- [[ -n $datadev ]] && _destroy_loop_device $datadev
- rm -rf $tmp.* $testdir $metadump_file $TEST_DIR/data-image \
- $TEST_DIR/log-image
+ _xfs_cleanup_verify_metadump
+ rm -rf $tmp.* $testdir
}
# Import common functions.
. ./common/filter
. ./common/reflink
+. ./common/metadump
# real QA test starts here
_supported_fs xfs
_require_command "$XFS_MDRESTORE_PROG" "xfs_mdrestore"
_require_loop
_require_scratch_reflink
-
-metadump_file=$TEST_DIR/${seq}_metadump
-
-verify_metadump_v1()
-{
- local max_version=$1
- local version=""
-
- if [[ $max_version == 2 ]]; then
- version="-v 1"
- fi
-
- _scratch_xfs_metadump $metadump_file $version
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV="" \
- _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- SCRATCH_DEV=$datadev _scratch_mount
- SCRATCH_DEV=$datadev _scratch_unmount
-
- logdev=$SCRATCH_LOGDEV
- [[ -z $logdev ]] && logdev=none
- _check_xfs_filesystem $datadev $logdev none
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
-
-verify_metadump_v2()
-{
- version="-v 2"
-
- _scratch_xfs_metadump $metadump_file $version
-
- # Metadump v2 files can contain contents dumped from an external log
- # device. Use a temporary file to hold the log device contents restored
- # from such a metadump file.
- slogdev=""
- if [[ -n $SCRATCH_LOGDEV ]]; then
- slogdev=$TEST_DIR/log-image
- fi
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV=$slogdev \
- _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- logdev=${SCRATCH_LOGDEV}
- if [[ -s $TEST_DIR/log-image ]]; then
- logdev=$(_create_loop_device $TEST_DIR/log-image)
- fi
-
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_mount
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_unmount
-
- [[ -z $logdev ]] && logdev=none
- _check_xfs_filesystem $datadev $logdev none
-
- if [[ -s $TEST_DIR/log-image ]]; then
- _destroy_loop_device $logdev
- logdev=""
- rm -f $TEST_DIR/log-image
- fi
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
+_xfs_setup_verify_metadump
_scratch_mkfs >/dev/null 2>&1
-
-max_md_version=$(_xfs_metadump_max_version)
-
_scratch_mount
testdir=$SCRATCH_MNT/test-$seq
_scratch_unmount
echo "Create metadump file, restore it and check restored fs"
-
-verify_metadump_v1 $max_md_version
-
-if [[ $max_md_version == 2 ]]; then
- verify_metadump_v2
-fi
+_xfs_verify_metadumps
# success, all done
status=0
_cleanup()
{
cd /
- _scratch_unmount > /dev/null 2>&1
- [[ -n $logdev && $logdev != "none" && $logdev != $SCRATCH_LOGDEV ]] && \
- _destroy_loop_device $logdev
- [[ -n $datadev ]] && _destroy_loop_device $datadev
- rm -rf $tmp.* $testdir $metadump_file $TEST_DIR/image \
- $TEST_DIR/log-image
+ _xfs_cleanup_verify_metadump
+ rm -rf $tmp.* $testdir
}
# Import common functions.
. ./common/filter
+. ./common/metadump
# real QA test starts here
_supported_fs xfs
_require_loop
_require_xfs_scratch_rmapbt
_require_xfs_io_command "fpunch"
-
-metadump_file=$TEST_DIR/${seq}_metadump
-
-verify_metadump_v1()
-{
- local max_version=$1
- local version=""
-
- if [[ $max_version == 2 ]]; then
- version="-v 1"
- fi
-
- _scratch_xfs_metadump $metadump_file $version
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV="" \
- _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- SCRATCH_DEV=$datadev _scratch_mount
- SCRATCH_DEV=$datadev _scratch_unmount
-
- logdev=$SCRATCH_LOGDEV
- [[ -z $logdev ]] && logdev=none
- _check_xfs_filesystem $datadev $logdev none
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
-
-verify_metadump_v2()
-{
- version="-v 2"
-
- _scratch_xfs_metadump $metadump_file $version
-
- # Metadump v2 files can contain contents dumped from an external log
- # device. Use a temporary file to hold the log device contents restored
- # from such a metadump file.
- slogdev=""
- if [[ -n $SCRATCH_LOGDEV ]]; then
- slogdev=$TEST_DIR/log-image
- fi
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV=$slogdev \
- _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- logdev=${SCRATCH_LOGDEV}
- if [[ -s $TEST_DIR/log-image ]]; then
- logdev=$(_create_loop_device $TEST_DIR/log-image)
- fi
-
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_mount
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_unmount
-
- [[ -z $logdev ]] && logdev=none
- _check_xfs_filesystem $datadev $logdev none
-
- if [[ -s $TEST_DIR/log-image ]]; then
- _destroy_loop_device $logdev
- logdev=""
- rm -f $TEST_DIR/log-image
- fi
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
+_xfs_setup_verify_metadump
_scratch_mkfs >/dev/null 2>&1
-
-max_md_version=$(_xfs_metadump_max_version)
-
_scratch_mount
testdir=$SCRATCH_MNT/test-$seq
_scratch_unmount
echo "Create metadump file, restore it and check restored fs"
-
-verify_metadump_v1 $max_md_version
-
-if [[ $max_md_version == 2 ]]; then
- verify_metadump_v2
-fi
+_xfs_verify_metadumps
# success, all done
status=0
cd /
rm -f $tmp.*
rm -rf "${OUTPUT_DIR}"
- rm -f "${METADUMP_FILE}"
- [[ -n $logdev && $logdev != $SCRATCH_LOGDEV ]] && \
- _destroy_loop_device $logdev
- [[ -n $datadev ]] && _destroy_loop_device $datadev
+ _xfs_cleanup_verify_metadump
}
# Import common functions.
. ./common/filter
+. ./common/metadump
_require_command "$XFS_MDRESTORE_PROG" "xfs_mdrestore"
_require_test
_require_scratch
+_xfs_setup_verify_metadump
# real QA test starts here
OUTPUT_DIR="${SCRATCH_MNT}/test_${seq}"
-METADUMP_FILE="${TEST_DIR}/${seq}_metadump"
ORPHANAGE="lost+found"
_supported_fs xfs
touch $(printf "$@")
}
-verify_metadump_v1()
-{
- local max_version=$1
- local version=""
-
- if [[ $max_version == 2 ]]; then
- version="-v 1"
- fi
-
- _scratch_xfs_metadump $METADUMP_FILE $version
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV="" \
- _scratch_xfs_mdrestore $METADUMP_FILE
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- SCRATCH_DEV=$datadev _scratch_mount
-
+extra_test() {
cd "${SCRATCH_MNT}"
# Get a listing of all the files after obfuscation
ls -R | od -c >> $seqres.full
cd /
-
- SCRATCH_DEV=$datadev _scratch_unmount
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
-
-verify_metadump_v2()
-{
- version="-v 2"
-
- _scratch_xfs_metadump $METADUMP_FILE $version
-
- # Metadump v2 files can contain contents dumped from an external log
- # device. Use a temporary file to hold the log device contents restored
- # from such a metadump file.
- slogdev=""
- if [[ -n $SCRATCH_LOGDEV ]]; then
- slogdev=$TEST_DIR/log-image
- fi
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV=$slogdev \
- _scratch_xfs_mdrestore $METADUMP_FILE
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- logdev=${SCRATCH_LOGDEV}
- if [[ -s $TEST_DIR/log-image ]]; then
- logdev=$(_create_loop_device $TEST_DIR/log-image)
- fi
-
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_mount
-
- cd "${SCRATCH_MNT}"
-
- # Get a listing of all the files after obfuscation
- echo "Metadump v2" >> $seqres.full
- ls -R >> $seqres.full
- ls -R | od -c >> $seqres.full
-
- cd /
-
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_unmount
-
- if [[ -s $TEST_DIR/log-image ]]; then
- _destroy_loop_device $logdev
- logdev=""
- rm -f $TEST_DIR/log-image
- fi
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
}
echo "Disciplyne of silence is goed."
_scratch_unmount
-max_md_version=$(_xfs_metadump_max_version)
-
-verify_metadump_v1 $max_md_version
-
-if [[ $max_md_version == 2 ]]; then
- verify_metadump_v2
-fi
+_xfs_verify_metadumps '' extra_test
# Finally, re-make the filesystem since to ensure we don't
# leave a directory with duplicate entries lying around.
. ./common/preamble
_begin_fstest auto repair metadump
+# Override the default cleanup function.
+_cleanup()
+{
+ cd /
+ rm -r -f $tmp.*
+ _xfs_cleanup_verify_metadump
+}
+
# Import common functions.
. ./common/filter
+. ./common/metadump
_supported_fs xfs
_require_command "$XFS_MDRESTORE_PROG" "xfs_mdrestore"
+_xfs_setup_verify_metadump
# real QA test starts here
_require_scratch
# Yes they can! Now...
# Can xfs_metadump cope with this monster?
-max_md_version=$(_xfs_metadump_max_version)
-
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $tmp.metadump -a -o $version || \
- _fail "xfs_metadump failed"
-
- slogdev=$SCRATCH_LOGDEV
- if [[ -z $version || $version == "-v 1" ]]; then
- slogdev=""
- fi
- SCRATCH_DEV=$tmp.img SCRATCH_LOGDEV=$slogdev _scratch_xfs_mdrestore \
- $tmp.metadump || _fail "xfs_mdrestore failed"
- SCRATCH_DEV=$tmp.img _scratch_xfs_repair -f &>> $seqres.full || \
- _fail "xfs_repair of metadump failed"
-done
+_xfs_verify_metadumps '-a -o'
# Yes it can; success, all done
status=0
_cleanup()
{
cd /
- rm -f "$tmp".* $metadump_file $metadump_img
+ rm -f "$tmp".*
+ _xfs_cleanup_verify_metadump
}
# Import common functions.
. ./common/filter
+. ./common/metadump
# real QA test starts here
_supported_fs xfs
_require_command "$XFS_MDRESTORE_PROG" "xfs_mdrestore"
_require_scratch
+_xfs_setup_verify_metadump
rm -f "$seqres.full"
_scratch_mkfs -b size=1k -n size=64k > "$seqres.full" 2>&1
_scratch_mount >> "$seqres.full" 2>&1
-metadump_file="$TEST_DIR/meta-$seq"
-metadump_img="$TEST_DIR/img-$seq"
-rm -f $metadump_file $metadump_img
testdir="$SCRATCH_MNT/test-$seq"
max_fname_len=255
blksz=$(_get_block_size $SCRATCH_MNT)
test -n "$extlen" || _notrun "could not create dir extent > 1000 blocks"
echo "Try to metadump, restore and check restored metadump image"
-max_md_version=$(_xfs_metadump_max_version)
-
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $metadump_file -a -o -w $version
-
- slogdev=$SCRATCH_LOGDEV
- if [[ -z $version || $version == "-v 1" ]]; then
- slogdev=""
- fi
-
- SCRATCH_DEV=$metadump_img SCRATCH_LOGDEV=$slogdev \
- _scratch_xfs_mdrestore $metadump_file
-
- SCRATCH_DEV=$metadump_img _scratch_xfs_repair -n &>> $seqres.full || \
- echo "xfs_repair on restored fs returned $?"
-done
+_xfs_verify_metadumps '-a -o -w'
# success, all done
status=0
{
cd /
rm -rf $tmp.* $testdir
+ _xfs_cleanup_verify_metadump
}
# Import common functions.
. ./common/filter
. ./common/populate
+. ./common/metadump
testdir=$TEST_DIR/test-$seq
_require_populate_commands
_xfs_skip_online_rebuild
_xfs_skip_offline_rebuild
+_xfs_setup_verify_metadump
echo "Format and populate"
_scratch_populate_cached nofill > $seqres.full 2>&1
metadump_file=$testdir/scratch.md
copy_file=$testdir/copy.img
-check_restored_metadump_image()
-{
- local image=$1
-
- loop_dev=$(_create_loop_device $image)
- SCRATCH_DEV=$loop_dev _scratch_mount
- SCRATCH_DEV=$loop_dev _check_scratch_fs
- SCRATCH_DEV=$loop_dev _scratch_unmount
- _destroy_loop_device $loop_dev
-}
-
-max_md_version=$(_xfs_metadump_max_version)
-
echo "metadump and mdrestore"
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $metadump_file -a -o $version >> $seqres.full
- SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file
- check_restored_metadump_image $TEST_DIR/image
-done
+_xfs_verify_metadumps '-a -o'
echo "metadump a and mdrestore"
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $metadump_file -a $version >> $seqres.full
- SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file
- check_restored_metadump_image $TEST_DIR/image
-done
+_xfs_verify_metadumps '-a'
echo "metadump g and mdrestore"
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $metadump_file -g $version >> $seqres.full
- SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file
- check_restored_metadump_image $TEST_DIR/image
-done
+_xfs_verify_metadumps '-g' >> $seqres.full
echo "metadump ag and mdrestore"
-for md_version in $(seq 1 $max_md_version); do
- version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v $md_version"
- fi
-
- _scratch_xfs_metadump $metadump_file -a -g $version >> $seqres.full
- SCRATCH_DEV=$TEST_DIR/image _scratch_xfs_mdrestore $metadump_file
- check_restored_metadump_image $TEST_DIR/image
-done
+_xfs_verify_metadumps '-a -g' >> $seqres.full
echo copy
$XFS_COPY_PROG $SCRATCH_DEV $copy_file >> $seqres.full
{
cd /
rm -r -f $tmp.*
- _scratch_unmount > /dev/null 2>&1
- [[ -n $logdev && $logdev != "none" && $logdev != $SCRATCH_LOGDEV ]] && \
- _destroy_loop_device $logdev
- [[ -n $datadev ]] && _destroy_loop_device $datadev
- rm -r -f $metadump_file $TEST_DIR/data-image \
- $TEST_DIR/log-image
+ _xfs_cleanup_verify_metadump
}
# Import common functions.
. ./common/dmflakey
. ./common/inject
+. ./common/metadump
# real QA test starts here
_supported_fs xfs
_require_dm_target flakey
_require_xfs_io_command "pwrite"
_require_test_program "punch-alternating"
+_xfs_setup_verify_metadump
-metadump_file=${TEST_DIR}/${seq}.md
testfile=${SCRATCH_MNT}/testfile
echo "Format filesystem on scratch device"
_scratch_mkfs >> $seqres.full 2>&1
-max_md_version=$(_xfs_metadump_max_version)
-
external_log=0
if [[ $USE_EXTERNAL = yes && -n "$SCRATCH_LOGDEV" ]]; then
external_log=1
fi
-if [[ $max_md_version == 1 && $external_log == 1 ]]; then
+if [[ $MAX_XFS_METADUMP_FORMAT == 1 && $external_log == 1 ]]; then
_notrun "metadump v1 does not support external log device"
fi
-verify_metadump_v1()
-{
- local version=""
- if [[ $max_md_version == 2 ]]; then
- version="-v 1"
- fi
-
- _scratch_xfs_metadump $metadump_file -a -o $version
-
- SCRATCH_DEV=$TEST_DIR/data-image _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- SCRATCH_DEV=$datadev _scratch_mount
- SCRATCH_DEV=$datadev _check_scratch_fs
- SCRATCH_DEV=$datadev _scratch_unmount
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
-
-verify_metadump_v2()
-{
- local version="-v 2"
-
- _scratch_xfs_metadump $metadump_file -a -o $version
-
- # Metadump v2 files can contain contents dumped from an external log
- # device. Use a temporary file to hold the log device contents restored
- # from such a metadump file.
- slogdev=""
- if [[ -n $SCRATCH_LOGDEV ]]; then
- slogdev=$TEST_DIR/log-image
- fi
-
- SCRATCH_DEV=$TEST_DIR/data-image SCRATCH_LOGDEV=$slogdev \
- _scratch_xfs_mdrestore $metadump_file
-
- datadev=$(_create_loop_device $TEST_DIR/data-image)
-
- logdev=""
- if [[ -s $slogdev ]]; then
- logdev=$(_create_loop_device $slogdev)
- fi
-
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_mount
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _check_scratch_fs
- SCRATCH_DEV=$datadev SCRATCH_LOGDEV=$logdev _scratch_unmount
-
- if [[ -s $logdev ]]; then
- _destroy_loop_device $logdev
- logdev=""
- rm -f $slogdev
- fi
-
- _destroy_loop_device $datadev
- datadev=""
- rm -f $TEST_DIR/data-image
-}
-
echo "Initialize and mount filesystem on flakey device"
_init_flakey
_load_flakey_table $FLAKEY_ALLOW_WRITES
_print_logstate
echo "Create metadump file, restore it and check restored fs"
-
-if [[ $external_log == 0 ]]; then
- verify_metadump_v1 $max_md_version
-fi
-
-if [[ $max_md_version == 2 ]]; then
- verify_metadump_v2
-fi
+_xfs_verify_metadumps '-a -o'
# Mount the fs to replay the contents from the dirty log.
_scratch_mount