nvme: Hotplug events just place new controllers in the init list.

This way, all new controllers discovered will be initialized
in parallel.

Change-Id: Iebedb3905eb2787a3708f74425afae40ca31253d
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Ben Walker 2016-12-08 09:48:29 -07:00
parent 34100924e4
commit d3f66cdb2b

View File

@ -389,15 +389,7 @@ nvme_init_controllers(void *cb_ctx, spdk_nvme_attach_cb attach_cb)
} }
static int static int
nvme_attach_one(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach_cb attach_cb, nvme_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb,
struct spdk_pci_addr *pci_address)
{
nvme_transport_ctrlr_attach(SPDK_NVME_TRANSPORT_PCIE, probe_cb, cb_ctx, pci_address);
return nvme_init_controllers(cb_ctx, attach_cb);
}
static int
nvme_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach_cb attach_cb,
spdk_nvme_remove_cb remove_cb); spdk_nvme_remove_cb remove_cb);
static int static int
@ -430,7 +422,7 @@ _spdk_nvme_probe(const struct spdk_nvme_transport_id *trid, void *cb_ctx,
SPDK_ERRLOG("Failed to open uevent netlink socket\n"); SPDK_ERRLOG("Failed to open uevent netlink socket\n");
} }
} else { } else {
nvme_hotplug_monitor(cb_ctx, probe_cb, attach_cb, remove_cb); nvme_hotplug_monitor(cb_ctx, probe_cb, remove_cb);
} }
} }
@ -478,7 +470,7 @@ int spdk_nvme_discover(const struct spdk_nvme_transport_id *trid,
} }
static int static int
nvme_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach_cb attach_cb, nvme_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb,
spdk_nvme_remove_cb remove_cb) spdk_nvme_remove_cb remove_cb)
{ {
struct spdk_nvme_ctrlr *ctrlr; struct spdk_nvme_ctrlr *ctrlr;
@ -490,7 +482,7 @@ nvme_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach
SPDK_TRACELOG(SPDK_TRACE_NVME, "add nvme address: %04x:%02x:%02x.%u\n", SPDK_TRACELOG(SPDK_TRACE_NVME, "add nvme address: %04x:%02x:%02x.%u\n",
event.pci_addr.domain, event.pci_addr.bus, event.pci_addr.dev, event.pci_addr.func); event.pci_addr.domain, event.pci_addr.bus, event.pci_addr.dev, event.pci_addr.func);
if (spdk_process_is_primary()) { if (spdk_process_is_primary()) {
nvme_attach_one(cb_ctx, probe_cb, attach_cb, &event.pci_addr); nvme_transport_ctrlr_attach(SPDK_NVME_TRANSPORT_PCIE, probe_cb, cb_ctx, &event.pci_addr);
} }
} else if (event.action == SPDK_NVME_UEVENT_REMOVE) { } else if (event.action == SPDK_NVME_UEVENT_REMOVE) {
bool in_list = false; bool in_list = false;