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:
parent
88406f3302
commit
0468ce5343
@ -145,6 +145,7 @@ bdev_ftl_add_ctrlr(struct spdk_nvme_ctrlr *ctrlr, const struct spdk_nvme_transpo
|
|||||||
ftl_ctrlr->ctrlr = ctrlr;
|
ftl_ctrlr->ctrlr = ctrlr;
|
||||||
ftl_ctrlr->trid = *trid;
|
ftl_ctrlr->trid = *trid;
|
||||||
ftl_ctrlr->ref = 1;
|
ftl_ctrlr->ref = 1;
|
||||||
|
ftl_ctrlr->ftl_managed = true;
|
||||||
|
|
||||||
ftl_ctrlr->name = spdk_sprintf_alloc("NVMe_%s", trid->traddr);
|
ftl_ctrlr->name = spdk_sprintf_alloc("NVMe_%s", trid->traddr);
|
||||||
if (!ftl_ctrlr->name) {
|
if (!ftl_ctrlr->name) {
|
||||||
|
@ -2298,8 +2298,7 @@ bdev_nvme_config_json(struct spdk_json_write_ctx *w)
|
|||||||
|
|
||||||
pthread_mutex_lock(&g_bdev_nvme_mutex);
|
pthread_mutex_lock(&g_bdev_nvme_mutex);
|
||||||
TAILQ_FOREACH(nvme_bdev_ctrlr, &g_nvme_bdev_ctrlrs, tailq) {
|
TAILQ_FOREACH(nvme_bdev_ctrlr, &g_nvme_bdev_ctrlrs, tailq) {
|
||||||
|
if (nvme_bdev_ctrlr->ftl_managed) {
|
||||||
if (spdk_nvme_ctrlr_is_ocssd_supported(nvme_bdev_ctrlr->ctrlr)) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,6 +93,14 @@ struct nvme_bdev_ctrlr {
|
|||||||
|
|
||||||
struct spdk_poller *adminq_timer_poller;
|
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 */
|
/** linked list pointer for device list */
|
||||||
TAILQ_ENTRY(nvme_bdev_ctrlr) tailq;
|
TAILQ_ENTRY(nvme_bdev_ctrlr) tailq;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user