Skip to content

Commit 93b766f

Browse files
igawkawasaki
authored andcommitted
nvme/060: add test nvme fabrics target resetting during I/O
Newer kernel support to reset the target via the debugfs. Add a new test case which exercises this interface. Reviewed-by: Chaitanya Kulkarni <[email protected]> Signed-off-by: Daniel Wagner <[email protected]> [Shin'ichiro: added local value declarations] Signed-off-by: Shin'ichiro Kawasaki <[email protected]>
1 parent 4dcef69 commit 93b766f

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

tests/nvme/060

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-3.0+
3+
# Copyright (C) 2025 Daniel Wagner, SUSE Labs
4+
#
5+
# Test nvme fabrics controller reset/disconnect/reconnect.
6+
7+
. tests/nvme/rc
8+
9+
DESCRIPTION="test nvme fabrics target reset"
10+
11+
requires() {
12+
_nvme_requires
13+
_have_loop
14+
_require_nvme_trtype tcp rdma fc
15+
_have_kernel_option NVME_TARGET_DEBUGFS
16+
}
17+
18+
set_conditions() {
19+
_set_nvme_trtype "$@"
20+
}
21+
22+
nvmet_debug_trigger_reset() {
23+
local nvmet_subsystem="$1"
24+
local dfs_path="${NVMET_DFS}/${nvmet_subsystem}"
25+
26+
find "${dfs_path}" -maxdepth 1 -type d -name 'ctrl*' -exec sh -c 'echo "fatal" > "$1/state"' _ {} \;
27+
}
28+
29+
nvmet_reset_loop() {
30+
while true; do
31+
nvmet_debug_trigger_reset "${def_subsysnqn}"
32+
sleep 2
33+
done
34+
}
35+
36+
test() {
37+
echo "Running ${TEST_NAME}"
38+
39+
_setup_nvmet
40+
41+
local reset_loop_pid i
42+
43+
_nvmet_target_setup
44+
45+
nvmet_reset_loop &
46+
reset_loop_pid=$!
47+
48+
# Reset the host in different states e.g when the host is in the
49+
# connected or connecting state.
50+
#
51+
# The target reset is triggered with an even number timeout, while the
52+
# host reconnects with an odd number timeout.
53+
for ((i = 0; i <= 5; i++)); do
54+
_nvme_connect_subsys --keep-alive-tmo 1 --reconnect-delay 1
55+
sleep 3
56+
_nvme_disconnect_subsys >> "$FULL" 2>&1
57+
done
58+
59+
{ kill "${reset_loop_pid}"; wait; } &> /dev/null
60+
61+
_nvmet_target_cleanup
62+
63+
echo "Test complete"
64+
}

tests/nvme/060.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Running nvme/060
2+
Test complete

0 commit comments

Comments
 (0)