]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
test(STORAGE): add subtests for degraded RAID
authorJo Zzsi <jozzsicsataban@gmail.com>
Sat, 16 Nov 2024 20:20:04 +0000 (15:20 -0500)
committerLaszlo <laszlo.gombos@gmail.com>
Sat, 16 Nov 2024 23:12:58 +0000 (18:12 -0500)
Switch to RAID-1 from RAID-0 to be able to degrade the RAID.

test/TEST-20-STORAGE/create-root.sh
test/TEST-20-STORAGE/test.sh

index cd2dfa8113edce5f7c6a5bcce4f3bca372bceb4e..02a3958df1f256d3552583d66ecb3329afa545bd 100755 (executable)
@@ -7,17 +7,17 @@ set -e
 . /env
 
 if [ "$TEST_FSTYPE" = "zfs" ]; then
-    zpool create dracut /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
+    zpool create dracut mirror /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
     zfs create dracut/root
 elif [ "$TEST_FSTYPE" = "btrfs" ]; then
-    mkfs.btrfs -q -draid0 -mraid0 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
+    mkfs.btrfs -q -draid1 -mraid1 -L root /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
     udevadm settle
     btrfs device scan
 else
     # storage layers (if available)
     # mdadm (optional) --> crypt (optional) --> lvm --> TEST_FSTYPE (e.g. ext4)
     if ! grep -qF 'rd.md=0' /proc/cmdline && command -v mdadm > /dev/null; then
-        mdadm --create /dev/md0 --run --auto=yes --level=0 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
+        mdadm --create /dev/md0 --run --auto=yes --level=1 --metadata=0.90 --raid-devices=2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_disk[12]
         # wait for the array to finish initializing, otherwise this sometimes fails randomly.
         mdadm -W /dev/md0 || :
     fi
index bcb31cde75284dc4fcd44ece8ae49f99b77ca972..2cabeaf92c7d12d90dce3ffb21d8eca84339f05a 100755 (executable)
@@ -33,8 +33,13 @@ client_run() {
     declare -a disk_args=()
     declare -i disk_index=0
     qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
+
     qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-1.img" disk1
-    qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-2.img" disk2
+
+    if ! grep -qF 'degraded' "$test_name"; then
+        # only add disk2 if RAID is NOT degraded
+        qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-2.img" disk2
+    fi
 
     test_marker_reset
     "$testdir"/run-qemu \
@@ -53,11 +58,13 @@ test_run() {
     # ignore crypttab with rd.luks.crypttab=0
     if [ -n "$HAVE_RAID" ]; then
         client_run "raid" "raid" "rd.luks.crypttab=0" || return 1
+        client_run "degraded raid" "raid" "rd.luks.crypttab=0" || return 1
     fi
 
     # for encrypted test run - use raid-crypt.img drives instead of raid.img drives
     if [ -n "$HAVE_CRYPT" ]; then
-        client_run "raid-crypt" "raid-crypt" " " || return 1
+        client_run "raid crypt" "raid-crypt" " " || return 1
+        client_run "degraded raid crypt" "raid-crypt" " " || return 1
     fi
 }