Spdk/test
Shuhei Matsumoto 22b77a3c80 bdev/nvme: Set preferred I/O path in multipath mode
If we specify a preferred path manually for each NVMe bdev, we will
be able to realize a simple static load balancing and make the failover
more controllable in the multipath mode.

The idea is to move I/O path to the NVMe-oF controller to the head of
the list and then clear the I/O path cache for each NVMe bdev channel.
We can set the I/O path to the I/O path cache directly but it must be
conditional and make the code very complex. Hence, let find_io_path() do
that.

However, a NVMe bdev channel may be acquired after setting the preferred
path. To cover such case, sort the nvme_ns list of the NVMe bdev too.

This feature supports only multipath mode. The NVMe bdev module supports
failover mode too. However, to support the latter, the new RPC needs to
have trid as parameters and the code and the usage will be come very
complex. Add a note for such limitation.

To verify one by one exactly, add unit test.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Ia51c74f530d6d7dc1f73d5b65f854967363e76b0
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12262
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: <tanl12@chinatelecom.cn>
Reviewed-by: GangCao <gang.cao@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-05-05 07:11:24 +00:00
..
accel_engine test/accel_engine: add more test cases 2021-09-01 07:34:02 +00:00
app llvm_nvme_fuzz: add -N option to specify data input file 2022-05-05 07:11:17 +00:00
bdev test/bdevio: fix bytes vs blocks => early return of test 2022-05-03 16:09:25 +00:00
blobfs test/blobfs: update rocksdb version 2021-12-14 13:23:30 +00:00
blobstore blob: blobcli should use hex for blob IDs 2022-02-01 20:05:13 +00:00
common pkgdep/git: update qemu branch 2022-04-29 07:29:22 +00:00
compress test/nvmf: use recommended nvmf_create_subsystem rpc 2021-05-20 15:00:22 +00:00
cpp_headers queue_extras: use SPDK_CONTAINEROF 2019-10-07 15:06:01 +00:00
dd test/dd: Simple tests utilizing uring RPCs 2021-12-20 08:46:13 +00:00
dma bdev: pull/push data if bdev doesn't support 2022-04-04 09:57:56 +00:00
dpdk_memory_utility check_format: Ignore shellcheck's SC2128 and SC2178 directives 2021-06-30 22:43:05 +00:00
env env/memory: fix unregistration of memory after memory registration issue 2022-03-09 09:06:30 +00:00
event scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
external_code autobuild.sh: do not use sudo to run make in external code test 2022-03-14 08:43:50 +00:00
ftl autotest: Skip use of any zoned nvme devices 2021-12-06 08:34:46 +00:00
fuzz nvme_fuzz: pass trid on command line only 2021-09-27 10:55:34 +00:00
interrupt scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
ioat build: Example applications build to build/example 2020-06-15 15:27:16 +00:00
iscsi_tgt hello_sock: Add cli params to enable/disable zcopy 2022-05-04 08:03:39 +00:00
json_config scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
lvol spelling: test 2021-12-03 08:13:22 +00:00
make so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
nvme hw_hotplug: use exit instead of return 2022-05-02 18:55:14 +00:00
nvmf test/filesystem: nvme device storage size verifying 2022-05-04 08:02:52 +00:00
ocf ocf/rpc: Add RPC method to manage sequential cutoff 2022-04-01 08:31:32 +00:00
openstack test/openstack: restart whole devstack before tests 2021-12-23 08:36:21 +00:00
pmem spelling: test 2021-12-03 08:13:22 +00:00
rpc scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
rpc_client build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
rpc_plugins autotest: Use rpc_cmd() for rpc plugin-based tests 2021-04-02 08:22:42 +00:00
scheduler test/scheduler: Don't fail if cgroups don't exist in move_cgroup_procs() 2022-03-09 08:02:55 +00:00
setup scripts/setup: Skip devices which have any valid data present 2022-04-06 07:21:17 +00:00
spdkcli test/nvmf: Remove support for soft-RoCE setups 2022-03-22 16:01:54 +00:00
thread test/thread: Add poller_perf to evaluate cost to run poller 2021-08-20 07:29:42 +00:00
unit bdev/nvme: Set preferred I/O path in multipath mode 2022-05-05 07:11:24 +00:00
vfio_user test/vfio_user: Remove subsystem listener while VM is connected, issue #2246 autotest. 2022-02-18 00:00:22 +00:00
vhost test/vhost: Fix vhost migration tc1 test 2022-04-15 08:24:59 +00:00
vmd test: replace VMD_WHITELIST with VMD_ALLOWED 2020-12-03 09:41:07 +00:00
Makefile test/dma: Add functional test to verify DMA 2021-09-24 07:37:45 +00:00
spdk_cunit.h test: remove leftover spdk_cunit declaration 2018-07-06 22:47:56 +00:00