Spdk/lib/bdev
Shuhei Matsumoto a3004632e2 bdev/raid: Change construct_raid_bdev RPC to be consistent to other bdev modules
Change the behavior of construct_raid_bdev RPC to be consistent with
other bdev modules.

Create a config of raid bdev first. Then create a raid bdev based
on the config.

If both succeed, the config and the raid bdev are not removed even if
any failure occur later in construct_raid_bdev RPC. Otherwise, both
are removed and return failure.

During iteration of adding base bdevs in construct_raid_bdev RPC,
- skip any nonexistent bdev and move to the next base bdev.
- if adding any base bdev fails, move to the next bdev.
- if adding base bdevs don't fail but any base bdev doesn't exist,
  the raid bdev is in the configuring state and return success.
- if adding base bdev fails, the raid bdev is in the configuring state
  and return failure.
- if all adding base bdevs succeed, configure the raid bdev. If configuring
  the raid bdev fails, move the raid bdev to the offline state and return
  failure. If configuring the raid bdev succeed, return success.

check_and_remove_raid_bdev() becomes unused in raid_bdev_rpc.c but
is still necessary in UT. Hence move this function to UT.

In UT, finding a raid bdev config by name becomes necessary. Hence
factor out the iteration to a function and use the function in UT.

Change-Id: Ifa36967bdc987d97030e3a4e36684cb37b329d4e
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/423622
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Kunal Sablok <kunal.sablok@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2018-09-11 19:00:05 +00:00
..
aio thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
error bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
gpt bdev/gpt: vbdev_gpt_examine: no need to read gpt if bdev is too small 2018-09-06 16:53:36 +00:00
iscsi iscsi: free lun after bdev_destruct_done returns 2018-09-10 21:08:39 +00:00
lvol bdev/lvol: _create_lvol_disk(): unregister disk if something wrong 2018-09-05 21:57:55 +00:00
malloc bdev/malloc: remove blocklen power of 2 restriction 2018-08-15 17:36:00 +00:00
null thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
nvme thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
passthru thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
pmem thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
raid bdev/raid: Change construct_raid_bdev RPC to be consistent to other bdev modules 2018-09-11 19:00:05 +00:00
rbd bdev/rbd: fix memory leak and spdk_io_device_register fail 2018-09-05 19:26:24 +00:00
rpc bdev: remove get_bdevs_config RPC 2018-09-05 19:46:17 +00:00
split bdev/part: use internal buffers for part and product name. 2018-08-30 22:08:56 +00:00
virtio thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
bdev.c bdev: call spdk_bdev_io_get_buf before splitting 2018-09-07 14:59:21 +00:00
Makefile bdev: add raid bdev module 2018-07-16 20:50:40 +00:00
part.c thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
scsi_nvme.c bdev: move error union to internal spdk_bdev_io struct 2018-06-26 20:04:07 +00:00
vtune.c bdev: disable new GCC 7 warning in VTune code 2018-03-19 15:58:15 -04:00