Commit 53147e0d authored by Maciej Wawryk's avatar Maciej Wawryk Committed by Tomasz Zawadzki
Browse files

test: fix issue with changing device names in waitforblk function



During test before upgrading our vm's to Fedora31 there were issue with failing
nvmf test on function waitforblk. In some cases hardcoded nvme0n1 name was not
found in system. Here is fix that change searching by name to searching by nvme
serial.

Signed-off-by: default avatarMaciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: Ic5ee70804652a057fa26b8cc004b5227262d2122
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478471


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell@intel.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
parent 9c659fb1
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -717,6 +717,45 @@ function discover_bdevs()
	rm -f /var/run/spdk_bdev0
}

function waitforserial()
{
	local i=0
	local nvme_device_counter=1
	if [[ -n "$2" ]]; then
		nvme_device_counter=$2
	fi

	while [ $(lsblk -l -o NAME,SERIAL | grep -c $1) -lt $nvme_device_counter ]; do
		[ $i -lt 15 ] || break
		i=$((i+1))
		echo "Waiting for devices"
		sleep 1
	done

	if [[ $(lsblk -l -o NAME,SERIAL | grep -c $1) -lt $nvme_device_counter ]]; then
		return 1
	fi

        return 0
}

function waitforserial_disconnect()
{
	local i=0
	while lsblk -o NAME,SERIAL | grep -q -w $1; do
		[ $i -lt 15 ] || break
		i=$((i+1))
		echo "Waiting for disconnect devices"
		sleep 1
	done

	if lsblk -l -o NAME | grep -q -w $1; then
		return 1
	fi

	return 0
}

function waitforblk()
{
	local i=0
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ NVMF_IP_PREFIX="192.168.100"
NVMF_IP_LEAST_ADDR=8
NVMF_TCP_IP_ADDRESS="127.0.0.1"
NVMF_TRANSPORT_OPTS=""
NVMF_SERIAL=SPDK00000000000001

function build_nvmf_app_args()
{
+3 −3
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ $rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 -c 0

bdev="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)"

$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s $NVMF_SERIAL
$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 $bdev
$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT

@@ -32,9 +32,9 @@ fi
set +x
for i in $(seq 1 $num_iterations); do
	nvme connect -t $TEST_TRANSPORT -n "nqn.2016-06.io.spdk:cnode1" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" $IO_QUEUES
	waitforblk "nvme0n1"
	waitforserial "$NVMF_SERIAL"
	nvme disconnect -n "nqn.2016-06.io.spdk:cnode1"
	waitforblk_disconnect "nvme0n1"
	waitforserial_disconnect "$NVMF_SERIAL"
done
set -x

+14 −15
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ nvmftestinit

function nvmf_filesystem_create {
	fstype=$1
	nvme_name=$2

	if [ $fstype = ext4 ]; then
		force=-F
@@ -21,9 +22,9 @@ function nvmf_filesystem_create {
		force=-f
	fi

	mkfs.${fstype} $force /dev/nvme0n1p1
	mkfs.${fstype} $force /dev/${nvme_name}p1

	mount /dev/nvme0n1p1 /mnt/device
	mount /dev/${nvme_name}p1 /mnt/device
	touch /mnt/device/aaa
	sync
	rm /mnt/device/aaa
@@ -38,34 +39,32 @@ function nvmf_filesystem_part {

	$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 -c $incapsule
	$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc1
	$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
	$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s $NVMF_SERIAL
	$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Malloc1
	$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT

	nvme connect -t $TEST_TRANSPORT -n "nqn.2016-06.io.spdk:cnode1" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT"

	# TODO: fix this to wait for the proper NVMe device.
	# if we are hosting the local filesystem on an NVMe drive, this test will fail
	# because it relies on the no other NVMe drives being present in the system.
	waitforblk "nvme0n1"
	waitforserial "$NVMF_SERIAL"
	nvme_name=$(lsblk -l -o NAME,SERIAL | grep -oP "([\w]*)(?=\s+${NVMF_SERIAL})")

	mkdir -p /mnt/device

	parted -s /dev/nvme0n1 mklabel msdos  mkpart primary '0%' '100%'
	parted -s /dev/${nvme_name} mklabel msdos  mkpart primary '0%' '100%'
	partprobe
	sleep 1

	if [ $incapsule -eq 0 ]; then
		run_test "filesystem_ext4" nvmf_filesystem_create "ext4"
		run_test "filesystem_btrfs" nvmf_filesystem_create "btrfs"
		run_test "filesystem_xfs" nvmf_filesystem_create "xfs"
		run_test "filesystem_ext4" nvmf_filesystem_create "ext4" ${nvme_name}
		run_test "filesystem_btrfs" nvmf_filesystem_create "btrfs" ${nvme_name}
		run_test "filesystem_xfs" nvmf_filesystem_create "xfs" ${nvme_name}
	else
		run_test "filesystem_incapsule_ext4" nvmf_filesystem_create "ext4"
		run_test "filesystem_incapsule_btrfs" nvmf_filesystem_create "btrfs"
		run_test "filesystem_incapsule_xfs" nvmf_filesystem_create "xfs"
		run_test "filesystem_incapsule_ext4" nvmf_filesystem_create "ext4" ${nvme_name}
		run_test "filesystem_incapsule_btrfs" nvmf_filesystem_create "btrfs" ${nvme_name}
		run_test "filesystem_incapsule_xfs" nvmf_filesystem_create "xfs" ${nvme_name}
	fi

	parted -s /dev/nvme0n1 rm 1
	parted -s /dev/${nvme_name} rm 1

	sync
	nvme disconnect -n "nqn.2016-06.io.spdk:cnode1" || true
+2 −4
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ raid_malloc_bdevs="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_
raid_malloc_bdevs+="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)"
$rpc_py bdev_raid_create -n raid0 -z 64 -r 0 -b "$raid_malloc_bdevs"

$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s $NVMF_SERIAL
for malloc_bdev in $malloc_bdevs; do
	$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 "$malloc_bdev"
done
@@ -33,9 +33,7 @@ $rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 raid0

nvme connect -t $TEST_TRANSPORT -n "nqn.2016-06.io.spdk:cnode1" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT"

waitforblk "nvme0n1"
waitforblk "nvme0n2"
waitforblk "nvme0n3"
waitforserial $NVMF_SERIAL 3

$rootdir/scripts/fio.py -p nvmf -i 4096 -d 1 -t write -r 1 -v
$rootdir/scripts/fio.py -p nvmf -i 4096 -d 1 -t randwrite -r 1 -v
Loading