]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
connect-all: special treatment to EALREADY afetr write to /dev/nvme-fabrics
authorEyal Ben David <eyalbe@il.ibm.com>
Tue, 6 Nov 2018 18:27:48 +0000 (20:27 +0200)
committerEyal Ben David <eyalbe@il.ibm.com>
Tue, 6 Nov 2018 19:57:00 +0000 (21:57 +0200)
fabrics.c

index 21ea4209eda1745178814b28d2fea54f9d7fd462..711a755a79e1e72503338db948489a4f28a0784f 100644 (file)
--- a/fabrics.c
+++ b/fabrics.c
@@ -738,12 +738,35 @@ static int connect_ctrl(struct nvmf_disc_rsp_page_entry *e)
                return add_ctrl(argstr);
 }
 
-static void connect_ctrls(struct nvmf_disc_rsp_page_hdr *log, int numrec)
+static int connect_ctrls(struct nvmf_disc_rsp_page_hdr *log, int numrec)
 {
        int i;
+       int instance;
+       int ret = 0;
+
+       for (i = 0; i < numrec; i++) {
+               instance = connect_ctrl(&log->entries[i]);
 
-       for (i = 0; i < numrec; i++)
-               connect_ctrl(&log->entries[i]);
+               /* clean success */
+               if (instance >= 0)
+                       continue;
+
+               /* already connected print message      */
+               if (instance == -EALREADY) {
+                       const char *traddr = log->entries[i].traddr;
+                       fprintf(stderr,
+                               "traddr=%.*s is already connected\n",
+                               space_strip_len(NVMF_TRADDR_SIZE, traddr),
+                               traddr);
+                       continue;
+               }
+
+               /* otherwise error */
+               ret = -instance;
+               break;
+       }
+
+       return ret;
 }
 
 static int do_discover(char *argstr, bool connect)
@@ -765,7 +788,7 @@ static int do_discover(char *argstr, bool connect)
        switch (ret) {
        case DISC_OK:
                if (connect)
-                       connect_ctrls(log, numrec);
+                       ret = connect_ctrls(log, numrec);
                else if (cfg.raw)
                        save_discovery_log(log, numrec);
                else