bdev/nvme: Get nvme_ns from nvme_bdev via helper function for configuration
When multipath is supported, nvme_bdev_ns will be got via bdev_subsystem. To make such change invisible, add a helper function nvme_bdev_to_bdev_ns() and use it in bdev_nvme_io_type_supported() and bdev_nvme_dump_info_json(). Inline the function and locate it in common.h to use for ocssd_bdev too. ctrlr can be got from ns using spdk_nvme_ns_get_ctrlr(). Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: If85c86737e8194b8e34ed62df04a3968443f23bb Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5795 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
e995690fbc
commit
d86477bff3
@ -806,10 +806,16 @@ static bool
|
||||
bdev_nvme_io_type_supported(void *ctx, enum spdk_bdev_io_type io_type)
|
||||
{
|
||||
struct nvme_bdev *nbdev = ctx;
|
||||
struct spdk_nvme_ctrlr *ctrlr = nbdev->nvme_ns->ctrlr->ctrlr;
|
||||
struct spdk_nvme_ns *ns = nbdev->nvme_ns->ns;
|
||||
struct nvme_bdev_ns *nvme_ns;
|
||||
struct spdk_nvme_ns *ns;
|
||||
struct spdk_nvme_ctrlr *ctrlr;
|
||||
const struct spdk_nvme_ctrlr_data *cdata;
|
||||
|
||||
nvme_ns = nvme_bdev_to_bdev_ns(nbdev);
|
||||
assert(nvme_ns != NULL);
|
||||
ns = nvme_ns->ns;
|
||||
ctrlr = spdk_nvme_ns_get_ctrlr(ns);
|
||||
|
||||
switch (io_type) {
|
||||
case SPDK_BDEV_IO_TYPE_READ:
|
||||
case SPDK_BDEV_IO_TYPE_WRITE:
|
||||
@ -978,15 +984,20 @@ static int
|
||||
bdev_nvme_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
|
||||
{
|
||||
struct nvme_bdev *nvme_bdev = ctx;
|
||||
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = nvme_bdev->nvme_ns->ctrlr;
|
||||
struct spdk_nvme_ctrlr *ctrlr = nvme_bdev_ctrlr->ctrlr;
|
||||
struct nvme_bdev_ns *nvme_ns;
|
||||
struct spdk_nvme_ns *ns;
|
||||
struct spdk_nvme_ctrlr *ctrlr;
|
||||
const struct spdk_nvme_ctrlr_data *cdata;
|
||||
const struct spdk_nvme_transport_id *trid;
|
||||
struct spdk_nvme_ns *ns = nvme_bdev->nvme_ns->ns;
|
||||
union spdk_nvme_vs_register vs;
|
||||
union spdk_nvme_csts_register csts;
|
||||
char buf[128];
|
||||
|
||||
nvme_ns = nvme_bdev_to_bdev_ns(nvme_bdev);
|
||||
assert(nvme_ns != NULL);
|
||||
ns = nvme_ns->ns;
|
||||
ctrlr = spdk_nvme_ns_get_ctrlr(ns);
|
||||
|
||||
cdata = spdk_nvme_ctrlr_get_data(ctrlr);
|
||||
trid = spdk_nvme_ctrlr_get_transport_id(ctrlr);
|
||||
vs = spdk_nvme_ctrlr_get_regs_vs(ctrlr);
|
||||
|
@ -185,4 +185,10 @@ bdev_nvme_find_io_path(struct nvme_bdev *nbdev, struct nvme_io_channel *nvme_ch,
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline struct nvme_bdev_ns *
|
||||
nvme_bdev_to_bdev_ns(struct nvme_bdev *nbdev)
|
||||
{
|
||||
return nbdev->nvme_ns;
|
||||
}
|
||||
|
||||
#endif /* SPDK_COMMON_BDEV_NVME_H */
|
||||
|
Loading…
Reference in New Issue
Block a user