From cd7a414018c7b7f1267d25d6e3f173848265bfbb Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Thu, 26 Jan 2023 14:36:56 +0100 Subject: [PATCH] fabrics: Fix discovery controller filter function disc_ctrl_config_match() should also test if the controller is actually a discovery controller. Because of that ctrl_config_match() can't call disc_ctrl_config_match() anymore. Fixes: 07d6b911e081 ("fabrics: Do not attempt to reconnect to already connected ctrls") Signed-off-by: Daniel Wagner --- fabrics.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fabrics.c b/fabrics.c index 8c19b07e..1bb2a052 100644 --- a/fabrics.c +++ b/fabrics.c @@ -158,7 +158,8 @@ static bool is_persistent_discovery_ctrl(nvme_host_t h, nvme_ctrl_t c) static bool disc_ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg) { - if (!strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) && + if (nvme_ctrl_is_discovery_ctrl(c) && + !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) && !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) && !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) && !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) && @@ -171,7 +172,11 @@ static bool disc_ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg) static bool ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg) { if (!strcmp0(nvme_ctrl_get_subsysnqn(c), trcfg->subsysnqn) && - disc_ctrl_config_match(c, trcfg)) + !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) && + !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) && + !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) && + !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) && + !strcmp0(nvme_ctrl_get_host_iface(c), trcfg->host_iface)) return true; return false; -- 2.50.1