Commit 0468ce53 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

bdev/nvme: mark controllers used by bdev_ftl



Currently, the controllers managed by bdev_ftl are skipped in
bdev_nvme's config_json output by verifying if they support Open
Channel.  Since new bdev_ocssd also uses Open Channel controllers and
it relies on bdev_nvme's config_json, additional flag was added to mark
that a controller is used by bdev_ftl.

This is a temporary solution that should be removed once bdev_ftl
becomes a virtual bdev and starts using bdevs instead of NVMe
controllers.

Change-Id: Ib25b61a72f0912d7a51119357f5c221941af50ad
Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477297


Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 88406f33
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ bdev_ftl_add_ctrlr(struct spdk_nvme_ctrlr *ctrlr, const struct spdk_nvme_transpo
		ftl_ctrlr->ctrlr = ctrlr;
		ftl_ctrlr->trid = *trid;
		ftl_ctrlr->ref = 1;
		ftl_ctrlr->ftl_managed = true;

		ftl_ctrlr->name = spdk_sprintf_alloc("NVMe_%s", trid->traddr);
		if (!ftl_ctrlr->name) {
+1 −2
Original line number Diff line number Diff line
@@ -2298,8 +2298,7 @@ bdev_nvme_config_json(struct spdk_json_write_ctx *w)

	pthread_mutex_lock(&g_bdev_nvme_mutex);
	TAILQ_FOREACH(nvme_bdev_ctrlr, &g_nvme_bdev_ctrlrs, tailq) {

		if (spdk_nvme_ctrlr_is_ocssd_supported(nvme_bdev_ctrlr->ctrlr)) {
		if (nvme_bdev_ctrlr->ftl_managed) {
			continue;
		}

+8 −0
Original line number Diff line number Diff line
@@ -93,6 +93,14 @@ struct nvme_bdev_ctrlr {

	struct spdk_poller		*adminq_timer_poller;

	/**
	 * Temporary workaround to distinguish between controllers managed by
	 * bdev_ocssd and those used by bdev_ftl.  Once bdev_ftl becomes a
	 * virtual bdev and starts using bdevs instead of controllers, this flag
	 * can be removed.
	 */
	bool				ftl_managed;

	/** linked list pointer for device list */
	TAILQ_ENTRY(nvme_bdev_ctrlr)	tailq;
};