xref: /spdk/test/nvmf/target/abort_qd_sizes.sh (revision d7958dd1f7758c1c250f747739d122948f98264b)
1#!/usr/bin/env bash
2#  SPDX-License-Identifier: BSD-3-Clause
3#  Copyright (C) 2021 Intel Corporation
4#  All rights reserved.
5#
6
7testdir=$(readlink -f "$(dirname "$0")")
8rootdir=$(readlink -f "$testdir/../../../")
9
10# Set defaults we want to work with
11set -- "--transport=tcp" "--iso" "$@"
12
13source "$rootdir/test/common/autotest_common.sh"
14source "$rootdir/test/nvmf/common.sh"
15
16rabort() {
17	local trtype=$1
18	local adrfam=$2
19	local traddr=$3
20	local trsvcid=$4
21	local subnqn=$5
22
23	local qds qd
24	local target r
25
26	qds=(4 24 64)
27
28	for r in trtype adrfam traddr trsvcid subnqn; do
29		target=${target:+$target }$r:${!r}
30	done
31
32	for qd in "${qds[@]}"; do
33		"$SPDK_EXAMPLE_DIR/abort" \
34			-q "$qd" \
35			-w rw \
36			-M 50 \
37			-o 4096 \
38			-r "$target"
39	done
40}
41
42spdk_target() {
43	local name=spdk_target
44
45	rpc_cmd bdev_nvme_attach_controller -t pcie -a "$nvme" -b "$name"
46
47	rpc_cmd nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192
48	rpc_cmd nvmf_create_subsystem "$NVME_SUBNQN" -a -s "$NVMF_SERIAL"
49	rpc_cmd nvmf_subsystem_add_ns "$NVME_SUBNQN" "${name}n1"
50	rpc_cmd nvmf_subsystem_add_listener "$NVME_SUBNQN" -t "$TEST_TRANSPORT" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT"
51
52	rabort "$TEST_TRANSPORT" IPv4 "$NVMF_FIRST_TARGET_IP" "$NVMF_PORT" "$NVME_SUBNQN"
53
54	rpc_cmd nvmf_delete_subsystem "$NVME_SUBNQN"
55	rpc_cmd bdev_nvme_detach_controller "$name"
56
57	# Make sure we fully detached from the ctrl as vfio-pci won't be able to release the
58	# device otherwise - we can either wait a bit or simply kill the app. Since we don't
59	# really need it at this point, reap it but leave the net setup around. See:
60	# https://github.com/spdk/spdk/issues/2811
61	killprocess "$nvmfpid"
62}
63
64kernel_target() {
65	configure_kernel_target "$NVME_SUBNQN" "$(get_main_ns_ip)"
66	rabort "$TEST_TRANSPORT" IPv4 "$NVMF_INITIATOR_IP" "$NVMF_PORT" "$NVME_SUBNQN"
67	clean_kernel_target
68}
69
70nvmftestinit
71nvmfappstart -m 0xf
72
73trap 'process_shm --id $NVMF_APP_SHM_ID || :; nvmftestfini || :; clean_kernel_target' SIGINT SIGTERM EXIT
74
75mapfile -t nvmes < <(nvme_in_userspace)
76((${#nvmes[@]} > 0))
77
78nvme=${nvmes[0]}
79
80run_test "spdk_target_abort" spdk_target
81run_test "kernel_target_abort" kernel_target
82
83trap - SIGINT SIGTERM EXIT
84nvmftestfini
85