linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH blktests 00/11] NVMe Target Passthru Block Tests
@ 2020-08-27 19:49 Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 01/11] common/fio: Remove state file in common helper Logan Gunthorpe
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

From: Logan Gunthorpe <logan.gunthorpe@eideticom.com>

Hi,

Now that the passthru patches are in Linus's tree, I wanted to get
the blktest changes that test them out there for some review.

I know that Sagi has a series in progress to allow for running tests
with other transports. These two patch sets will need to be reconciled
at some point.

This series is based off of the current blktests master and a git repo is
available for this here:

https://github.com/Eideticom/blktests nvmet_passthru

Thanks,

Logan

--

Logan Gunthorpe (11):
  common/fio: Remove state file in common helper
  common/xfs: Create common helper to check for XFS support
  common/xfs: Create common helper to verify block device with xfs
  nvme: Search for specific subsysnqn in _find_nvme_loop_dev
  nvme: Add common helpers for passthru tests
  nvme/033: Simple test to create and connect to a passthru target
  nvme/034: Add test for passthru data verification
  nvme/035: Add test to verify passthru controller with a filesystem
  nvme/036: Add test for testing reset command on nvme-passthru
  nvme/037: Add test which loops passthru connect and disconnect
  nvme/038: Test removal of un-enabled subsystem and ports

 common/fio         |  1 +
 common/rc          |  8 +++++
 common/xfs         | 33 +++++++++++++++++
 tests/nvme/004     |  2 +-
 tests/nvme/005     |  2 +-
 tests/nvme/008     |  2 +-
 tests/nvme/009     |  2 +-
 tests/nvme/010     |  3 +-
 tests/nvme/011     |  3 +-
 tests/nvme/012     | 20 +++--------
 tests/nvme/013     | 20 +++--------
 tests/nvme/014     |  2 +-
 tests/nvme/015     |  2 +-
 tests/nvme/018     |  2 +-
 tests/nvme/019     |  2 +-
 tests/nvme/020     |  2 +-
 tests/nvme/021     |  2 +-
 tests/nvme/022     |  2 +-
 tests/nvme/023     |  2 +-
 tests/nvme/024     |  2 +-
 tests/nvme/025     |  2 +-
 tests/nvme/026     |  2 +-
 tests/nvme/027     |  2 +-
 tests/nvme/028     |  2 +-
 tests/nvme/029     |  2 +-
 tests/nvme/033     | 69 ++++++++++++++++++++++++++++++++++++
 tests/nvme/033.out |  6 ++++
 tests/nvme/034     | 37 +++++++++++++++++++
 tests/nvme/034.out |  2 ++
 tests/nvme/035     | 39 ++++++++++++++++++++
 tests/nvme/035.out |  2 ++
 tests/nvme/036     | 39 ++++++++++++++++++++
 tests/nvme/036.out |  2 ++
 tests/nvme/037     | 36 +++++++++++++++++++
 tests/nvme/037.out |  2 ++
 tests/nvme/038     | 38 ++++++++++++++++++++
 tests/nvme/038.out |  2 ++
 tests/nvme/rc      | 88 ++++++++++++++++++++++++++++++++++++++++++++--
 38 files changed, 429 insertions(+), 57 deletions(-)
 create mode 100644 common/xfs
 create mode 100755 tests/nvme/033
 create mode 100644 tests/nvme/033.out
 create mode 100755 tests/nvme/034
 create mode 100644 tests/nvme/034.out
 create mode 100755 tests/nvme/035
 create mode 100644 tests/nvme/035.out
 create mode 100755 tests/nvme/036
 create mode 100644 tests/nvme/036.out
 create mode 100755 tests/nvme/037
 create mode 100644 tests/nvme/037.out
 create mode 100755 tests/nvme/038
 create mode 100644 tests/nvme/038.out


base-commit: 8a75bed5b0044615f4aedad8ea74aa20e6961851
--
2.20.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH blktests 01/11] common/fio: Remove state file in common helper
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-31  2:47   ` Chaitanya Kulkarni
  2020-08-27 19:49 ` [PATCH blktests 02/11] common/xfs: Create common helper to check for XFS support Logan Gunthorpe
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Instead of each individual test removing this file, just do it
in the common helper.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 common/fio     | 1 +
 tests/nvme/010 | 1 -
 tests/nvme/011 | 1 -
 tests/nvme/012 | 1 -
 tests/nvme/013 | 1 -
 5 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/common/fio b/common/fio
index 8bfad4238dda..94c65c107a14 100644
--- a/common/fio
+++ b/common/fio
@@ -181,6 +181,7 @@ _run_fio_rand_io() {
 _run_fio_verify_io() {
 	_run_fio --name=verify --rw=randwrite --direct=1 --ioengine=libaio --bs=4k \
 		--iodepth=16 --verify=crc32c "$@"
+	rm -f local*verify*state
 }
 
 _fio_perf_report() {
diff --git a/tests/nvme/010 b/tests/nvme/010
index 2ed0f4871a30..25c79089e092 100755
--- a/tests/nvme/010
+++ b/tests/nvme/010
@@ -51,7 +51,6 @@ test() {
 	losetup -d "${loop_dev}"
 
 	rm "${file_path}"
-	rm -f local*verify*state
 
 	echo "Test complete"
 }
diff --git a/tests/nvme/011 b/tests/nvme/011
index 974b33745b99..ad360d095ffc 100755
--- a/tests/nvme/011
+++ b/tests/nvme/011
@@ -47,7 +47,6 @@ test() {
 	_remove_nvmet_port "${port}"
 
 	rm "${file_path}"
-	rm -f local-write-and-verify*state
 
 	echo "Test complete"
 }
diff --git a/tests/nvme/012 b/tests/nvme/012
index 27981e903c58..dc86ee647729 100755
--- a/tests/nvme/012
+++ b/tests/nvme/012
@@ -61,7 +61,6 @@ test() {
 
 	losetup -d "${loop_dev}"
 
-	rm -f local*verify*state
 	rm "${file_path}"
 	rm -fr "${mount_dir}"
 
diff --git a/tests/nvme/013 b/tests/nvme/013
index af5f3730a2fc..0ed52926363a 100755
--- a/tests/nvme/013
+++ b/tests/nvme/013
@@ -57,7 +57,6 @@ test() {
 	_remove_nvmet_subsystem "${subsys_name}"
 	_remove_nvmet_port "${port}"
 
-	rm -f local*verify*state
 	rm "${file_path}"
 	rm -fr "${mount_dir}"
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 02/11] common/xfs: Create common helper to check for XFS support
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 01/11] common/fio: Remove state file in common helper Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 03/11] common/xfs: Create common helper to verify block device with xfs Logan Gunthorpe
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Two nvme tests create and mount XFS filesystems and
check for mkfs.xfs.

They should also check for XFS support in the kernel so
create a common helper for this.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 common/rc      |  8 ++++++++
 common/xfs     | 11 +++++++++++
 tests/nvme/012 |  3 ++-
 tests/nvme/013 |  3 ++-
 4 files changed, 23 insertions(+), 2 deletions(-)
 create mode 100644 common/xfs

diff --git a/common/rc b/common/rc
index 7f02103dc786..3dd1ab76f737 100644
--- a/common/rc
+++ b/common/rc
@@ -181,6 +181,14 @@ _have_tracepoint() {
 	return 0
 }
 
+_have_fs() {
+	modprobe "$1" >/dev/null 2>&1
+	if [[ ! -d "/sys/fs/$1" ]]; then
+		SKIP_REASON="kernel does not support filesystem $1"
+		return 1
+	fi
+}
+
 _test_dev_is_rotational() {
 	[[ $(cat "${TEST_DEV_SYSFS}/queue/rotational") -ne 0 ]]
 }
diff --git a/common/xfs b/common/xfs
new file mode 100644
index 000000000000..d1a603b8c7b5
--- /dev/null
+++ b/common/xfs
@@ -0,0 +1,11 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2017 Omar Sandoval
+#
+# fio helper functions.
+
+. common/shellcheck
+
+_have_xfs() {
+	_have_fs xfs && _have_program mkfs.xfs
+}
diff --git a/tests/nvme/012 b/tests/nvme/012
index dc86ee647729..981e7779e21d 100755
--- a/tests/nvme/012
+++ b/tests/nvme/012
@@ -5,12 +5,13 @@
 # Test mkfs with data verification for block device backed ns.
 
 . tests/nvme/rc
+. common/xfs
 
 DESCRIPTION="run mkfs and data verification fio job on NVMeOF block device-backed ns"
 TIMED=1
 
 requires() {
-	_have_program nvme && _have_program mkfs.xfs && _have_program fio && \
+	_have_program nvme && _have_xfs && _have_program fio && \
 		_have_modules loop nvme-loop nvmet && _have_configfs
 }
 
diff --git a/tests/nvme/013 b/tests/nvme/013
index 0ed52926363a..228fab9ff02b 100755
--- a/tests/nvme/013
+++ b/tests/nvme/013
@@ -5,12 +5,13 @@
 # Test mkfs with data verification for file backed ns.
 
 . tests/nvme/rc
+. common/xfs
 
 DESCRIPTION="run mkfs and data verification fio job on NVMeOF file-backed ns"
 TIMED=1
 
 requires() {
-	_have_program nvme && _have_program mkfs.xfs && _have_fio && \
+	_have_program nvme && _have_xfs && _have_fio && \
 		_have_modules nvme-loop nvmet && _have_configfs
 }
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 03/11] common/xfs: Create common helper to verify block device with xfs
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 01/11] common/fio: Remove state file in common helper Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 02/11] common/xfs: Create common helper to check for XFS support Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 04/11] nvme: Search for specific subsysnqn in _find_nvme_loop_dev Logan Gunthorpe
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Make a common helper from the code in tests nvme/012 and nvme/013
to run an fio verify on a XFS file system backed by the
specified block device.

While we are at it, all the output is redirected to $FULL instead of
/dev/null.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 common/xfs     | 22 ++++++++++++++++++++++
 tests/nvme/012 | 14 +-------------
 tests/nvme/013 | 14 +-------------
 3 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/common/xfs b/common/xfs
index d1a603b8c7b5..210c924cdd41 100644
--- a/common/xfs
+++ b/common/xfs
@@ -9,3 +9,25 @@
 _have_xfs() {
 	_have_fs xfs && _have_program mkfs.xfs
 }
+
+_xfs_mkfs_and_mount() {
+	local bdev=$1
+	local mount_dir=$2
+
+	mkdir -p "${mount_dir}"
+	umount "${mount_dir}"
+	mkfs.xfs -l size=32m -f "${bdev}"
+	mount "${bdev}" "${mount_dir}"
+}
+
+_xfs_run_fio_verify_io() {
+	local mount_dir="/mnt/blktests"
+	local bdev=$1
+
+	_xfs_mkfs_and_mount "${bdev}" "${mount_dir}" >> "${FULL}" 2>&1
+
+	_run_fio_verify_io --size=950m --directory="${mount_dir}/"
+
+	umount "${mount_dir}" >> "${FULL}" 2>&1
+	rm -fr "${mount_dir}"
+}
diff --git a/tests/nvme/012 b/tests/nvme/012
index 981e7779e21d..1dae795d17ac 100755
--- a/tests/nvme/012
+++ b/tests/nvme/012
@@ -23,12 +23,9 @@ test() {
 	local port
 	local nvmedev
 	local loop_dev
-	local mount_dir="/mnt/blktests"
 	local file_path="${TMPDIR}/img"
 	local subsys_name="blktests-subsystem-1"
 
-	mkdir -p "${mount_dir}" > /dev/null 2>&1
-
 	truncate -s 1G "${file_path}"
 
 	loop_dev="$(losetup -f --show "${file_path}")"
@@ -44,15 +41,7 @@ test() {
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
-	umount ${mount_dir} > /dev/null 2>&1
-
-	mkfs.xfs -l size=32m -f /dev/"${nvmedev}n1" > /dev/null 2>&1
-
-	mount /dev/"${nvmedev}n1" "${mount_dir}"
-
-	_run_fio_verify_io --size=950m --directory="${mount_dir}/"
-
-	umount "${mount_dir}" > /dev/null 2>&1
+	_xfs_run_fio_verify_io "/dev/${nvmedev}n1"
 
 	nvme disconnect -n "${subsys_name}"
 
@@ -63,7 +52,6 @@ test() {
 	losetup -d "${loop_dev}"
 
 	rm "${file_path}"
-	rm -fr "${mount_dir}"
 
 	echo "Test complete"
 }
diff --git a/tests/nvme/013 b/tests/nvme/013
index 228fab9ff02b..c7b0f16ef504 100755
--- a/tests/nvme/013
+++ b/tests/nvme/013
@@ -22,13 +22,10 @@ test() {
 
 	local port
 	local nvmedev
-	local mount_dir="/mnt/blktests/"
 	local file_path="${TMPDIR}/img"
 
 	local subsys_name="blktests-subsystem-1"
 
-	mkdir -p "${mount_dir}" > /dev/null 2>&1
-
 	truncate -s 1G "${file_path}"
 
 	_create_nvmet_subsystem "${subsys_name}" "${file_path}" \
@@ -42,15 +39,7 @@ test() {
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
-	umount ${mount_dir} > /dev/null 2>&1
-
-	mkfs.xfs -l size=32m -f /dev/"${nvmedev}n1" > /dev/null 2>&1
-
-	mount /dev/"${nvmedev}n1" "${mount_dir}"
-
-	_run_fio_verify_io --size=800m --directory="${mount_dir}/"
-
-	umount "${mount_dir}" > /dev/null 2>&1
+	_xfs_run_fio_verify_io "/dev/${nvmedev}n1"
 
 	nvme disconnect -n "${subsys_name}"
 
@@ -59,7 +48,6 @@ test() {
 	_remove_nvmet_port "${port}"
 
 	rm "${file_path}"
-	rm -fr "${mount_dir}"
 
 	echo "Test complete"
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 04/11] nvme: Search for specific subsysnqn in _find_nvme_loop_dev
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (2 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 03/11] common/xfs: Create common helper to verify block device with xfs Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 05/11] nvme: Add common helpers for passthru tests Logan Gunthorpe
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

This ensures we find the correct nvme loop device if others
exist on a given system (which is generally not expected on
test systems).

Additionally, this will be required in the upcomming test nvme/036
which will have controllers racing with ones being destroyed.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/004 | 2 +-
 tests/nvme/005 | 2 +-
 tests/nvme/008 | 2 +-
 tests/nvme/009 | 2 +-
 tests/nvme/010 | 2 +-
 tests/nvme/011 | 2 +-
 tests/nvme/012 | 2 +-
 tests/nvme/013 | 2 +-
 tests/nvme/014 | 2 +-
 tests/nvme/015 | 2 +-
 tests/nvme/018 | 2 +-
 tests/nvme/019 | 2 +-
 tests/nvme/020 | 2 +-
 tests/nvme/021 | 2 +-
 tests/nvme/022 | 2 +-
 tests/nvme/023 | 2 +-
 tests/nvme/024 | 2 +-
 tests/nvme/025 | 2 +-
 tests/nvme/026 | 2 +-
 tests/nvme/027 | 2 +-
 tests/nvme/028 | 2 +-
 tests/nvme/029 | 2 +-
 tests/nvme/rc  | 7 ++++---
 23 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/tests/nvme/004 b/tests/nvme/004
index 0debcd9c7049..0bda90f60dd2 100755
--- a/tests/nvme/004
+++ b/tests/nvme/004
@@ -35,7 +35,7 @@ test() {
 	nvme connect -t loop -n blktests-subsystem-1
 
 	local nvmedev
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "blktests-subsystem-1")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/005 b/tests/nvme/005
index 8c79d234bb1d..82d920596439 100755
--- a/tests/nvme/005
+++ b/tests/nvme/005
@@ -36,7 +36,7 @@ test() {
 	nvme connect -t loop -n blktests-subsystem-1
 
 	local nvmedev
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "blktests-subsystem-1")
 
 	udevadm settle
 
diff --git a/tests/nvme/008 b/tests/nvme/008
index 71ff4d962b00..bd0e2f2e6d5b 100755
--- a/tests/nvme/008
+++ b/tests/nvme/008
@@ -36,7 +36,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/009 b/tests/nvme/009
index 25c7da2ab854..9d93888f5c91 100755
--- a/tests/nvme/009
+++ b/tests/nvme/009
@@ -32,7 +32,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/010 b/tests/nvme/010
index 25c79089e092..5a47b1f02b35 100755
--- a/tests/nvme/010
+++ b/tests/nvme/010
@@ -36,7 +36,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/011 b/tests/nvme/011
index ad360d095ffc..0b1465984dde 100755
--- a/tests/nvme/011
+++ b/tests/nvme/011
@@ -34,7 +34,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/012 b/tests/nvme/012
index 1dae795d17ac..fd0bfc491cfa 100755
--- a/tests/nvme/012
+++ b/tests/nvme/012
@@ -37,7 +37,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/013 b/tests/nvme/013
index c7b0f16ef504..bed00482f2f5 100755
--- a/tests/nvme/013
+++ b/tests/nvme/013
@@ -35,7 +35,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/014 b/tests/nvme/014
index c255d5f12205..96e1dc39407f 100755
--- a/tests/nvme/014
+++ b/tests/nvme/014
@@ -36,7 +36,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/015 b/tests/nvme/015
index a8497a2ba400..dc129b6aff36 100755
--- a/tests/nvme/015
+++ b/tests/nvme/015
@@ -32,7 +32,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/018 b/tests/nvme/018
index 67d89a6f0b24..9544f0ba0b73 100755
--- a/tests/nvme/018
+++ b/tests/nvme/018
@@ -34,7 +34,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/019 b/tests/nvme/019
index a8b0204ec0eb..92dc25fbbd8b 100755
--- a/tests/nvme/019
+++ b/tests/nvme/019
@@ -38,7 +38,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/020 b/tests/nvme/020
index b480ee1b92d0..eea19a11b4b3 100755
--- a/tests/nvme/020
+++ b/tests/nvme/020
@@ -34,7 +34,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/021 b/tests/nvme/021
index bbee54d16ff1..880ef3df6cdf 100755
--- a/tests/nvme/021
+++ b/tests/nvme/021
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/022 b/tests/nvme/022
index 9ba07c1cc50f..c6ba18472afc 100755
--- a/tests/nvme/022
+++ b/tests/nvme/022
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/023 b/tests/nvme/023
index ed2a5ad7653f..9161e81b95e9 100755
--- a/tests/nvme/023
+++ b/tests/nvme/023
@@ -36,7 +36,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/024 b/tests/nvme/024
index 538580947c5c..99588b000b30 100755
--- a/tests/nvme/024
+++ b/tests/nvme/024
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/025 b/tests/nvme/025
index 0039fefa5007..d640e43ac350 100755
--- a/tests/nvme/025
+++ b/tests/nvme/025
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/026 b/tests/nvme/026
index 7e89d840529c..10488952feb5 100755
--- a/tests/nvme/026
+++ b/tests/nvme/026
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/027 b/tests/nvme/027
index 4d293beb8b47..47a1ec1c34c0 100755
--- a/tests/nvme/027
+++ b/tests/nvme/027
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/028 b/tests/nvme/028
index 1280107ed5df..845b52759c6e 100755
--- a/tests/nvme/028
+++ b/tests/nvme/028
@@ -33,7 +33,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/029 b/tests/nvme/029
index 65eb40031888..b56c131016c5 100755
--- a/tests/nvme/029
+++ b/tests/nvme/029
@@ -69,7 +69,7 @@ test() {
 
 	nvme connect -t loop -n "${subsys_name}"
 
-	nvmedev="$(_find_nvme_loop_dev)"
+	nvmedev=$(_find_nvme_loop_dev "${subsys_name}")
 	cat "/sys/block/${nvmedev}n1/uuid"
 	cat "/sys/block/${nvmedev}n1/wwid"
 
diff --git a/tests/nvme/rc b/tests/nvme/rc
index 6ffa971b4308..8865d543f4c1 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -162,12 +162,13 @@ _remove_nvmet_subsystem_from_port() {
 }
 
 _find_nvme_loop_dev() {
+	local subsys=$1
+	local subsysnqn
 	local dev
-	local transport
 	for dev in /sys/class/nvme/nvme*; do
 		dev="$(basename "$dev")"
-		transport="$(cat "/sys/class/nvme/${dev}/transport")"
-		if [[ "$transport" == "loop" ]]; then
+		subsysnqn="$(cat "/sys/class/nvme/${dev}/subsysnqn")"
+		if [[ "$subsysnqn" == "$subsys" ]]; then
 			echo "$dev"
 			for ((i = 0; i < 10; i++)); do
 				if [[ -e /sys/block/$dev/uuid &&
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 05/11] nvme: Add common helpers for passthru tests
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (3 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 04/11] nvme: Search for specific subsysnqn in _find_nvme_loop_dev Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 06/11] nvme/033: Simple test to create and connect to a passthru target Logan Gunthorpe
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Add some simple helpers to setup a passthru target that
passes through to a nvme test device.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/rc | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)

diff --git a/tests/nvme/rc b/tests/nvme/rc
index 8865d543f4c1..9553dc64b05c 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -24,6 +24,17 @@ _require_test_dev_is_nvme() {
 	return 0
 }
 
+_test_dev_nvme_ctrl() {
+	local dev
+
+	dev=$(cat "${TEST_DEV_SYSFS}/device/dev")
+	echo "/dev/char/${dev}"
+}
+
+_test_dev_nvme_nsid() {
+	cat "${TEST_DEV_SYSFS}/nsid"
+}
+
 _cleanup_nvmet() {
 	local dev
 	local port
@@ -146,6 +157,27 @@ _remove_nvmet_subsystem() {
 	rmdir "${subsys_path}"
 }
 
+_create_nvmet_passthru() {
+	local nvmet_subsystem="$1"
+	local subsys_path="${NVMET_CFS}/subsystems/${nvmet_subsystem}"
+	local passthru_path="${subsys_path}/passthru"
+
+	mkdir -p "${subsys_path}"
+	printf 1 > "${subsys_path}/attr_allow_any_host"
+
+	printf "%s" "$(_test_dev_nvme_ctrl)" > "${passthru_path}/device_path"
+	printf 1 > "${passthru_path}/enable"
+}
+
+_remove_nvmet_passhtru() {
+	local nvmet_subsystem="$1"
+	local subsys_path="${NVMET_CFS}/subsystems/${nvmet_subsystem}"
+	local passthru_path="${subsys_path}/passthru"
+
+	printf 0 > "${passthru_path}/enable"
+	rmdir "${subsys_path}"
+}
+
 _add_nvmet_subsys_to_port() {
 	local port="$1"
 	local nvmet_subsystem="$2"
@@ -181,6 +213,55 @@ _find_nvme_loop_dev() {
 	done
 }
 
+_find_nvme_passthru_loop_dev() {
+	local subsys=$1
+	local nsid
+	local dev
+
+	dev=$(_find_nvme_loop_dev "${subsys}")
+	nsid=$(_test_dev_nvme_nsid)
+	echo "/dev/${dev}n${nsid}"
+}
+
+_nvmet_passthru_target_setup() {
+	local subsys_name=$1
+
+	_create_nvmet_passthru "${subsys_name}"
+	port="$(_create_nvmet_port "loop")"
+	_add_nvmet_subsys_to_port "${port}" "${subsys_name}"
+
+	echo "$port"
+}
+
+_nvmet_passthru_target_connect() {
+	local subsys_name=$1
+
+	nvme connect -t loop -n "${subsys_name}" >>"${FULL}" 2>&1
+	nsdev=$(_find_nvme_passthru_loop_dev "${subsys_name}")
+
+	# The following tests can race with the creation
+	# of the device so ensure the block device exists
+	# before continuing
+	while [ ! -b "${nsdev}" ]; do sleep 1; done
+
+	echo "${nsdev}"
+}
+
+_nvmet_passthru_target_disconnect() {
+	local subsys_name=$1
+
+	nvme disconnect -n "${subsys_name}" >>"${FULL}" 2>&1
+}
+
+_nvmet_passthru_target_cleanup() {
+	local port=$1
+	local subsys_name=$2
+
+	_remove_nvmet_subsystem_from_port "${port}" "${subsys_name}"
+	_remove_nvmet_port "${port}"
+	_remove_nvmet_passhtru "${subsys_name}"
+}
+
 _filter_discovery() {
 	sed -n -r -e "s/Generation counter [0-9]+/Generation counter X/" \
 		  -e '/Discovery Log Number|Log Entry|trtype|subnqn/p'
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 06/11] nvme/033: Simple test to create and connect to a passthru target
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (4 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 05/11] nvme: Add common helpers for passthru tests Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 07/11] nvme/034: Add test for passthru data verification Logan Gunthorpe
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

This tests creates and connects to a passthru controller backed
by a test NVMe namespace. It then verifies that some common fields
in id-ctrl and id-ns are the same in the target and the orginial
device.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/033     | 69 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/nvme/033.out |  6 ++++
 2 files changed, 75 insertions(+)
 create mode 100755 tests/nvme/033
 create mode 100644 tests/nvme/033.out

diff --git a/tests/nvme/033 b/tests/nvme/033
new file mode 100755
index 000000000000..e45c5e9758ba
--- /dev/null
+++ b/tests/nvme/033
@@ -0,0 +1,69 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+
+. tests/nvme/rc
+
+DESCRIPTION="create and connect to an NVMeOF target with a passthru controller"
+QUICK=1
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs &&
+	_have_kernel_option NVME_TARGET_PASSTHRU
+}
+
+nvme_info() {
+	local ns=$1
+
+	nvme id-ctrl "$ns" | grep -E '^(vid|sn|mn|fr) '
+	nvme id-ns "$ns" | grep -E '^(nsze|ncap) '
+}
+
+compare_dev_info() {
+	local passthru_dev=$1
+	local testdev_info
+	local passthru_info
+
+	testdev_info=$(nvme_info "$TEST_DEV")
+	passthru_info=$(nvme_info "$passthru_dev")
+
+	cat >> "${FULL}" <<- EOF
+
+	Test Device ${TEST_DEV} Info:
+	$testdev_info
+
+	Passthru Device ${passthru_dev} Info:
+	$passthru_info
+
+	EOF
+
+	diff -u <(echo "$testdev_info") <(echo "$passthru_info")
+	if [[ "$testdev_info" != "$passthru_info" ]]; then
+		echo "ERROR: Device information does not match! (See ${FULL})"
+	fi
+}
+
+test_device() {
+	local subsys="blktests-subsystem-1"
+	local nsdev
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+	port=$(_nvmet_passthru_target_setup "$subsys")
+
+	nvme discover -t loop | _filter_discovery
+
+	nsdev=$(_nvmet_passthru_target_connect "$subsys")
+
+	compare_dev_info "${nsdev}"
+
+	_nvmet_passthru_target_disconnect "$subsys"
+	_nvmet_passthru_target_cleanup "$port" "$subsys"
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/033.out b/tests/nvme/033.out
new file mode 100644
index 000000000000..88787848654f
--- /dev/null
+++ b/tests/nvme/033.out
@@ -0,0 +1,6 @@
+Running nvme/033
+Discovery Log Number of Records 1, Generation counter X
+=====Discovery Log Entry 0======
+trtype:  loop
+subnqn:  blktests-subsystem-1
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 07/11] nvme/034: Add test for passthru data verification
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (5 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 06/11] nvme/033: Simple test to create and connect to a passthru target Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 08/11] nvme/035: Add test to verify passthru controller with a filesystem Logan Gunthorpe
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Similar to test nvme/010 and nvme/011 but for a passthru controller

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/034     | 37 +++++++++++++++++++++++++++++++++++++
 tests/nvme/034.out |  2 ++
 2 files changed, 39 insertions(+)
 create mode 100755 tests/nvme/034
 create mode 100644 tests/nvme/034.out

diff --git a/tests/nvme/034 b/tests/nvme/034
new file mode 100755
index 000000000000..18a539319c12
--- /dev/null
+++ b/tests/nvme/034
@@ -0,0 +1,37 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+
+. tests/nvme/rc
+
+DESCRIPTION="run data verification fio job on an NVMeOF passthru controller"
+TIMED=1
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs &&
+	_have_kernel_option NVME_TARGET_PASSTHRU &&
+	_have_fio
+}
+
+test_device() {
+	local subsys="blktests-subsystem-1"
+	local ctrldev
+	local nsdev
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+	port=$(_nvmet_passthru_target_setup "$subsys")
+	nsdev=$(_nvmet_passthru_target_connect "$subsys")
+
+	_run_fio_verify_io --size=950m --filename="${nsdev}"
+
+	_nvmet_passthru_target_disconnect "$subsys"
+	_nvmet_passthru_target_cleanup "$port" "$subsys"
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/034.out b/tests/nvme/034.out
new file mode 100644
index 000000000000..5c851b46779d
--- /dev/null
+++ b/tests/nvme/034.out
@@ -0,0 +1,2 @@
+Running nvme/034
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 08/11] nvme/035: Add test to verify passthru controller with a filesystem
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (6 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 07/11] nvme/034: Add test for passthru data verification Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 09/11] nvme/036: Add test for testing reset command on nvme-passthru Logan Gunthorpe
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

This is a similar test as nvme/012 and nvme/013, except with a
passthru controller.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/035     | 39 +++++++++++++++++++++++++++++++++++++++
 tests/nvme/035.out |  2 ++
 2 files changed, 41 insertions(+)
 create mode 100755 tests/nvme/035
 create mode 100644 tests/nvme/035.out

diff --git a/tests/nvme/035 b/tests/nvme/035
new file mode 100755
index 000000000000..de5f57c9b95f
--- /dev/null
+++ b/tests/nvme/035
@@ -0,0 +1,39 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+
+. tests/nvme/rc
+. common/xfs
+
+DESCRIPTION="run mkfs and data verification fio job on an NVMeOF passthru controller"
+TIMED=1
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs &&
+	_have_kernel_option NVME_TARGET_PASSTHRU &&
+	_have_xfs &&
+	_have_fio
+}
+
+test_device() {
+	local subsys="blktests-subsystem-1"
+	local ctrldev
+	local nsdev
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+	port=$(_nvmet_passthru_target_setup "$subsys")
+	nsdev=$(_nvmet_passthru_target_connect "$subsys")
+
+	_xfs_run_fio_verify_io "${nsdev}"
+
+	_nvmet_passthru_target_disconnect "$subsys"
+	_nvmet_passthru_target_cleanup "$port" "$subsys"
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/035.out b/tests/nvme/035.out
new file mode 100644
index 000000000000..455110c046a5
--- /dev/null
+++ b/tests/nvme/035.out
@@ -0,0 +1,2 @@
+Running nvme/035
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 09/11] nvme/036: Add test for testing reset command on nvme-passthru
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (7 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 08/11] nvme/035: Add test to verify passthru controller with a filesystem Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 10/11] nvme/037: Add test which loops passthru connect and disconnect Logan Gunthorpe
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Similar to test 022 but for passthru controllers.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/036     | 39 +++++++++++++++++++++++++++++++++++++++
 tests/nvme/036.out |  2 ++
 2 files changed, 41 insertions(+)
 create mode 100755 tests/nvme/036
 create mode 100644 tests/nvme/036.out

diff --git a/tests/nvme/036 b/tests/nvme/036
new file mode 100755
index 000000000000..133aba6425a5
--- /dev/null
+++ b/tests/nvme/036
@@ -0,0 +1,39 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+
+. tests/nvme/rc
+
+DESCRIPTION="test NVMe reset command on an NVMeOF target with a passthru controller"
+QUICK=1
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs &&
+	_have_kernel_option NVME_TARGET_PASSTHRU
+}
+
+test_device() {
+	local subsys="blktests-subsystem-1"
+	local ctrldev
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+	port=$(_nvmet_passthru_target_setup "$subsys")
+	_nvmet_passthru_target_connect "$subsys" > /dev/null
+
+	ctrldev=$(_find_nvme_loop_dev "$subsys")
+
+	if ! nvme reset "/dev/${ctrldev}" >> "$FULL" 2>&1; then
+		echo "ERROR: reset failed"
+	fi
+
+	_nvmet_passthru_target_disconnect "$subsys"
+	_nvmet_passthru_target_cleanup "$port" "$subsys"
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/036.out b/tests/nvme/036.out
new file mode 100644
index 000000000000..58676b1c69f8
--- /dev/null
+++ b/tests/nvme/036.out
@@ -0,0 +1,2 @@
+Running nvme/036
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 10/11] nvme/037: Add test which loops passthru connect and disconnect
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (8 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 09/11] nvme/036: Add test for testing reset command on nvme-passthru Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-08-27 19:49 ` [PATCH blktests 11/11] nvme/038: Test removal of un-enabled subsystem and ports Logan Gunthorpe
  2020-09-21 23:29 ` [PATCH blktests 00/11] NVMe Target Passthru Block Tests Chaitanya Kulkarni
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Similar to test nvme/031 except for passthru controllers.

Note: it's normal to get I/O errors in this test as
when the controller disconnects it races with the partition
table read.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/037     | 36 ++++++++++++++++++++++++++++++++++++
 tests/nvme/037.out |  2 ++
 2 files changed, 38 insertions(+)
 create mode 100755 tests/nvme/037
 create mode 100644 tests/nvme/037.out

diff --git a/tests/nvme/037 b/tests/nvme/037
new file mode 100755
index 000000000000..dce25b9f63cf
--- /dev/null
+++ b/tests/nvme/037
@@ -0,0 +1,36 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+
+. tests/nvme/rc
+
+DESCRIPTION="test deletion of NVMeOF passthru controllers immediately after setup"
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs &&
+	_have_kernel_option NVME_TARGET_PASSTHRU
+}
+
+test_device() {
+	local subsys="blktests-subsystem-"
+	local iterations=10
+	local ctrldev
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+
+	for ((i = 0; i < iterations; i++)); do
+		port=$(_nvmet_passthru_target_setup "${subsys}$i")
+		_nvmet_passthru_target_connect "${subsys}$i" > /dev/null
+
+		_nvmet_passthru_target_disconnect "${subsys}$i"
+		_nvmet_passthru_target_cleanup "$port" "${subsys}$i"
+	done
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/037.out b/tests/nvme/037.out
new file mode 100644
index 000000000000..eaf903d0520e
--- /dev/null
+++ b/tests/nvme/037.out
@@ -0,0 +1,2 @@
+Running nvme/037
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH blktests 11/11] nvme/038: Test removal of un-enabled subsystem and ports
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (9 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 10/11] nvme/037: Add test which loops passthru connect and disconnect Logan Gunthorpe
@ 2020-08-27 19:49 ` Logan Gunthorpe
  2020-09-21 23:29 ` [PATCH blktests 00/11] NVMe Target Passthru Block Tests Chaitanya Kulkarni
  11 siblings, 0 replies; 14+ messages in thread
From: Logan Gunthorpe @ 2020-08-27 19:49 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Chaitanya Kulkarni, Stephen Bates, Logan Gunthorpe

Test that we can remove a subsystem that has not been enabled by
passthru or any ns. Do the same for ports while we are at it.

This was an issue in the original passthru patches and is
not commonly tested. So this test will ensure we don't regress this.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
 tests/nvme/038     | 38 ++++++++++++++++++++++++++++++++++++++
 tests/nvme/038.out |  2 ++
 2 files changed, 40 insertions(+)
 create mode 100755 tests/nvme/038
 create mode 100644 tests/nvme/038.out

diff --git a/tests/nvme/038 b/tests/nvme/038
new file mode 100755
index 000000000000..29827f324155
--- /dev/null
+++ b/tests/nvme/038
@@ -0,0 +1,38 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2019 Logan Gunthorpe
+# Copyright (C) 2019 Eideticom Communications Inc.
+#
+# Test that we can remove a subsystem that has not been enabled by
+# passthru or any ns. Do the same for ports while we are at it.
+#
+# This was an issue in the original passthru patches and is
+# not commonly tested. So this test will ensure we don't regress this.
+#
+. tests/nvme/rc
+
+DESCRIPTION="test deletion of NVMeOF subsystem without enabling"
+QUICK=1
+
+requires() {
+	_have_program nvme &&
+	_have_modules nvme-loop nvmet &&
+	_have_configfs
+}
+
+test() {
+	local subsys_path="${NVMET_CFS}/subsystems/blktests-subsystem-1"
+	local port
+
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+
+	mkdir -p "${subsys_path}"
+	rmdir "${subsys_path}"
+
+	port=$(_create_nvmet_port loop)
+	_remove_nvmet_port "${port}"
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/038.out b/tests/nvme/038.out
new file mode 100644
index 000000000000..06bc98022c33
--- /dev/null
+++ b/tests/nvme/038.out
@@ -0,0 +1,2 @@
+Running nvme/038
+Test complete
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH blktests 01/11] common/fio: Remove state file in common helper
  2020-08-27 19:49 ` [PATCH blktests 01/11] common/fio: Remove state file in common helper Logan Gunthorpe
@ 2020-08-31  2:47   ` Chaitanya Kulkarni
  0 siblings, 0 replies; 14+ messages in thread
From: Chaitanya Kulkarni @ 2020-08-31  2:47 UTC (permalink / raw)
  To: Logan Gunthorpe, linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Stephen Bates

On 8/27/20 12:49, Logan Gunthorpe wrote:
> Instead of each individual test removing this file, just do it
> in the common helper.
> 
> Signed-off-by: Logan Gunthorpe<logang@deltatee.com>
Nice cleanup, looks good.

Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH blktests 00/11] NVMe Target Passthru Block Tests
  2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
                   ` (10 preceding siblings ...)
  2020-08-27 19:49 ` [PATCH blktests 11/11] nvme/038: Test removal of un-enabled subsystem and ports Logan Gunthorpe
@ 2020-09-21 23:29 ` Chaitanya Kulkarni
  11 siblings, 0 replies; 14+ messages in thread
From: Chaitanya Kulkarni @ 2020-09-21 23:29 UTC (permalink / raw)
  To: Logan Gunthorpe, linux-kernel, linux-nvme, linux-block, Omar Sandoval
  Cc: Sagi Grimberg, Stephen Bates, Logan Gunthorpe

On 8/27/20 12:49, Logan Gunthorpe wrote:
> From: Logan Gunthorpe <logan.gunthorpe@eideticom.com>
>
> Hi,
>
> Now that the passthru patches are in Linus's tree, I wanted to get
> the blktest changes that test them out there for some review.
>
> I know that Sagi has a series in progress to allow for running tests
> with other transports. These two patch sets will need to be reconciled
> at some point.
>
> This series is based off of the current blktests master and a git repo is
> available for this here:
>
> https://github.com/Eideticom/blktests nvmet_passthru
>
> Thanks,
>
> Logan

It will be great to have this on the top of Sagi's series once Omar

applies rdma/tcp series.


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-09-21 23:29 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-27 19:49 [PATCH blktests 00/11] NVMe Target Passthru Block Tests Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 01/11] common/fio: Remove state file in common helper Logan Gunthorpe
2020-08-31  2:47   ` Chaitanya Kulkarni
2020-08-27 19:49 ` [PATCH blktests 02/11] common/xfs: Create common helper to check for XFS support Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 03/11] common/xfs: Create common helper to verify block device with xfs Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 04/11] nvme: Search for specific subsysnqn in _find_nvme_loop_dev Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 05/11] nvme: Add common helpers for passthru tests Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 06/11] nvme/033: Simple test to create and connect to a passthru target Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 07/11] nvme/034: Add test for passthru data verification Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 08/11] nvme/035: Add test to verify passthru controller with a filesystem Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 09/11] nvme/036: Add test for testing reset command on nvme-passthru Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 10/11] nvme/037: Add test which loops passthru connect and disconnect Logan Gunthorpe
2020-08-27 19:49 ` [PATCH blktests 11/11] nvme/038: Test removal of un-enabled subsystem and ports Logan Gunthorpe
2020-09-21 23:29 ` [PATCH blktests 00/11] NVMe Target Passthru Block Tests Chaitanya Kulkarni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).