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: Konrad 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: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Konrad Sztyber 2019-12-09 11:18:35 +01:00 committed by Tomasz Zawadzki
parent 88406f3302
commit 0468ce5343
3 changed files with 10 additions and 2 deletions

View File

@ -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) {

View File

@ -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;
}

View File

@ -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;
};