From 62db72caafbd583c60e685b3771cb80a15abe63a Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 25 Nov 2019 12:59:29 -0700 Subject: [PATCH] bdev/nvme: add namespace types Eventually these may be defined by the NVMe spec, but for now add something local to the bdev/nvme module. These will currently only differentiate "standard" namespaces from ocssd namespaces. Signed-off-by: Jim Harris Change-Id: I7853c97f3d3c28fd9f2fcd2440c57dc262954b46 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475795 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki Reviewed-by: Konrad Sztyber Reviewed-by: Shuhei Matsumoto --- module/bdev/nvme/bdev_nvme.c | 5 +++++ module/bdev/nvme/common.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 9ef36a0fe..b1086e7b4 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1047,6 +1047,11 @@ nvme_ctrlr_populate_namespaces(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr) if (!ns->active && spdk_nvme_ctrlr_is_active_ns(ctrlr, nsid)) { ns->id = nsid; ns->ctrlr = nvme_bdev_ctrlr; + if (spdk_nvme_ctrlr_is_ocssd_supported(ctrlr)) { + ns->type = NVME_BDEV_NS_OCSSD; + } else { + ns->type = NVME_BDEV_NS_STANDARD; + } TAILQ_INIT(&ns->bdevs); diff --git a/module/bdev/nvme/common.h b/module/bdev/nvme/common.h index 9673e8ff8..e6c70be42 100644 --- a/module/bdev/nvme/common.h +++ b/module/bdev/nvme/common.h @@ -44,8 +44,15 @@ extern pthread_mutex_t g_bdev_nvme_mutex; #define NVME_MAX_CONTROLLERS 1024 +enum nvme_bdev_ns_type { + NVME_BDEV_NS_UNKNOWN = 0, + NVME_BDEV_NS_STANDARD = 1, + NVME_BDEV_NS_OCSSD = 2, +}; + struct nvme_bdev_ns { uint32_t id; + enum nvme_bdev_ns_type type; bool active; struct spdk_nvme_ns *ns; struct nvme_bdev_ctrlr *ctrlr;