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)
|
bdev_nvme_io_type_supported(void *ctx, enum spdk_bdev_io_type io_type)
|
||||||
{
|
{
|
||||||
struct nvme_bdev *nbdev = ctx;
|
struct nvme_bdev *nbdev = ctx;
|
||||||
struct spdk_nvme_ctrlr *ctrlr = nbdev->nvme_ns->ctrlr->ctrlr;
|
struct nvme_bdev_ns *nvme_ns;
|
||||||
struct spdk_nvme_ns *ns = nbdev->nvme_ns->ns;
|
struct spdk_nvme_ns *ns;
|
||||||
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
const struct spdk_nvme_ctrlr_data *cdata;
|
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) {
|
switch (io_type) {
|
||||||
case SPDK_BDEV_IO_TYPE_READ:
|
case SPDK_BDEV_IO_TYPE_READ:
|
||||||
case SPDK_BDEV_IO_TYPE_WRITE:
|
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)
|
bdev_nvme_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
|
||||||
{
|
{
|
||||||
struct nvme_bdev *nvme_bdev = ctx;
|
struct nvme_bdev *nvme_bdev = ctx;
|
||||||
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = nvme_bdev->nvme_ns->ctrlr;
|
struct nvme_bdev_ns *nvme_ns;
|
||||||
struct spdk_nvme_ctrlr *ctrlr = nvme_bdev_ctrlr->ctrlr;
|
struct spdk_nvme_ns *ns;
|
||||||
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
const struct spdk_nvme_ctrlr_data *cdata;
|
const struct spdk_nvme_ctrlr_data *cdata;
|
||||||
const struct spdk_nvme_transport_id *trid;
|
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_vs_register vs;
|
||||||
union spdk_nvme_csts_register csts;
|
union spdk_nvme_csts_register csts;
|
||||||
char buf[128];
|
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);
|
cdata = spdk_nvme_ctrlr_get_data(ctrlr);
|
||||||
trid = spdk_nvme_ctrlr_get_transport_id(ctrlr);
|
trid = spdk_nvme_ctrlr_get_transport_id(ctrlr);
|
||||||
vs = spdk_nvme_ctrlr_get_regs_vs(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;
|
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 */
|
#endif /* SPDK_COMMON_BDEV_NVME_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user