diff mbox series

[PATCHv4,blktests] nvme: add test for creating/deleting file-ns

Message ID 20240619172556.2968660-1-nilay@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series [PATCHv4,blktests] nvme: add test for creating/deleting file-ns | expand

Commit Message

Nilay Shroff June 19, 2024, 5:25 p.m. UTC
This is regression test for commit be647e2c76b2 (nvme: use srcu for
iterating namespace list)[1]. It is fixed in commit ff0ffe5b7c3c(nvme:
fix namespace removal list)[2].

This test uses a regular file backed loop device for creating and then
deleting an NVMe namespace in a loop.

[1] https://lore.kernel.org/all/2312e6c3-a069-4388-a863-df7e261b9d70@linux.vnet.ibm.com/
[2] https://lore.kernel.org/all/20240613164246.75205-1-kbusch@meta.com/

Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
---
Changes from v3: 
    - Instead of sleeping for async opeartion (ns creation) to finish, 
      wait until the ns is created by polling ns/uuid (Daniel)
Changes from v2: 
    - Use defaults for creating and connecting to nvme target (Daniel)
Changes from v1: 
    - Add nvme prefix in the subject line instead of loop (Chaitanya)
    - Enrich the commit log with details including link to regression 
      discussion and fix commit (Chaitanya)
    - Few other formatting cleanup (Chaitanya)
    - Add fix commit information in the test header (Shinichiro)
    - Instead of using default 1000 iteration for test,
      set the test iteration count to 20 (Shinichiro)
    - Update test case no. to nvme/052 (Shinichiro)

---
 tests/nvme/052     | 83 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/nvme/052.out |  2 ++
 2 files changed, 85 insertions(+)
 create mode 100755 tests/nvme/052
 create mode 100644 tests/nvme/052.out

Comments

Daniel Wagner June 20, 2024, 6:35 a.m. UTC | #1
On Wed, Jun 19, 2024 at 10:55:02PM GMT, Nilay Shroff wrote:
> +		truncate -s "${NVME_IMG_SIZE}" "$(_nvme_def_file_path).$i"
> +		uuid="$(uuidgen -r)"

This adds a new dependency on an external tool. It should be mentioned
in the README and added to the list of tools to check for:
_check_dependencies(). Alternatively you could skip the test if the tool
is not available. Anyway the rest looks good.

Reviewed-by: Daniel Wagner <dwagner@suse.de>
Nilay Shroff June 20, 2024, 6:40 a.m. UTC | #2
On 6/20/24 12:05, Daniel Wagner wrote:
> On Wed, Jun 19, 2024 at 10:55:02PM GMT, Nilay Shroff wrote:
>> +		truncate -s "${NVME_IMG_SIZE}" "$(_nvme_def_file_path).$i"
>> +		uuid="$(uuidgen -r)"
> 
> This adds a new dependency on an external tool. It should be mentioned
> in the README and added to the list of tools to check for:
> _check_dependencies(). Alternatively you could skip the test if the tool
> is not available. Anyway the rest looks good.
> 
The "uuidgen" is part of util-linux package and I saw that it's already mentioned
as one of the required packages for blktest: https://github.com/osandov/blktests

> Reviewed-by: Daniel Wagner <dwagner@suse.de>
> 

Thanks,
--Nilay
Daniel Wagner June 20, 2024, 6:55 a.m. UTC | #3
On Thu, Jun 20, 2024 at 12:10:32PM GMT, Nilay Shroff wrote:
> 
> 
> On 6/20/24 12:05, Daniel Wagner wrote:
> > On Wed, Jun 19, 2024 at 10:55:02PM GMT, Nilay Shroff wrote:
> >> +		truncate -s "${NVME_IMG_SIZE}" "$(_nvme_def_file_path).$i"
> >> +		uuid="$(uuidgen -r)"
> > 
> > This adds a new dependency on an external tool. It should be mentioned
> > in the README and added to the list of tools to check for:
> > _check_dependencies(). Alternatively you could skip the test if the tool
> > is not available. Anyway the rest looks good.
> > 
> The "uuidgen" is part of util-linux package and I saw that it's already mentioned
> as one of the required packages for blktest: https://github.com/osandov/blktests

Ah, I just grepped for uuidgen and there is no other user. So all is good.
Venkat Rao Bagalkote June 20, 2024, 8:28 a.m. UTC | #4
Tested this patch, with and without the below fix, and observing 
expected results.

https://lore.kernel.org/all/20240613164246.75205-1-kbusch@meta.com/

Tested-by: Venkat Rao Bagalkote <venkat88@linux.vnet.ibm.com>

Regards,
Venkat.
On 20/06/24 12:10 pm, Nilay Shroff wrote:
>
> On 6/20/24 12:05, Daniel Wagner wrote:
>> On Wed, Jun 19, 2024 at 10:55:02PM GMT, Nilay Shroff wrote:
>>> +		truncate -s "${NVME_IMG_SIZE}" "$(_nvme_def_file_path).$i"
>>> +		uuid="$(uuidgen -r)"
>> This adds a new dependency on an external tool. It should be mentioned
>> in the README and added to the list of tools to check for:
>> _check_dependencies(). Alternatively you could skip the test if the tool
>> is not available. Anyway the rest looks good.
>>
> The "uuidgen" is part of util-linux package and I saw that it's already mentioned
> as one of the required packages for blktest: https://github.com/osandov/blktests
>
>> Reviewed-by: Daniel Wagner <dwagner@suse.de>
>>
> Thanks,
> --Nilay
Chaitanya Kulkarni June 24, 2024, 3:04 a.m. UTC | #5
On 6/19/24 10:25, Nilay Shroff wrote:
> This is regression test for commit be647e2c76b2 (nvme: use srcu for
> iterating namespace list)[1]. It is fixed in commit ff0ffe5b7c3c(nvme:
> fix namespace removal list)[2].
>
> This test uses a regular file backed loop device for creating and then
> deleting an NVMe namespace in a loop.
>
> [1]https://lore.kernel.org/all/2312e6c3-a069-4388-a863-df7e261b9d70@linux.vnet.ibm.com/
> [2]https://lore.kernel.org/all/20240613164246.75205-1-kbusch@meta.com/
>
> Signed-off-by: Nilay Shroff<nilay@linux.ibm.com>

Looks good.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>

-ck
Shin'ichiro Kawasaki June 24, 2024, 7:57 a.m. UTC | #6
On Jun 19, 2024 / 22:55, Nilay Shroff wrote:
> This is regression test for commit be647e2c76b2 (nvme: use srcu for
> iterating namespace list)[1]. It is fixed in commit ff0ffe5b7c3c(nvme:
> fix namespace removal list)[2].
> 
> This test uses a regular file backed loop device for creating and then
> deleting an NVMe namespace in a loop.
> 
> [1] https://lore.kernel.org/all/2312e6c3-a069-4388-a863-df7e261b9d70@linux.vnet.ibm.com/
> [2] https://lore.kernel.org/all/20240613164246.75205-1-kbusch@meta.com/
> 
> Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>

I've applied it. Thanks!
diff mbox series

Patch

diff --git a/tests/nvme/052 b/tests/nvme/052
new file mode 100755
index 0000000..cf6061a
--- /dev/null
+++ b/tests/nvme/052
@@ -0,0 +1,83 @@ 
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2024 Nilay Shroff
+#
+# Regression test for commit be647e2c76b2(nvme: use srcu for iterating
+# namespace list). This regression is resolved with commit ff0ffe5b7c3c
+# (nvme: fix namespace removal list)
+
+. tests/nvme/rc
+
+DESCRIPTION="Test file-ns creation/deletion under one subsystem"
+
+requires() {
+	_nvme_requires
+	_have_loop
+	_require_nvme_trtype_is_loop
+}
+
+set_conditions() {
+	_set_nvme_trtype "$@"
+}
+
+nvmf_wait_for_ns() {
+	local ns
+	local timeout="5"
+	local uuid="$1"
+
+	ns=$(_find_nvme_ns "${uuid}")
+
+	start_time=$(date +%s)
+	while [[ -z "$ns" ]]; do
+		sleep 1
+		end_time=$(date +%s)
+		if (( end_time - start_time > timeout )); then
+			echo "namespace with uuid \"${uuid}\" not " \
+				"found within ${timeout} seconds"
+			return 1
+		fi
+		ns=$(_find_nvme_ns "${uuid}")
+	done
+
+	return 0
+}
+
+test() {
+	echo "Running ${TEST_NAME}"
+
+	_setup_nvmet
+
+	local iterations=20
+
+	_nvmet_target_setup
+
+	_nvme_connect_subsys
+
+	# start iteration from ns-id 2 because ns-id 1 is created
+	# by default when nvme target is setup. Also ns-id 1 is
+	# deleted when nvme target is cleaned up.
+	for ((i = 2; i <= iterations; i++)); do {
+		truncate -s "${NVME_IMG_SIZE}" "$(_nvme_def_file_path).$i"
+		uuid="$(uuidgen -r)"
+
+		_create_nvmet_ns "${def_subsysnqn}" "${i}" "$(_nvme_def_file_path).$i" "${uuid}"
+
+		# wait until async request is processed and ns is created
+		nvmf_wait_for_ns "${uuid}"
+		if [ $? -eq 1 ]; then
+			echo "FAIL"
+			rm "$(_nvme_def_file_path).$i"
+			break
+		fi
+
+		_remove_nvmet_ns "${def_subsysnqn}" "${i}"
+		rm "$(_nvme_def_file_path).$i"
+	}
+	done
+
+	_nvme_disconnect_subsys >> "${FULL}" 2>&1
+
+	_nvmet_target_cleanup
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/052.out b/tests/nvme/052.out
new file mode 100644
index 0000000..f2d186d
--- /dev/null
+++ b/tests/nvme/052.out
@@ -0,0 +1,2 @@ 
+Running nvme/052
+Test complete