From: Daniel Wagner Date: Thu, 26 Jan 2023 13:40:08 +0000 (+0100) Subject: fabrics: Fix already connected test X-Git-Tag: v2.3~5^2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0ee68b0c52f8be0deea617d96c47353ad3ed91c1;p=users%2Fsagi%2Fnvme-cli.git fabrics: Fix already connected test The lookup will also return controllers created from discovery.conf and config.json. These might not yet connected. When the controller has a device name we assume that we are connected. Fixes: 07d6b911e081 ("fabrics: Do not attempt to reconnect to already connected ctrls") Signed-off-by: Daniel Wagner --- diff --git a/fabrics.c b/fabrics.c index 1bb2a052..f5f098b8 100644 --- a/fabrics.c +++ b/fabrics.c @@ -489,6 +489,7 @@ static int __discover(nvme_ctrl_t c, struct nvme_fabrics_config *defcfg, for (i = 0; i < numrec; i++) { struct nvmf_disc_log_entry *e = &log->entries[i]; + nvme_ctrl_t cl; bool discover = false; bool disconnect; nvme_ctrl_t child; @@ -504,7 +505,8 @@ static int __discover(nvme_ctrl_t c, struct nvme_fabrics_config *defcfg, }; /* Already connected ? */ - if (lookup_ctrl(r, &trcfg)) + cl = lookup_ctrl(r, &trcfg); + if (cl && nvme_ctrl_get_name(cl)) continue; /* Skip connect if the transport types don't match */ @@ -1056,7 +1058,8 @@ int nvmf_connect(const char *desc, int argc, char **argv) .trsvcid = trsvcid, }; - if (lookup_ctrl(r, &trcfg)) { + c = lookup_ctrl(r, &trcfg); + if (c && nvme_ctrl_get_name(c)) { fprintf(stderr, "already connected\n"); errno = EALREADY; goto out_free;