Spdk/test/unit/lib/bdev
Shuhei Matsumoto 40105ad40f bdev/nvme: Aggregate multiple ctrlrs into a single bdev ctrlr
This patch enables us to aggrete multiple ctrlrs in the same NVM
subsystem into a single bdev ctrlr to create multipath.

This patch has a critical limitation that ctrlrs which are aggregated
need to have no namespace. Hence any nvme bdev is not created.
However it will be removed in the next patch.

The design is as follows.

A nvme_bdev_ctrlr is created to aggregate multiple nvme_ctrlrs in
the same NVM subsystem. The name of the nvme_ctrlr is changed to be
the name of the nvme_bdev_ctrlr.

NVMe bdev module has both the failover feature and the multipath
feature now. To choose which of failover or multipath to use, add an new
parameter multipath to the RPC bdev_nvme_attach_controller.

When we attach a new trid to the existing nvme_bdev_ctrlr, we use the failover
feature if multipath is false, we use the multipath feature if multipath is
false.

nvme_bdev_ctrlr has a list for nvme_ctrlr and it is guarded by the
global mutex. Callers can query nvme_ctrlrs from a nvme_bdev_ctrlr via
trid as a key. nvme_bdev_ctrlr is not registered as io_device.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I20571bf89a65d53a00fb77236ad1b193e88b8153
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8119
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2022-06-30 13:32:25 -04:00
..
bdev_zone.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
bdev.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
compress.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
crypto.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
gpt test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
mt test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme bdev/nvme: Aggregate multiple ctrlrs into a single bdev ctrlr 2022-06-30 13:32:25 -04:00
part.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
pmem lib/bdev: added spdk_bdev_module_fini_done() 2021-08-23 08:49:56 +00:00
raid test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
scsi_nvme.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
vbdev_lvol.c bdev/lvol: unload empty lvs during fini_start 2021-08-23 08:49:56 +00:00
vbdev_zone_block.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
Makefile ut/bdev_ocssd: Move bdev_ocssd_ut from bdev directory to bdev/nvme directory 2021-02-09 11:29:53 +00:00