diff --git a/examples/discover-loop.c b/examples/discover-loop.c index b28edfa0..3f817627 100644 --- a/examples/discover-loop.c +++ b/examples/discover-loop.c @@ -69,7 +69,7 @@ int main() fprintf(stderr, "Failed to allocate memory\n"); return ENOMEM; } - ret = nvmf_add_ctrl(h, c, &cfg, false); + ret = nvmf_add_ctrl(h, c, &cfg); if (ret < 0) { fprintf(stderr, "no controller found\n"); return errno; diff --git a/libnvme/nvme.i b/libnvme/nvme.i index 25d7ac25..2c856476 100644 --- a/libnvme/nvme.i +++ b/libnvme/nvme.i @@ -535,7 +535,7 @@ struct nvme_ns { connect_err = 1; return; } - ret = nvmf_add_ctrl(h, $self, cfg, cfg->disable_sqflow); + ret = nvmf_add_ctrl(h, $self, cfg); if (ret < 0) { connect_err = 2; return; diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c index 1e7d1a1f..4d1b48e7 100644 --- a/src/nvme/fabrics.c +++ b/src/nvme/fabrics.c @@ -587,14 +587,12 @@ int nvmf_add_ctrl_opts(nvme_ctrl_t c, struct nvme_fabrics_config *cfg) } int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, - const struct nvme_fabrics_config *cfg, - bool disable_sqflow) + const struct nvme_fabrics_config *cfg) { char *argstr; int ret; cfg = merge_config(c, cfg); - nvme_ctrl_disable_sqflow(c, disable_sqflow); nvme_ctrl_set_discovered(c, true); if (traddr_is_hostname(c)) { ret = hostname2traddr(c); @@ -627,7 +625,6 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, const char *transport; char *traddr = NULL, *trsvcid = NULL; nvme_ctrl_t c; - bool disable_sqflow = false; int ret; switch (e->trtype) { @@ -709,24 +706,24 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, } if (e->treq & NVMF_TREQ_DISABLE_SQFLOW) - disable_sqflow = true; + c->cfg.disable_sqflow = true; if (e->trtype == NVMF_TRTYPE_TCP && (e->treq & NVMF_TREQ_REQUIRED || e->treq & NVMF_TREQ_NOT_REQUIRED)) c->cfg.tls = true; - ret = nvmf_add_ctrl(h, c, cfg, disable_sqflow); + ret = nvmf_add_ctrl(h, c, cfg); if (!ret) return c; - if (errno == EINVAL && disable_sqflow) { + if (errno == EINVAL && c->cfg.disable_sqflow) { errno = 0; /* disable_sqflow is unrecognized option on older kernels */ nvme_msg(LOG_INFO, "failed to connect controller, " "retry with disabling SQ flow control\n"); - disable_sqflow = false; - ret = nvmf_add_ctrl(h, c, cfg, disable_sqflow); + c->cfg.disable_sqflow = false; + ret = nvmf_add_ctrl(h, c, cfg); if (!ret) return c; } diff --git a/src/nvme/fabrics.h b/src/nvme/fabrics.h index eb7ede73..0475ee7a 100644 --- a/src/nvme/fabrics.h +++ b/src/nvme/fabrics.h @@ -160,17 +160,19 @@ void nvmf_default_config(struct nvme_fabrics_config *cfg); int nvmf_add_ctrl_opts(nvme_ctrl_t c, struct nvme_fabrics_config *cfg); /** - * nvmf_add_ctrl() - - * @h: - * @c: - * @cfg: - * @disable_sqflow: + * nvmf_add_ctrl() - Connect a controller and update topology + * @h: Host to which the controller should be attached + * @c: Controller to be connected + * @cfg: Default configuration for the controller * - * Return: + * Issues a 'connect' command to the NVMe-oF controller and inserts @c + * into the topology using @h as parent. + * @c must be initialized and not connected to the topology. + * + * Return: 0 on success; on failure errno is set and -1 is returned. */ int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, - const struct nvme_fabrics_config *cfg, - bool disable_sqflow); + const struct nvme_fabrics_config *cfg); /** * nvmf_get_discovery_log() - diff --git a/src/nvme/tree.c b/src/nvme/tree.c index c22d99e6..6fc3810c 100644 --- a/src/nvme/tree.c +++ b/src/nvme/tree.c @@ -749,13 +749,6 @@ void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key) c->dhchap_key = strdup(key); } -void nvme_ctrl_disable_sqflow(nvme_ctrl_t c, bool disable_sqflow) -{ - c->cfg.disable_sqflow = disable_sqflow; - if (c->s && c->s->h && c->s->h->r) - c->s->h->r->modified = true; -} - void nvme_ctrl_set_discovered(nvme_ctrl_t c, bool discovered) { c->discovered = discovered; diff --git a/src/nvme/tree.h b/src/nvme/tree.h index 06500ea4..f886ecbb 100644 --- a/src/nvme/tree.h +++ b/src/nvme/tree.h @@ -873,15 +873,6 @@ void nvme_ctrl_set_discovery_ctrl(nvme_ctrl_t c, bool discovery); */ bool nvme_ctrl_is_discovery_ctrl(nvme_ctrl_t c); -/** - * nvme_ctrl_disable_sqflow() - - * @c: - * @disable_sqflow: - * - * Return: - */ -void nvme_ctrl_disable_sqflow(nvme_ctrl_t c, bool disable_sqflow); - /** * nvme_ctrl_identify() - * @c: