btrfs-progs: tests: Move extract_image out of check_all_images for common use

Move code for extract image file to a function from check_all_images()
for common use, so caller can use this function to extrace single
image file.

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
[minor reformatting and updates]
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Zhao Lei 2015-09-23 15:19:04 +08:00 committed by David Sterba
parent 26bd912061
commit 5627eee02b

View File

@ -62,51 +62,65 @@ check_image()
run_check $TOP/btrfs check $image
}
# Process all image dumps in a given directory,
# Extract a usable image from packed formats
# - raw btrfs filesystem images, suffix .raw
# - dtto compressed by XZ, suffix .raw.xz
# - meta-dump images with suffix .img
# - dtto compressed by XZ, suffix .img.xz
extract_image()
{
local image
local cleanme
image="$1"
case "$image" in
*.img)
rm -f $image.restored
: ;;
*.img.xz)
xz --decompress --keep "$image" || \
_fail "failed to decompress image $image" >&2
image=${image%%.xz}
rm -f $image.restored
cleanme=$image
;;
*.raw)
cp --sparse=auto $image $image.restored
;;
*.raw.xz)
xz --decompress --keep "$image" || \
_fail "failed to decompress image $image" >&2
image=${image%%.xz}
mv "$image" "$image".restored
;;
esac
if ! [ -f $image.restored ]; then
echo "restoring image $(basename $image)" >> $RESULTS
$TOP/btrfs-image -r $image $image.restored || \
_fail "failed to restore image $image" >&2
fi
[ -f "$cleanme" ] && rm -f "$cleanme"
echo "$image.restored"
}
# Process all image dumps in a given directory
check_all_images()
{
dir=$1
local dir
local extracted
dir="$1"
for image in $(find $dir \( -iname '*.img' -o \
-iname '*.img.xz' -o \
-iname '*.raw' -o \
-iname '*.raw.xz' \) | sort)
do
cleanme=
case "$image" in
*.img)
rm -f $image.restored
: ;;
*.img.xz)
xz --decompress --keep "$image" || \
_fail "failed to decompress image $image"
image=${image%%.xz}
rm -f $image.restored
cleanme=$image
;;
*.raw)
cp --sparse=auto $image $image.restored
;;
*.raw.xz)
xz --decompress --keep "$image" || \
_fail "failed to decompress image $image"
image=${image%%.xz}
mv "$image" "$image".restored
;;
esac
if ! [ -f $image.restored ]; then
echo "restoring image $(basename $image)" >> $RESULTS
$TOP/btrfs-image -r $image $image.restored || \
_fail "failed to restore image $image"
fi
check_image $image.restored
rm -f $image.restored $cleanme
extracted=$(extract_image "$image")
check_image "$extracted"
rm -f "$extracted"
done
}