diff --git a/lib/bdev/raid/bdev_raid.c b/lib/bdev/raid/bdev_raid.c index 247998408..4bc52d787 100644 --- a/lib/bdev/raid/bdev_raid.c +++ b/lib/bdev/raid/bdev_raid.c @@ -1360,8 +1360,7 @@ raid_bdev_configure(struct raid_bdev *raid_bdev) * have same blocklen */ SPDK_ERRLOG("Blocklen of various bdevs not matching\n"); - rc = -EINVAL; - goto offline; + return -EINVAL; } } @@ -1403,13 +1402,10 @@ raid_bdev_configure(struct raid_bdev *raid_bdev) raid_bdev->bdev.name); rc = spdk_bdev_register(raid_bdev_gen); if (rc != 0) { - /* - * If failed to register raid bdev to bdev layer, make raid bdev offline - * and add to offline list - */ - SPDK_ERRLOG("Unable to register pooled bdev\n"); + SPDK_ERRLOG("Unable to register pooled bdev and stay at configuring state\n"); spdk_io_device_unregister(raid_bdev, NULL); - goto offline; + raid_bdev->state = RAID_BDEV_STATE_CONFIGURING; + return rc; } SPDK_DEBUGLOG(SPDK_LOG_BDEV_RAID, "raid bdev generic %p\n", raid_bdev_gen); TAILQ_REMOVE(&g_spdk_raid_bdev_configuring_list, raid_bdev, state_link); @@ -1419,12 +1415,6 @@ 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, state_link); - TAILQ_INSERT_TAIL(&g_spdk_raid_bdev_offline_list, raid_bdev, state_link); - return rc; } /* diff --git a/lib/bdev/raid/bdev_raid.h b/lib/bdev/raid/bdev_raid.h index 0a6ea5e7f..39f055ed5 100644 --- a/lib/bdev/raid/bdev_raid.h +++ b/lib/bdev/raid/bdev_raid.h @@ -44,7 +44,10 @@ enum raid_bdev_state { /* raid bdev is ready and is seen by upper layers */ RAID_BDEV_STATE_ONLINE, - /* raid bdev is configuring, not all underlying bdevs are present */ + /* + * raid bdev is configuring, not all underlying bdevs are present. + * And can't be seen by upper layers. + */ RAID_BDEV_STATE_CONFIGURING, /*