From 1a922e0e121d77e14be6dbb773e15294d821f7cb Mon Sep 17 00:00:00 2001 From: Eyal Ben David Date: Tue, 6 Nov 2018 20:27:48 +0200 Subject: [PATCH] connect-all: special treatment to EALREADY afetr write to /dev/nvme-fabrics --- fabrics.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/fabrics.c b/fabrics.c index 21ea4209..711a755a 100644 --- 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 -- 2.50.1