]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
fabrics: do not treat ctrl_loss_tmo values of '-1' as invalid
authorHannes Reinecke <hare@suse.de>
Mon, 17 Jan 2022 09:03:34 +0000 (10:03 +0100)
committerHannes Reinecke <hare@suse.de>
Mon, 17 Jan 2022 09:03:34 +0000 (10:03 +0100)
'-1' is perfectly valid for ctrl_loss_tmo as it indicates an infinite
timeout.

Signed-off-by: Hannes Reinecke <hare@suse.de>
src/nvme/fabrics.c

index 97bb0b37d3b45a9e05c7295a7f5996cb2c314217..bc249b36305b9a09c013d029c8d0c860183c07ab 100644 (file)
@@ -222,6 +222,22 @@ static int add_int_argument(char **argstr, char *tok, int arg, bool allow_zero)
        return 0;
 }
 
+static int add_int_or_minus_one_argument(char **argstr, char *tok, int arg)
+{
+       char *nstr;
+
+       if (arg < -1)
+               return 0;
+       if (asprintf(&nstr, "%s,%s=%d", *argstr, tok, arg) < 0) {
+               errno = ENOMEM;
+               return -1;
+       }
+       free(*argstr);
+       *argstr = nstr;
+
+       return 0;
+}
+
 static int add_argument(char **argstr, const char *tok, const char *arg)
 {
        char *nstr;
@@ -413,9 +429,6 @@ static int build_options(nvme_host_t h, nvme_ctrl_t c, char **argstr)
                        nvme_msg(LOG_ERR, "need a address (-a) argument\n");
                        return -ENVME_CONNECT_AARG;
                }
-               /* Use the default ctrl loss timeout if unset */
-                if (cfg->ctrl_loss_tmo == -1)
-                       cfg->ctrl_loss_tmo = NVMF_DEF_CTRL_LOSS_TMO;
        }
 
        /* always specify nqn as first arg - this will init the string */
@@ -467,8 +480,8 @@ static int build_options(nvme_host_t h, nvme_ctrl_t c, char **argstr)
            add_int_argument(argstr, "reconnect_delay",
                             cfg->reconnect_delay, false) ||
            (strcmp(transport, "loop") &&
-            add_int_argument(argstr, "ctrl_loss_tmo",
-                             cfg->ctrl_loss_tmo, false)) ||
+            add_int_or_minus_one_argument(argstr, "ctrl_loss_tmo",
+                             cfg->ctrl_loss_tmo)) ||
            (strcmp(transport, "loop") &&
             add_int_argument(argstr, "fast_io_fail_tmo",
                              cfg->fast_io_fail_tmo, false)) ||