test/nvme/hotplug: create QEMU host drives at startup

We used to create them at runtime with QEMU monitor, but
they can be created just once at startup. While here, start
using loops in bash to create/modify 4 equal drives.

Change-Id: Ie73ba3496a1cfb5d5a173118d331d90eee713270
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2144
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Darek Stojaczyk 2020-04-30 13:10:28 +02:00 committed by Tomasz Zawadzki
parent 85d0f9a83a
commit da2aa2aca0

View File

@ -33,42 +33,24 @@ function wait_for_devices_ready() {
done done
} }
function devices_initialization() {
timing_enter devices_initialization
dd if=/dev/zero of="$SPDK_TEST_STORAGE/test0" bs=1M count=1024
dd if=/dev/zero of="$SPDK_TEST_STORAGE/test1" bs=1M count=1024
dd if=/dev/zero of="$SPDK_TEST_STORAGE/test2" bs=1M count=1024
dd if=/dev/zero of="$SPDK_TEST_STORAGE/test3" bs=1M count=1024
monitor_cmd "drive_add 0 file=$SPDK_TEST_STORAGE/test0,format=raw,id=drive0,if=none"
monitor_cmd "drive_add 1 file=$SPDK_TEST_STORAGE/test1,format=raw,id=drive1,if=none"
monitor_cmd "drive_add 2 file=$SPDK_TEST_STORAGE/test2,format=raw,id=drive2,if=none"
monitor_cmd "drive_add 3 file=$SPDK_TEST_STORAGE/test3,format=raw,id=drive3,if=none"
timing_exit devices_initialization
}
function insert_devices() { function insert_devices() {
monitor_cmd "device_add nvme,drive=drive0,id=nvme0,serial=nvme0" for i in {0..3}; do
monitor_cmd "device_add nvme,drive=drive1,id=nvme1,serial=nvme1" monitor_cmd "device_add nvme,drive=drive$i,id=nvme$i,serial=nvme$i"
monitor_cmd "device_add nvme,drive=drive2,id=nvme2,serial=nvme2" done
monitor_cmd "device_add nvme,drive=drive3,id=nvme3,serial=nvme3"
wait_for_devices_ready wait_for_devices_ready
ssh_vm "scripts/setup.sh" ssh_vm "scripts/setup.sh"
} }
function remove_devices() { function remove_devices() {
monitor_cmd "device_del nvme0" for i in {0..3}; do
monitor_cmd "device_del nvme1" monitor_cmd "device_del nvme$i"
monitor_cmd "device_del nvme2" done
monitor_cmd "device_del nvme3"
} }
function devices_delete() { function devices_delete() {
timing_enter devices_delete for i in {0..3}; do
rm "$SPDK_TEST_STORAGE/test0" rm "$SPDK_TEST_STORAGE/nvme$i.img"
rm "$SPDK_TEST_STORAGE/test1" done
rm "$SPDK_TEST_STORAGE/test2"
rm "$SPDK_TEST_STORAGE/test3"
timing_exit devices_delete
} }
password=$1 password=$1
@ -85,6 +67,10 @@ timing_enter start_qemu
qemu-img create -b "$base_img" -f qcow2 "$test_img" qemu-img create -b "$base_img" -f qcow2 "$test_img"
for i in {0..3}; do
dd if=/dev/zero of="$SPDK_TEST_STORAGE/nvme$i.img" bs=1M count=1024
done
qemu-system-x86_64 \ qemu-system-x86_64 \
-daemonize -display none -m 8192 \ -daemonize -display none -m 8192 \
-pidfile "$qemu_pidfile" \ -pidfile "$qemu_pidfile" \
@ -95,7 +81,11 @@ qemu-system-x86_64 \
-smp cores=16,sockets=1 \ -smp cores=16,sockets=1 \
--enable-kvm \ --enable-kvm \
-chardev socket,id=mon0,host=localhost,port=4444,server,nowait \ -chardev socket,id=mon0,host=localhost,port=4444,server,nowait \
-mon chardev=mon0,mode=readline -mon chardev=mon0,mode=readline \
-drive format=raw,file="$SPDK_TEST_STORAGE/nvme0.img",if=none,id=drive0 \
-drive format=raw,file="$SPDK_TEST_STORAGE/nvme1.img",if=none,id=drive1 \
-drive format=raw,file="$SPDK_TEST_STORAGE/nvme2.img",if=none,id=drive2 \
-drive format=raw,file="$SPDK_TEST_STORAGE/nvme3.img",if=none,id=drive3
timing_exit start_qemu timing_exit start_qemu
@ -113,7 +103,6 @@ files_to_copy+="examples/nvme/hotplug/hotplug "
) | (ssh_vm "tar -xf -") ) | (ssh_vm "tar -xf -")
timing_exit copy_repo timing_exit copy_repo
devices_initialization
insert_devices insert_devices
timing_enter hotplug_test timing_enter hotplug_test