Commit 924a0995 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Ben Walker
Browse files

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: default avatarShuhei 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKunal Sablok <kunal.sablok@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 2b3abb2a
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -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;
}

/*