[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