Spdk/test/unit/lib
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 accel: cleanup by getting rid of capabilties enum 2022-04-14 08:32:50 +00:00
bdev bdev/nvme: Set preferred I/O path in multipath mode 2022-05-05 07:11:24 +00:00
blob blob_ut: bs_opts initialized with wrong size 2022-02-02 08:25:02 +00:00
blobfs test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
dma dma: Update memory domain context structure 2021-10-20 22:55:52 +00:00
env_dpdk test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
event event: Add a user option to change the size of spdk_msg_mempool 2022-03-09 08:00:28 +00:00
ftl spelling: test 2021-12-03 08:13:22 +00:00
idxd idxd: Make many internal idxd_user functions take an idxd_user object 2022-04-20 08:20:45 +00:00
init spelling: test 2021-12-03 08:13:22 +00:00
ioat test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
iscsi ut: Use unit/lib/json_mock.c for stubs 2022-01-31 09:44:28 +00:00
json spelling: test 2021-12-03 08:13:22 +00:00
jsonrpc spelling: test 2021-12-03 08:13:22 +00:00
log test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
lvol lvol: lvol_get_xattr_value failure undetectable 2022-01-31 09:44:16 +00:00
notify test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme nvme_rdma: Wait until lingering qpair becomes quiet before completing disconnection 2022-04-18 18:35:29 +00:00
nvmf nvmf: make nacwu 0-based 2022-04-29 07:29:06 +00:00
reduce lib/reduce: Copy user's buffers if SGL is not supported 2022-03-31 09:34:52 +00:00
rpc ut: Use unit/lib/json_mock.c for stubs 2022-01-31 09:44:28 +00:00
scsi Lib/iSCSI: add the LUN Resize support 2022-01-20 07:56:23 +00:00
sock sock: introduce dynamic zerocopy according to data size 2022-04-28 07:29:28 +00:00
thread event: Add a user option to change the size of spdk_msg_mempool 2022-03-09 08:00:28 +00:00
util dif: enhance copy API to support block-aligned bounce_iov 2022-04-01 08:29:12 +00:00
vhost lib/vhost: move vhost_user related fields from spdk_vhost_dev 2022-04-15 07:49:32 +00:00
json_mock.c ut/json_mock: Add stubs for json_write_uint8 and _uint16 2022-01-31 09:44:28 +00:00
Makefile unittest/rpc: add rpc unittest 2021-09-06 09:55:33 +00:00