From patchwork Tue Mar 18 10:38:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 14020765 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 500072080C9 for ; Tue, 18 Mar 2025 10:39:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294359; cv=none; b=oKmprGgURhbXVSl89OZp9TPgGCkI88fHZxRVQW0D88NwfUI2jSUIHcjaHagMwxvyDTAxKwngx4OZU92AWMn1uAgK8zaVbbeVxNRNTwuerkWa91byvs0tuDa2UotYHmh3KvzaibFEdUat0KnAKRGbXReHM8xQ/FlOqozBKbZIkUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294359; c=relaxed/simple; bh=r7jj1Iz3OaQlWfOS8KfVwRN5xuHs4IMQmFDHGZqZI+k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UU6EEN+LJS/IY0+Zkusn8v8NCzt/MyC/4ICpjECIIURsBMajUsvM6KFwx5BxmQfdCau30lKrJG7i/glnGTKmBL4wXJ5kgc6ts7BHSnAWHB/f2xGqLLzfsqWU3y2/QJEo7XFECo3oV3IF8AM1Aq4ld+TxT0QK1Gwq1PTAZfPIrww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BOfzPjg1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BOfzPjg1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7244EC4CEEE; Tue, 18 Mar 2025 10:39:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742294358; bh=r7jj1Iz3OaQlWfOS8KfVwRN5xuHs4IMQmFDHGZqZI+k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BOfzPjg1KfVl2ibzrldjDb1Jjlmlwa7GK6YcDWzsFrzz3Pcr39X6PCDEnjibfAXv4 NUY14FYk2hcZciM9xvW1f+e5oavg/WNK0SE5F/G2WmXN/Cxz6A2qCzPrSCqMD5m32z 4Etnq6BItcdpIDzkX2afHYaKTMXwznDrs2gv8HjhjyMCG63isIzvbMVVol7W7Xx3P8 wG2rfWAWVOXQdWDOgmosZvf8sWmZaKD6SHHm94c2DzR3ZulLWK6o/S1S64StcOYV6A yD6/E1bWc7kRa7IBholpCR1+lpnomG7iwlGBMDot1ZPSTZwjE23esIBCbiNkOFSSv7 3SMcQ/LdsDmfA== From: Daniel Wagner Date: Tue, 18 Mar 2025 11:38:59 +0100 Subject: [PATCH blktests 1/3] common/nvme: add debug nvmet path variable Precedence: bulk X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250318-test-target-v1-1-01e01142cf2b@kernel.org> References: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> In-Reply-To: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> To: Shin'ichiro Kawasaki Cc: linux-block@vger.kernel.org, Daniel Wagner X-Mailer: b4 0.14.2 Signed-off-by: Daniel Wagner Reviewed-by: Chaitanya Kulkarni --- common/nvme | 1 + 1 file changed, 1 insertion(+) diff --git a/common/nvme b/common/nvme index 3761329d39e3763136f60a4751ad15de347f6e9b..a3176ecff2e5fbc0fbe09460c21e9f50c68d3bce 100644 --- a/common/nvme +++ b/common/nvme @@ -26,6 +26,7 @@ nvmet_blkdev_type=${nvmet_blkdev_type:-"device"} NVMET_BLKDEV_TYPES=${NVMET_BLKDEV_TYPES:-"device file"} nvme_target_control="${NVME_TARGET_CONTROL:-}" NVMET_CFS="/sys/kernel/config/nvmet/" +NVMET_DFS="/sys/kernel/debug/nvmet/" nvme_trtype=${nvme_trtype:-} nvme_adrfam=${nvme_adrfam:-} From patchwork Tue Mar 18 10:39:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 14020766 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DBCC31F4E38 for ; Tue, 18 Mar 2025 10:39:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294361; cv=none; b=W0N4nPjxMd5+Diy0t3ZGZM9DtLyQF5mBAo1+hdCm3saHoY+AJvZY6s9cUeVfQc8Bq6QvsQP+bpURbuDCU3HlpdAoFCJ9gwkMln+a1C3ovVQKMf67wQRjbjf2I30c8kyouDk04csBaVCF24h3kcDiDSixor1N5J8ADkaRgGmAvgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294361; c=relaxed/simple; bh=zQn/rn0MHJPSGxwcsZKraRouhAtkHB5PCZ15cfQAAdY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ij9T0wcv75OCFyLdP8/j2HYh0/1HAE8CyLBSB7BMvH1FgnYUhloKqFZo7VSJTkHRC5yxJa1mOGyomgbKAfRaB1eIM6RFThKRxd45RuMGfYY85tlKMIFoFBZPpHiXUopH7xX7oUJ6Bwjn5XAAP0gpe2V7F6zK1WosZ2f4O9v0AHk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MkSSeuwr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MkSSeuwr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EB1BCC4CEDD; Tue, 18 Mar 2025 10:39:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742294361; bh=zQn/rn0MHJPSGxwcsZKraRouhAtkHB5PCZ15cfQAAdY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MkSSeuwrFQRLaWx1TWWQd+ospVOWygN601udmTW7zD2UdFMCMQ1kCmKnNyHyvsUKZ n7jCUK4GFpOmT5CxghpPnMNW641XaEbSRS07yqCgX1Qdcfnzfmshrc2P7KP27V7Q4l 68ZgZv+7YRa1KWyDJOBr9puE+/m4BuJcYVKeU1II3WhqH+S4AE0QlWFnuode4HbX0c +hleBgIPwwrGGpKfsKAOodp9lXccSfnzHy3aFnKEfro4S40N7Fgch9DII08QxtCOZL 0d9LMIcLVXjw9/O7F5q4v5zA8ku6as17pFCyli8y5bOM4ZOz02wAwiFcFPzc3AXqzx +Kd4FB6K+67Fg== From: Daniel Wagner Date: Tue, 18 Mar 2025 11:39:00 +0100 Subject: [PATCH blktests 2/3] nvme/060: add test nvme fabrics target resetting during I/O Precedence: bulk X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250318-test-target-v1-2-01e01142cf2b@kernel.org> References: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> In-Reply-To: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> To: Shin'ichiro Kawasaki Cc: linux-block@vger.kernel.org, Daniel Wagner X-Mailer: b4 0.14.2 Newer kernel support to reset the target via the debugfs. Add a new test case which exercises this interface. Signed-off-by: Daniel Wagner Reviewed-by: Chaitanya Kulkarni --- tests/nvme/060 | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/nvme/060.out | 2 ++ 2 files changed, 90 insertions(+) diff --git a/tests/nvme/060 b/tests/nvme/060 new file mode 100755 index 0000000000000000000000000000000000000000..16a3c0d20274428ae175693109c694f42004a619 --- /dev/null +++ b/tests/nvme/060 @@ -0,0 +1,88 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2025 Daniel Wagner, SUSE Labs +# +# Test nvme fabrics controller reset/disconnect/reconnect operation during I/O +# This test is somewhat similar to test 032 but for fabrics controllers. + +. tests/nvme/rc + +DESCRIPTION="test nvme fabrics target resetting during I/O" + +requires() { + _nvme_requires + _have_loop + _have_fio + _require_nvme_trtype_is_fabrics +} + +set_conditions() { + _set_nvme_trtype "$@" +} + +nvmet_debug_trigger_reset() { + local nvmet_subsystem="$1" + local dfs_path="${NVMET_DFS}/${nvmet_subsystem}" + + find "${dfs_path}" -maxdepth 1 -type d -name 'ctrl*' -exec sh -c 'echo "fatal" > "$1/state"' _ {} \; +} + +nvmf_wait_for_state() { + local def_state_timeout=5 + local subsys_name="$1" + local state="$2" + local timeout="${3:-$def_state_timeout}" + local nvmedev + local state_file + local start_time + local end_time + + nvmedev=$(_find_nvme_dev "${subsys_name}") + state_file="/sys/class/nvme-fabrics/ctl/${nvmedev}/state" + + start_time=$(date +%s) + while ! grep -q "${state}" "${state_file}"; do + sleep 1 + end_time=$(date +%s) + if (( end_time - start_time > timeout )); then + echo "expected state \"${state}\" not " \ + "reached within ${timeout} seconds" + return 1 + fi + done + + return 0 +} + +nvmet_reset_loop() { + while true; do + nvmet_debug_trigger_reset "${def_subsysnqn}" + sleep 2 + done +} + +test() { + echo "Running ${TEST_NAME}" + + _setup_nvmet + + _nvmet_target_setup + + nvmet_reset_loop & + fio_pid=$! + + # Try to trigger resets when the host is in different states connected, + # or connecting by calling target reset with an even number and the + # reconnect attempt with an uneven timeout. + for ((i = 0; i <= 5; i++)); do + _nvme_connect_subsys --keep-alive-tmo 1 --reconnect-delay 1 + sleep 3 + _nvme_disconnect_subsys >> "$FULL" 2>&1 + done + + { kill "${fio_pid}"; wait; } &> /dev/null + + _nvmet_target_cleanup + + echo "Test complete" +} diff --git a/tests/nvme/060.out b/tests/nvme/060.out new file mode 100644 index 0000000000000000000000000000000000000000..517ff2dfcfd41c4088991e669af9fef52bde570b --- /dev/null +++ b/tests/nvme/060.out @@ -0,0 +1,2 @@ +Running nvme/060 +Test complete From patchwork Tue Mar 18 10:39:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 14020767 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AFC92063EA for ; Tue, 18 Mar 2025 10:39:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294364; cv=none; b=c/yB7GT6dIK379h7nMtOuT2Xa59oKm1cZ+oO7tkOxiYMbMYLbqll6DUh3gJ16jhW2GAM7SY6lKxCat3XlLswbVHpcq0vncOnMqAFtUipq8xsmQprcyNvbJplvCMpehYrKzjTqvgvr0JscTZ1KyHtU0L5SoGldad3d1kv8591cts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742294364; c=relaxed/simple; bh=lat+6NhuDdq1mjanFRrAUQ8SY0fhKvWRh4DdhV+sxIM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ft8XPk9mzVq6suUxC7MGQ1bfb2m44hAsPXC+QvoI/WDDzMohL4titHfe8h91HnVPzYCZyOE3yYGJ32d9ri5m7QSN+Uqsp95PBkKjP549Vycwb+3kuRqZOxyN4KMhoIIW/yPTAI3Pd1+DUADrQiuY77InnvMvlkRhOxY6W3DNA3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R+V2e0Zc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="R+V2e0Zc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 72EC6C4CEDD; Tue, 18 Mar 2025 10:39:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742294363; bh=lat+6NhuDdq1mjanFRrAUQ8SY0fhKvWRh4DdhV+sxIM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R+V2e0ZcB4eRUZBLmVa0bmDJeGRapXJJj9t14swg0R1uEznzgryuuKtfrL2eAiVkW Tilk7uxYx45s4wlvr4Jm7Ad0EZcUCO+NxqhC0s5Yo6soIISdHrEmtuHSBv5eGC7ys3 1ZD2EEVygQmWuAHuCQE0HY+0T3naXY+NI86cCU/Ztgp3IUVCE/1ThWxGvCzCWZRYSw c4fxYkO5sNocDQzEI/k0+EW2ptUouBPm/xiZURS1jIPlfrgW9IdNCT5YLyAijU7ru8 R1t3NMwDFEI3XAvIZFeV4vaM7JmtiS+WL8Dec5sa8WfudTcUMXkPbakDQwQ3yM3YIW WrqOOZlLWzw7g== From: Daniel Wagner Date: Tue, 18 Mar 2025 11:39:01 +0100 Subject: [PATCH blktests 3/3] nvme/061: add test teardown and setup fabrics target during I/O Precedence: bulk X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250318-test-target-v1-3-01e01142cf2b@kernel.org> References: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> In-Reply-To: <20250318-test-target-v1-0-01e01142cf2b@kernel.org> To: Shin'ichiro Kawasaki Cc: linux-block@vger.kernel.org, Daniel Wagner X-Mailer: b4 0.14.2 Add a new test case which forcefully removes the target and setup it again. Signed-off-by: Daniel Wagner Reviewed-by: Chaitanya Kulkarni --- tests/nvme/061 | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/nvme/061.out | 21 ++++++++++++ 2 files changed, 120 insertions(+) diff --git a/tests/nvme/061 b/tests/nvme/061 new file mode 100755 index 0000000000000000000000000000000000000000..b7a9ca216e6b71db209e80dc69dfd934618b54c2 --- /dev/null +++ b/tests/nvme/061 @@ -0,0 +1,99 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2025 Daniel Wagner, SUSE Labs +# +# Test if the host keeps running IO when the target is forcefully removed and +# recreated. + +. tests/nvme/rc + +DESCRIPTION="test teardown and setup fabrics target during I/O" +TIMED=1 + +requires() { + _nvme_requires + _have_loop + _have_fio + _require_nvme_trtype_is_fabrics +} + +set_conditions() { + _set_nvme_trtype "$@" +} + +nvmf_wait_for_state() { + local def_state_timeout=5 + local subsys_name="$1" + local state="$2" + local timeout="${3:-$def_state_timeout}" + local nvmedev + local state_file + local start_time + local end_time + + nvmedev=$(_find_nvme_dev "${subsys_name}") + state_file="/sys/class/nvme-fabrics/ctl/${nvmedev}/state" + + start_time=$(date +%s) + while ! grep -q "${state}" "${state_file}"; do + sleep 1 + end_time=$(date +%s) + if (( end_time - start_time > timeout )); then + echo "expected state \"${state}\" not " \ + "reached within ${timeout} seconds" + return 1 + fi + done + + return 0 +} + +test() { + echo "Running ${TEST_NAME}" + + _setup_nvmet + + local ns + + _nvmet_target_setup + + local connect_args="" + + if [[ "${nvme_trtype}" == "fc" ]]; then + connect_args="--ctrl-dev-loss 0" + fi + + _nvme_connect_subsys --keep-alive-tmo 1 --reconnect-delay 1 + + ns=$(_find_nvme_ns "${def_subsys_uuid}") + + _run_fio_rand_io --filename="/dev/${ns}" \ + --group_reporting \ + --time_based --runtime=1d &> /dev/null & + fio_pid=$! + sleep 1 + + nvmedev=$(_find_nvme_dev "${def_subsysnqn}") + state_file="/sys/class/nvme-fabrics/ctl/${nvmedev}/state" + for ((i = 0; i <= 5; i++)); do + echo "iteration $i" + + _nvmet_target_cleanup + + nvmf_wait_for_state "${def_subsysnqn}" "connecting" || return 1 + echo "state: $(cat $state_file)" + + _nvmet_target_setup + + nvmf_wait_for_state "${def_subsysnqn}" "live" || return 1 + echo "state: $(cat $state_file)" + done + + { kill "${fio_pid}"; wait; } &> /dev/null + + _nvme_disconnect_subsys + + _nvmet_target_cleanup + + echo "Test complete" +} diff --git a/tests/nvme/061.out b/tests/nvme/061.out new file mode 100644 index 0000000000000000000000000000000000000000..75516abdac005854c2be165005c076ef8891c518 --- /dev/null +++ b/tests/nvme/061.out @@ -0,0 +1,21 @@ +Running nvme/061 +iteration 0 +state: connecting +state: live +iteration 1 +state: connecting +state: live +iteration 2 +state: connecting +state: live +iteration 3 +state: connecting +state: live +iteration 4 +state: connecting +state: live +iteration 5 +state: connecting +state: live +disconnected 1 controller(s) +Test complete