]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
fabrics: Set KATO for discovery controller when connecting
authorDaniel Wagner <dwagner@suse.de>
Fri, 8 Apr 2022 12:08:47 +0000 (14:08 +0200)
committerDaniel Wagner <dwagner@suse.de>
Fri, 8 Apr 2022 12:40:34 +0000 (14:40 +0200)
In case we are connecting to the discovered controllers we should also
set the KATO value for persistent discocovery controllers correctly.

Unfortunatly, the compiler seems to get confused by only conditionally
setting tmo and warns about uninitialized variable. Hence we always
store and restore keep_alive_tmo.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
fabrics.c

index 71e15bc1e75dfd9b79c8b9f507b0594b846a80d4..fa984654229f626a24b1ea786257a5e77d40b319 100644 (file)
--- a/fabrics.c
+++ b/fabrics.c
@@ -288,7 +288,7 @@ static void json_connect_msg(nvme_ctrl_t c)
        json_free_object(root);
 }
 
-static int __discover(nvme_ctrl_t c, const struct nvme_fabrics_config *defcfg,
+static int __discover(nvme_ctrl_t c, struct nvme_fabrics_config *defcfg,
                      char *raw, bool connect, bool persistent,
                      enum nvme_print_flags flags)
 {
@@ -324,10 +324,17 @@ static int __discover(nvme_ctrl_t c, const struct nvme_fabrics_config *defcfg,
                        struct nvmf_disc_log_entry *e = &log->entries[i];
                        bool discover = false;
                        nvme_ctrl_t child;
+                       int tmo = defcfg->keep_alive_tmo;
+
+                       if (e->subtype == NVME_NQN_DISC)
+                               set_discovery_kato(defcfg);
 
                        errno = 0;
                        child = nvmf_connect_disc_entry(h, e, defcfg,
                                                        &discover);
+
+                       defcfg->keep_alive_tmo = tmo;
+
                        if (child) {
                                if (discover)
                                        __discover(child, defcfg, raw,