*/
if (!(eflags & NVMF_DISC_EFLAGS_EPCSD))
disconnect = true;
+ else
+ disconnect = false;
}
set_discovery_kato(defcfg);
if (discover)
__discover(child, defcfg, raw,
true, persistent, flags);
+
if (disconnect) {
nvme_disconnect_ctrl(child);
nvme_free_ctrl(child);
goto next;
__discover(c, &cfg, raw, connect, persistent, flags);
- if (!persistent)
+ if (!(persistent || nvme_ctrl_is_unique_discovery_ctrl(c)))
ret = nvme_disconnect_ctrl(c);
nvme_free_ctrl(c);
continue;
__discover(cn, &cfg, raw, connect, persistent, flags);
- if (!persistent)
+ if (!(persistent || nvme_ctrl_is_unique_discovery_ctrl(cn)))
ret = nvme_disconnect_ctrl(cn);
nvme_free_ctrl(cn);
}
}
}
- ret = __discover(c, &cfg, raw, connect,
- persistent, flags);
- if (!persistent)
+ ret = __discover(c, &cfg, raw, connect, persistent, flags);
+ if (!(persistent || nvme_ctrl_is_unique_discovery_ctrl(c)))
nvme_disconnect_ctrl(c);
nvme_free_ctrl(c);