xref: /spdk/test/nvmf/target/control_msg_list.sh (revision c6c1234de9e0015e670dd0b51bf6ce39ee0e07bd)
1#!/usr/bin/env bash
2#  SPDX-License-Identifier: BSD-3-Clause
3#  Copyright (C) 2024 Dell Inc, or its subsidiaries.
4#  All rights reserved.
5#
6
7testdir=$(readlink -f $(dirname $0))
8rootdir=$(readlink -f $testdir/../../..)
9source $rootdir/test/common/autotest_common.sh
10source $rootdir/test/nvmf/common.sh
11
12nvmftestinit
13nvmfappstart
14
15subnqn="nqn.2024-07.io.spdk:cnode0"
16perf="$SPDK_BIN_DIR/spdk_nvme_perf"
17
18# In-capsule data size smaller than the fabrics connect command (1024) forces usage of control_msg_list. With just one buffer next req must be queued.
19$rpc_py nvmf_create_transport "$NVMF_TRANSPORT_OPTS" --in-capsule-data-size 768 --control-msg-num 1
20$rpc_py nvmf_create_subsystem "$subnqn" -a
21$rpc_py bdev_malloc_create -b Malloc0 32 512
22$rpc_py nvmf_subsystem_add_ns "$subnqn" Malloc0
23$rpc_py nvmf_subsystem_add_listener "$subnqn" -t "$TEST_TRANSPORT" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT"
24
25# run multiple instanced at once to trigger shortage of the control_msg_list buffers
26"$perf" -c 0x2 -q 1 -o 4096 -w randread -t 1 -r "trtype:${TEST_TRANSPORT} adrfam:IPv4 traddr:${NVMF_FIRST_TARGET_IP} trsvcid:${NVMF_PORT}" &
27perf_pid1=$!
28"$perf" -c 0x4 -q 1 -o 4096 -w randread -t 1 -r "trtype:${TEST_TRANSPORT} adrfam:IPv4 traddr:${NVMF_FIRST_TARGET_IP} trsvcid:${NVMF_PORT}" &
29perf_pid2=$!
30"$perf" -c 0x8 -q 1 -o 4096 -w randread -t 1 -r "trtype:${TEST_TRANSPORT} adrfam:IPv4 traddr:${NVMF_FIRST_TARGET_IP} trsvcid:${NVMF_PORT}" &
31perf_pid3=$!
32
33wait $perf_pid1
34wait $perf_pid2
35wait $perf_pid3
36
37trap - SIGINT SIGTERM EXIT
38nvmftestfini
39