Skip to contentSkip to conversation

btrfs-progs: test for restoring multiple devices fs into a single device

PATCH Applied [email protected] 4 participants 4 messages May 17, 2017 – May 29, 2017 Btrfs file system

lore
Share & tools
lore
#0 lore raw

PATCH 2/2 btrfs-progs: test for restoring multiple devices fs into a single device

From: Filipe Manana <[email protected]>

Test that we are able to create an image from a multiple devices fs, that we are able to restore that image into a single device and finally that we are able to mount it.

---
 tests/misc-tests/020-image-multi-devices/test.sh | 49 ++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100755 tests/misc-tests/020-image-multi-devices/test.sh
tests/misc-tests/020-image-multi-devices/test.sh new file +49 -0
new file mode 100755
index 00000000..d4a5f006
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Test btrfs-image with multiple devices filesystem and verify that restoring
+# the created image works against a single device.
+
+source $TOP/tests/common
+
+check_prereq btrfs-image
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+
+rm -f dev1 dev2
+run_check truncate -s 2G dev1
+run_check truncate -s 2G dev2
+
+loop1=$(run_check_stdout $SUDO_HELPER losetup --find --show dev1)
+loop2=$(run_check_stdout $SUDO_HELPER losetup --find --show dev2)
+
+# Create the test file system.
+
+run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $loop1 $loop2
+run_check $SUDO_HELPER mount $loop1 $TEST_MNT
+run_check $SUDO_HELPER dd bs=1M count=1 if=/dev/zero of=$TEST_MNT/foobar
+orig_md5=$(run_check_stdout md5sum $TEST_MNT/foobar | cut -d ' ' -f 1)
+run_check $SUDO_HELPER umount $TEST_MNT
+
+# Create the image to restore later.
+run_check $SUDO_HELPER $TOP/btrfs-image $loop1 $IMAGE
+
+# Wipe out the filesystem from the devices, restore the image on a single
+# device, check everything works and file foobar is there and with 1Mb of
+# zeroes.
+run_check $SUDO_HELPER wipefs -a $loop1
+run_check $SUDO_HELPER wipefs -a $loop2
+
+run_check $SUDO_HELPER $TOP/btrfs-image -r $IMAGE $loop1
+
+run_check $SUDO_HELPER mount $loop1 $TEST_MNT
+new_md5=$(run_check_stdout md5sum $TEST_MNT/foobar | cut -d ' ' -f 1)
+run_check $SUDO_HELPER umount $TEST_MNT
+
+# Cleanup loop devices.
+run_check $SUDO_HELPER losetup -d $loop1
+run_check $SUDO_HELPER losetup -d $loop2
+rm -f dev1 dev2
+
+# Compare the file digests.
+[ $orig_md5 == $new_md5 ] || _fail "File digests do not match"
Signature · 1 line
2.11.0
#2 lore raw
In reply to [email protected]

Looks fine, just couple of minor feedback.

Quoted 1 line

+run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $loop1 $loop2

Please add quotation around variable in the script, as suggested in tests/README.md 'Coding style, best practices' section. This section is added recently, we are updating older scripts.

tests/misc-tests/020-image-multi-devices/test.sh line 49

Quoted 8 lines
tests/misc-tests/020-image-multi-devices/test.sh new file +8 -0
+
+# Cleanup loop devices.
+run_check $SUDO_HELPER losetup -d $loop1
+run_check $SUDO_HELPER losetup -d $loop2
+rm -f dev1 dev2
+
+# Compare the file digests.
+[ $orig_md5 == $new_md5 ] || _fail "File digests do not match"

"Cleanup loop devices" can be done after comparing file integrity? This way, if integrity fails, the setup will be there to debug further. thanks.

Signature · 3 lines
----
Cheers,
Lakshmipathi.G