Spdk/module/bdev
yupeng df80e8ffc6 bdev/raid: stop the raid bdev in raid_bdev_destruct
The raid bdev may receive IO requests after the raid layer
invokes spdk_bdev_unregister function. This patch moves the
raid_bdev->module->stop to the raid_bdev_destruct function.
Then there will be no IO after the raid_bdev->module->stop
is invoked.
Below is a way to reproduce this issue:
(1) create a malloc bdev
sudo ./scripts/rpc.py bdev_malloc_create --name malloc0 128 4096
(2) create a concat bdev base on the malloc bdev
sudo ./scripts/rpc.py bdev_raid_create --name concat0 \
--raid-level concat --base-bdevs malloc0 --strip-size-kb 4
(3) create a lvstore base on the concat bdev
sudo ./scripts/rpc.py bdev_lvol_create_lvstore \
--cluster-sz 4194304 --clear-method unmap concat0 lvs0
(4) remove the concat bdev
sudo ./scripts/rpc.py bdev_raid_delete concat0
In the step(4), the spdk app will crash because an IO request
is sent to the concat bdev after the concat_stop is invoked.

Signed-off-by: Peng Yu <yupeng0921@gmail.com>
Change-Id: I76d6964ee9528d4590ed86e9c5c28d53e85da32f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12221
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-04-13 08:33:19 +00:00
..
aio bdev/aio: Use bdev_open_ext() for rescan instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
compress bdev/compress: Update error handling in IO submission path 2022-03-31 09:34:52 +00:00
crypto module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
delay bdev/delay: Find delay_bdev directly from g_delay_node list 2022-04-04 09:57:43 +00:00
error bdev/error: Use bdev_open_ext() to inject error instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
ftl module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
gpt vbdev_gpt: Report memory domains 2022-04-04 09:57:56 +00:00
iscsi module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
lvol so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
malloc module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
null bdev/null: Use bdev_open_ext() for resize instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
nvme bdev/nvme: Remove ctrlr from nvme_ctrlr_channel 2022-04-07 07:23:56 +00:00
ocf ocf/rpc: Add RPC method to manage sequential cutoff 2022-04-01 08:31:32 +00:00
passthru module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
pmem bdev/pmem: add support for IO_TYPE_FLUSH 2022-04-11 07:43:23 +00:00
raid bdev/raid: stop the raid bdev in raid_bdev_destruct 2022-04-13 08:33:19 +00:00
rbd bdev/rbd: Use bdev_open_ext() for resize instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
split bdev/split: Use bdev_open_ext() for creation instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
uring module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
virtio module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
zone_block module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
Makefile bdev: move bdev_rpc library contents 2020-09-25 11:43:42 +00:00