lib/nvmf: Add subsystem_listener to struct spdk_nvmf_ctrlr
Find the subsystem listener whose trid matches req->port->trid when creating a controller, and store it in the controller. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Iea343b8d8ae827b554df2245b67aed113469c592 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4010 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
e21de9a9cc
commit
7bcff376ab
@ -409,6 +409,16 @@ nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
|
|
||||||
ctrlr->dif_insert_or_strip = transport->opts.dif_insert_or_strip;
|
ctrlr->dif_insert_or_strip = transport->opts.dif_insert_or_strip;
|
||||||
|
|
||||||
|
if (ctrlr->subsys->subtype == SPDK_NVMF_SUBTYPE_NVME) {
|
||||||
|
ctrlr->listener = nvmf_subsystem_find_listener(ctrlr->subsys,
|
||||||
|
req->qpair->trid);
|
||||||
|
if (!ctrlr->listener) {
|
||||||
|
SPDK_ERRLOG("Listener was not found\n");
|
||||||
|
free(ctrlr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
req->qpair->ctrlr = ctrlr;
|
req->qpair->ctrlr = ctrlr;
|
||||||
spdk_thread_send_msg(subsystem->thread, _nvmf_subsystem_add_ctrlr, req);
|
spdk_thread_send_msg(subsystem->thread, _nvmf_subsystem_add_ctrlr, req);
|
||||||
|
|
||||||
|
@ -216,6 +216,8 @@ struct spdk_nvmf_ctrlr {
|
|||||||
struct spdk_thread *thread;
|
struct spdk_thread *thread;
|
||||||
struct spdk_bit_array *qpair_mask;
|
struct spdk_bit_array *qpair_mask;
|
||||||
|
|
||||||
|
const struct spdk_nvmf_subsystem_listener *listener;
|
||||||
|
|
||||||
struct spdk_nvmf_request *aer_req[NVMF_MAX_ASYNC_EVENTS];
|
struct spdk_nvmf_request *aer_req[NVMF_MAX_ASYNC_EVENTS];
|
||||||
union spdk_nvme_async_event_completion notice_event;
|
union spdk_nvme_async_event_completion notice_event;
|
||||||
union spdk_nvme_async_event_completion reservation_event;
|
union spdk_nvme_async_event_completion reservation_event;
|
||||||
|
@ -119,6 +119,12 @@ DEFINE_STUB(spdk_nvmf_subsystem_listener_allowed,
|
|||||||
(struct spdk_nvmf_subsystem *subsystem, const struct spdk_nvme_transport_id *trid),
|
(struct spdk_nvmf_subsystem *subsystem, const struct spdk_nvme_transport_id *trid),
|
||||||
true);
|
true);
|
||||||
|
|
||||||
|
DEFINE_STUB(nvmf_subsystem_find_listener,
|
||||||
|
struct spdk_nvmf_subsystem_listener *,
|
||||||
|
(struct spdk_nvmf_subsystem *subsystem,
|
||||||
|
const struct spdk_nvme_transport_id *trid),
|
||||||
|
(void *)0x1);
|
||||||
|
|
||||||
DEFINE_STUB(nvmf_bdev_ctrlr_read_cmd,
|
DEFINE_STUB(nvmf_bdev_ctrlr_read_cmd,
|
||||||
int,
|
int,
|
||||||
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
|
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
|
||||||
|
@ -83,6 +83,12 @@ DEFINE_STUB(spdk_nvmf_subsystem_listener_allowed,
|
|||||||
(struct spdk_nvmf_subsystem *subsystem, const struct spdk_nvme_transport_id *trid),
|
(struct spdk_nvmf_subsystem *subsystem, const struct spdk_nvme_transport_id *trid),
|
||||||
true);
|
true);
|
||||||
|
|
||||||
|
DEFINE_STUB(nvmf_subsystem_find_listener,
|
||||||
|
struct spdk_nvmf_subsystem_listener *,
|
||||||
|
(struct spdk_nvmf_subsystem *subsystem,
|
||||||
|
const struct spdk_nvme_transport_id *trid),
|
||||||
|
(void *)0x1);
|
||||||
|
|
||||||
DEFINE_STUB_V(nvmf_get_discovery_log_page,
|
DEFINE_STUB_V(nvmf_get_discovery_log_page,
|
||||||
(struct spdk_nvmf_tgt *tgt, const char *hostnqn, struct iovec *iov,
|
(struct spdk_nvmf_tgt *tgt, const char *hostnqn, struct iovec *iov,
|
||||||
uint32_t iovcnt, uint64_t offset, uint32_t length));
|
uint32_t iovcnt, uint64_t offset, uint32_t length));
|
||||||
|
Loading…
Reference in New Issue
Block a user