[PATCH blktests] nvme/070: add multipath command effects log lifetime test

Yao Sang <[email protected]>
Newsgroups org.kernel.vger.linux-block
Message-ID <[email protected]>
Add a regression test for namespace head command effects log lifetime.

Create a two-path loop subsystem, remove the first controller, and issue
an I/O passthrough command through the namespace-head character device.
Kernels that keep the command effects log pointer in the shared namespace
head report the stale access through KASAN.

Signed-off-by: Yao Sang <[email protected]>
---
 tests/nvme/070     | 57 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/nvme/070.out |  2 ++
 2 files changed, 59 insertions(+)
 create mode 100755 tests/nvme/070
 create mode 100644 tests/nvme/070.out

diff --git a/tests/nvme/070 b/tests/nvme/070
new file mode 100755
index 0000000..39195be
--- /dev/null
+++ b/tests/nvme/070
@@ -0,0 +1,57 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2026 Yao Sang <[email protected]>
+#
+# Test NVMe multipath command effects log lifetime.
+
+. tests/nvme/rc
+
+nvme_trtype=loop
+
+DESCRIPTION="test NVMe multipath command effects log lifetime"
+QUICK=1
+CHECK_DMESG=1
+
+requires() {
+	_nvme_requires
+	_have_loop
+	_have_module_param_value nvme_core multipath Y
+	_require_nvme_trtype_is_loop
+	_have_kernel_options KASAN
+}
+
+test() {
+	echo "Running ${TEST_NAME}"
+
+	local first_ctrl
+	local ngdev
+	local ns
+	local nsid
+	local -a ports
+
+	_setup_nvmet
+	_nvmet_target_setup --ports 2
+
+	_get_nvmet_ports "${def_subsysnqn}" ports
+
+	_nvme_connect_subsys --port "${ports[0]}"
+	first_ctrl=$(_find_nvme_dev "${def_subsysnqn}")
+
+	_nvme_connect_subsys --port "${ports[1]}"
+
+	ns=$(_find_nvme_ns "${def_subsys_uuid}")
+	nsid=$(cat "/sys/block/${ns}/nsid")
+	ngdev="${ns/nvme/ng}"
+
+	_nvme_disconnect_ctrl "${first_ctrl}"
+
+	if ! nvme io-passthru "/dev/${ngdev}" --opcode 0 \
+		--namespace-id "${nsid}" >> "${FULL}" 2>&1; then
+		echo "io-passthru failed"
+	fi
+
+	_nvme_disconnect_subsys >> "${FULL}" 2>&1
+	_nvmet_target_cleanup
+
+	echo "Test complete"
+}
diff --git a/tests/nvme/070.out b/tests/nvme/070.out
new file mode 100644
index 0000000..b765a28
--- /dev/null
+++ b/tests/nvme/070.out
@@ -0,0 +1,2 @@
+Running nvme/070
+Test complete
-- 
2.25.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.