test_run() {
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu -nic none \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive disk_args "$TESTDIR"/root.btrfs root
"$testdir"/run-qemu \
"${disk_args[@]}" \
# Create the blank file to use as a root filesystem
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.btrfs root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/root.btrfs root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
client_test_start "$test_name"
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
- qemu_add_drive disk_index disk_args "$TESTDIR"/squashfs.img root
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive disk_args "$TESTDIR"/squashfs.img root
test_marker_reset
"$testdir"/run-qemu "${disk_args[@]}" -net none \
test_run() {
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu -nic none \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-1.img" disk1
+ qemu_add_drive disk_args "$TESTDIR/${disk}-1.img" disk1
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
+ qemu_add_drive disk_args "$TESTDIR/${disk}-2.img" disk2
fi
if [ "$TEST_FSTYPE" = "zfs" ]; then
# Create the blank files to use as a root filesystem
declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-1.img" disk1 1
- qemu_add_drive disk_index disk_args "$TESTDIR/${disk}-2.img" disk2 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR/${disk}-1.img" disk1 1
+ qemu_add_drive disk_args "$TESTDIR/${disk}-2.img" disk2 1
"$testdir"/run-qemu \
"${disk_args[@]}" \
client_test_start "$LUKSARGS"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/disk-1.img disk1
- qemu_add_drive disk_index disk_args "$TESTDIR"/disk-2.img disk2
+ qemu_add_drive disk_args "$TESTDIR"/disk-1.img disk1
+ qemu_add_drive disk_args "$TESTDIR"/disk-2.img disk2
"$testdir"/run-qemu \
"${disk_args[@]}" \
# Create the blank files to use as a root filesystem
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/disk-1.img disk1 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/disk-2.img disk2 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/disk-1.img disk1 1
+ qemu_add_drive disk_args "$TESTDIR"/disk-2.img disk2 1
"$testdir"/run-qemu \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_erofs.img root_erofs
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_iso.img root_iso
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root_erofs.img root_erofs
+ qemu_add_drive disk_args "$TESTDIR"/root_iso.img root_iso
"$testdir"/run-qemu \
"${disk_args[@]}" \
# Create the blank file to use as a root filesystem
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/root.img root 1
sfdisk "$TESTDIR"/root.img << EOF
2048,652688
dd if="$TESTDIR"/ext4.img of="$TESTDIR"/root.img bs=512 seek=2048 conv=noerror,notrunc
# erofs drive
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_erofs.img root_erofs 1
+ qemu_add_drive disk_args "$TESTDIR"/root_erofs.img root_erofs 1
# Write the erofs compressed filesystem to the partition
if command -v mkfs.erofs &> /dev/null; then
fi
# iso drive
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_iso.img root_iso 1
+ qemu_add_drive disk_args "$TESTDIR"/root_iso.img root_iso 1
# Write the iso to the partition
if command -v xorriso &> /dev/null; then
#DEBUGFAIL="rd.shell=1 rd.break=pre-mount"
test_run() {
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu \
"${disk_args[@]}" \
-f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/root.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.btrfs root
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_crypt.btrfs root_crypt
- qemu_add_drive disk_index disk_args "$TESTDIR"/usr.btrfs usr
+ qemu_add_drive disk_args "$TESTDIR"/root.btrfs root
+ qemu_add_drive disk_args "$TESTDIR"/root_crypt.btrfs root_crypt
+ qemu_add_drive disk_args "$TESTDIR"/usr.btrfs usr
"$testdir"/run-qemu \
"${disk_args[@]}" \
# Create the blank file to use as a root filesystem
declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.btrfs root 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root_crypt.btrfs root_crypt 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/usr.btrfs usr 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/root.btrfs root 1
+ qemu_add_drive disk_args "$TESTDIR"/root_crypt.btrfs root_crypt 1
+ qemu_add_drive disk_args "$TESTDIR"/usr.btrfs usr 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu \
"${disk_args[@]}" \
-f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/root.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
test_run() {
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu \
"${disk_args[@]}" \
#DEBUGFAIL="rd.shell=1 rd.break=pre-mount"
test_run() {
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
- qemu_add_drive disk_index disk_args "$TESTDIR"/mnt.img mnt
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/mnt.img mnt
# This test should fail if rd.driver.export is not passed at kernel command-line
"$testdir"/run-qemu \
-f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/mnt.img mnt 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/root.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/mnt.img mnt 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
test_run() {
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/root.img root
+ qemu_add_drive disk_args "$TESTDIR"/root.img root
"$testdir"/run-qemu \
-device "virtio-net-pci,netdev=lan0" \
# Start server first
echo "NFS TEST SETUP: Starting DHCP/NFS server"
declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 0 1
+ qemu_add_drive disk_args "$TESTDIR"/server.img root 0 1
"$testdir"/run-qemu \
"${disk_args[@]}" \
# Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker2.img marker2 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/marker2.img marker2 1
"$testdir"/run-qemu \
"${disk_args[@]}" \
echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img serverroot 0 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/singleroot.img singleroot
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
+ qemu_add_drive disk_args "$TESTDIR"/server.img serverroot 0 1
+ qemu_add_drive disk_args "$TESTDIR"/singleroot.img singleroot
+ qemu_add_drive disk_args "$TESTDIR"/raid0-1.img raid0-1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-2.img raid0-2
"$testdir"/run-qemu \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker
test_marker_reset
"$testdir"/run-qemu \
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/singleroot.img singleroot 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/singleroot.img singleroot 1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-1.img raid0-1 1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-2.img raid0-2 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
- # shellcheck disable=SC2034
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/server.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img serverroot 0 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/singleroot.img singleroot
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2
+ qemu_add_drive disk_args "$TESTDIR"/server.img serverroot 0 1
+ qemu_add_drive disk_args "$TESTDIR"/singleroot.img singleroot
+ qemu_add_drive disk_args "$TESTDIR"/raid0-1.img raid0-1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-2.img raid0-2
"$testdir"/run-qemu \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker
test_marker_reset
"$testdir"/run-qemu \
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/singleroot.img singleroot 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-1.img raid0-1 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/raid0-2.img raid0-2 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/singleroot.img singleroot 1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-1.img raid0-1 1
+ qemu_add_drive disk_args "$TESTDIR"/raid0-2.img raid0-2 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/server.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
echo "NBD TEST SETUP: Starting DHCP/NBD server"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/unencrypted.img unencrypted
- qemu_add_drive disk_index disk_args "$TESTDIR"/encrypted.img encrypted
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img serverroot
+ qemu_add_drive disk_args "$TESTDIR"/unencrypted.img unencrypted
+ qemu_add_drive disk_args "$TESTDIR"/encrypted.img encrypted
+ qemu_add_drive disk_args "$TESTDIR"/server.img serverroot
"$testdir"/run-qemu \
"${disk_args[@]}" \
client_test_start "$test_name"
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker
test_marker_reset
"$testdir"/run-qemu \
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/encrypted.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/encrypted.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
-f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/unencrypted.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/unencrypted.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
-f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
- # shellcheck disable=SC2034 # disk_index used in qemu_add_drive
- declare -i disk_index=0
- qemu_add_drive disk_index disk_args "$TESTDIR"/marker.img marker 1
- qemu_add_drive disk_index disk_args "$TESTDIR"/server.img root 1
+ qemu_add_drive disk_args "$TESTDIR"/marker.img marker 1
+ qemu_add_drive disk_args "$TESTDIR"/server.img root 1
# Invoke KVM and/or QEMU to actually create the target filesystem.
"$testdir"/run-qemu \
# generate qemu arguments for named raw disks
#
-# qemu_add_drive <index> <args> <filename> <id-name> [<bootindex>]
+# qemu_add_drive <args> <filename> <id-name> [<bootindex>]
#
-# index: name of the index variable (set to 0 at start)
# args: name of the argument array variable (set to () at start)
# filename: filename of the raw disk image
# id-name: name of the disk in /dev/disk/by-id -> /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_$name
# # EXAMPLES
# ```
# declare -a disk_args=()
-# declare -i disk_index=0
-# qemu_add_drive disk_index disk_args "$TESTDIR"/root.ext3 root 0 1
-# qemu_add_drive disk_index disk_args "$TESTDIR"/client.img client
-# qemu_add_drive disk_index disk_args "$TESTDIR"/iscsidisk2.img iscsidisk2
-# qemu_add_drive disk_index disk_args "$TESTDIR"/iscsidisk3.img iscsidisk3
+# qemu_add_drive disk_args "$TESTDIR"/root.ext3 root 0 1
+# qemu_add_drive disk_args "$TESTDIR"/client.img client
+# qemu_add_drive disk_args "$TESTDIR"/iscsidisk2.img iscsidisk2
+# qemu_add_drive disk_args "$TESTDIR"/iscsidisk3.img iscsidisk3
# qemu "${disk_args[@]}"
# ```
qemu_add_drive() {
- local index=${!1}
# shellcheck disable=SC2178 # args is a nameref to an array
- local -n args=$2
- local file=$3
- local name=$4
- local size=${5:-0}
- local bootindex=${6-}
+ local -n args=$1
+ local file=$2
+ local name=$3
+ local size=${4:-0}
+ local bootindex=${5-}
+
+ local index=0
+ while [[ ${args[*]} == *id=scsi${index}* ]]; do
+ index=$((index + 1))
+ done
if [ "${size}" -ne 0 ]; then
if [[ ${name} =~ "marker" ]]; then
-drive "if=none,format=raw,file=${file},id=drive-data${index}"
-device "scsi-hd,bus=scsi${index}.0,drive=drive-data${index},id=data${index},${bootindex:+bootindex=$bootindex,}serial=${name}"
)
-
- : $(("${1}++"))
}
test_marker_reset() {