From cd87963823070a702d9a5ba86cd84f0f8bb48447 Mon Sep 17 00:00:00 2001 From: Yi Zhang Date: Fri, 13 Mar 2026 13:36:56 +0800 Subject: [PATCH] nvme/068: add new test for nvme subsystem-reset test Signed-off-by: Yi Zhang --- tests/nvme/068 | 49 ++++++++++++++++++++++++++++++++++++++++++++++ tests/nvme/068.out | 2 ++ tests/nvme/rc | 8 ++++++++ 3 files changed, 59 insertions(+) create mode 100755 tests/nvme/068 create mode 100644 tests/nvme/068.out diff --git a/tests/nvme/068 b/tests/nvme/068 new file mode 100755 index 00000000..dcc3da91 --- /dev/null +++ b/tests/nvme/068 @@ -0,0 +1,49 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2025 Yi Zhang +# +# Test NVMe subsystem-reset command +# +# Regression test for below two commits: +# 210b1f6576e8 nvme-pci: do not directly handle subsys reset fallout +# 0edb475ac0a7 nvme: fix PCIe subsystem reset controller state transition + +. tests/nvme/rc + +DESCRIPTION="Test NVMe subsystem-reset command" + +requires() { + _nvme_requires + _have_program nvme +} + +device_requires() { + _require_test_dev_is_nvme + _require_test_dev_support_subsystem_reset +} + +test_device() { + echo "Running ${TEST_NAME}" + + local ctrl_dev + + ctrl_dev=${TEST_DEV%n*} + + # Start nvme subsystem-reset operation + if ! nvme subsystem-reset "$ctrl_dev" >> "$FULL" 2>&1; then + echo "ERROR: subsystem-reset failed" + fi + + # Wait NVMe disk reinitialized + sleep 10 + + if [ ! -b "$TEST_DEV" ]; then + echo "ERROR: $TEST_DEV still not reinitialized after 10 seconds!" + fi + + # Start dd write/read operation to check the NVMe disk works as expected + dd if=/dev/urandom of="$TEST_DEV" count=1024 bs=1M status=none + dd if="$TEST_DEV" of=/dev/null count=1024 bs=1M status=none + + echo "Test complete" +} diff --git a/tests/nvme/068.out b/tests/nvme/068.out new file mode 100644 index 00000000..28407c63 --- /dev/null +++ b/tests/nvme/068.out @@ -0,0 +1,2 @@ +Running nvme/068 +Test complete diff --git a/tests/nvme/rc b/tests/nvme/rc index a8f80d8e..9e715fc3 100644 --- a/tests/nvme/rc +++ b/tests/nvme/rc @@ -99,6 +99,14 @@ _require_test_dev_support_sed() { return 1 } +_require_test_dev_support_subsystem_reset() { + if ! nvme show-regs "$TEST_DEV" -H | grep -q "NSSRS.*Yes"; then + SKIP_REASONS+=("$TEST_DEV doesn't support subsystem-reset operation") + return 1 + fi + return 0 +} + _require_nvme_cli_auth() { if ! nvme gen-dhchap-key --nqn nvmf-test-subsys > /dev/null 2>&1 ; then SKIP_REASONS+=("nvme gen-dhchap-key command missing")