From 8c969cf018f3c09f919b502adbfd7e23d02167c4 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Tue, 9 Apr 2019 09:25:54 +0900 Subject: [PATCH] bdev/raid: Consolidate spdk_io_device_unregister() calls in destruction paths This is a preparation to add completion callback to the destroy_raid_bdev RPC. spdk_io_device_unregister should be called after spdk_bdev_unregister because IO channel should be terminated after all open descriptors are closed. This patch follows the practices of other bdev modules. Change-Id: I6003edf0a6f6b2b235bf66f4b81bb0c2b855ae14 Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450570 Reviewed-by: Changpeng Liu Reviewed-by: Jim Harris Reviewed-by: Darek Stojaczyk Tested-by: SPDK CI Jenkins --- lib/bdev/raid/bdev_raid.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bdev/raid/bdev_raid.c b/lib/bdev/raid/bdev_raid.c index b33f2c87d..c35f9dd4a 100644 --- a/lib/bdev/raid/bdev_raid.c +++ b/lib/bdev/raid/bdev_raid.c @@ -242,9 +242,10 @@ raid_bdev_destruct(void *ctxt) TAILQ_REMOVE(&g_raid_bdev_configured_list, raid_bdev, state_link); raid_bdev->state = RAID_BDEV_STATE_OFFLINE; TAILQ_INSERT_TAIL(&g_raid_bdev_offline_list, raid_bdev, state_link); - spdk_io_device_unregister(raid_bdev, NULL); } + spdk_io_device_unregister(raid_bdev, NULL); + if (raid_bdev->num_base_bdevs_discovered == 0) { /* Free raid_bdev when there are no base bdevs left */ SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid bdev base bdevs is 0, going to free all in destruct\n"); @@ -1732,7 +1733,6 @@ raid_bdev_deconfigure(struct raid_bdev *raid_bdev) TAILQ_INSERT_TAIL(&g_raid_bdev_offline_list, raid_bdev, state_link); SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid bdev state chaning from online to offline\n"); - spdk_io_device_unregister(raid_bdev, NULL); spdk_bdev_unregister(&raid_bdev->bdev, NULL, NULL); }