bdev/raid: Consolidate transition to offline when raid bdev configure failed

When raid bdev goes to offline, manual removal of raid bdev may be
required. This patch tries to highlight paths to transit to offline
when configuring raid bdev failed.

Change-Id: I394984691fdf1d270d4e107e3131b677b42af49e
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/421205
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Kunal Sablok <kunal.sablok@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Shuhei Matsumoto 2018-08-07 09:03:30 +09:00 committed by Ben Walker
parent 2b3abb2a33
commit 924a099540

View File

@ -1273,10 +1273,7 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)
* have same blocklen
*/
SPDK_ERRLOG("Blocklen of various bdevs not matching\n");
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, link_specific_list);
TAILQ_INSERT_TAIL(&g_spdk_raid_bdev_offline_list, raid_bdev, link_specific_list);
return -1;
goto offline;
}
}
@ -1284,10 +1281,7 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)
raid_bdev_gen->name = strdup(raid_bdev->raid_bdev_config->name);
if (!raid_bdev_gen->name) {
SPDK_ERRLOG("Unable to allocate name for raid\n");
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, link_specific_list);
TAILQ_INSERT_TAIL(&g_spdk_raid_bdev_offline_list, raid_bdev, link_specific_list);
return -1;
goto offline;
}
raid_bdev_gen->product_name = "Pooled Device";
raid_bdev_gen->write_cache = 0;
@ -1324,10 +1318,7 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)
*/
SPDK_ERRLOG("Unable to register pooled bdev\n");
spdk_io_device_unregister(raid_bdev, NULL);
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, link_specific_list);
TAILQ_INSERT_TAIL(&g_spdk_raid_bdev_offline_list, raid_bdev, link_specific_list);
return -1;
goto offline;
}
SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid bdev generic %p\n", raid_bdev_gen);
TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, link_specific_list);
@ -1337,6 +1328,12 @@ raid_bdev_configure(struct raid_bdev *raid_bdev)
}
return 0;
offline:
raid_bdev->state = RAID_BDEV_STATE_OFFLINE;
TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, link_specific_list);
TAILQ_INSERT_TAIL(&g_spdk_raid_bdev_offline_list, raid_bdev, link_specific_list);
return -1;
}
/*