From: Eyal Ben David Date: Tue, 6 Nov 2018 18:27:48 +0000 (+0200) Subject: connect-all: special treatment to EALREADY afetr write to /dev/nvme-fabrics X-Git-Tag: v1.7~32^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1a922e0e121d77e14be6dbb773e15294d821f7cb;p=users%2Fsagi%2Fnvme-cli.git connect-all: special treatment to EALREADY afetr write to /dev/nvme-fabrics --- 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