git: 03ac6fe4f6d2 - main - ctld: Simplify handling of non-iSCSI and non-NVMe kernel ports

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 24 Jun 2026 15:29:04 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=03ac6fe4f6d2bce06a672024152eb894a423dfcb

commit 03ac6fe4f6d2bce06a672024152eb894a423dfcb
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-06-24 15:28:51 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-06-24 15:28:51 +0000

    ctld: Simplify handling of non-iSCSI and non-NVMe kernel ports
    
    Just add these directly to the kports object rather than treating them
    as iSCSI ports.
    
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D57283
---
 usr.sbin/ctld/kernel.cc | 35 ++++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 13 deletions(-)

diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc
index ef7ef87af090..f84440d64c23 100644
--- a/usr.sbin/ctld/kernel.cc
+++ b/usr.sbin/ctld/kernel.cc
@@ -441,19 +441,13 @@ retry_port:
 	return (true);
 }
 
-void
-add_iscsi_port(struct kports &kports, struct conf *conf,
-    const struct cctl_port &port, std::string &name)
+static void
+add_iscsi_port(struct conf *conf, const struct cctl_port &port,
+    std::string &name)
 {
 	if (port.cfiscsi_target.empty()) {
 		log_debugx("CTL iSCSI port %u \"%s\" is not managed by ctld; "
 		    "ignoring", port.port_id, name.c_str());
-		if (!kports.has_port(name)) {
-			if (!kports.add_port(name, port.port_id)) {
-				log_warnx("kports::add_port failed");
-				return;
-			}
-		}
 		return;
 	}
 	if (port.cfiscsi_state != 1) {
@@ -493,7 +487,7 @@ add_iscsi_port(struct kports &kports, struct conf *conf,
 	}
 }
 
-void
+static void
 add_nvmf_port(struct conf *conf, const struct cctl_port &port,
     std::string &name)
 {
@@ -532,6 +526,22 @@ add_nvmf_port(struct conf *conf, const struct cctl_port &port,
 	}
 }
 
+static void
+add_kernel_port(struct kports &kports, const struct cctl_port &port,
+    std::string &name)
+{
+	log_debugx("CTL kernel port %u \"%s\"", port.port_id, name.c_str());
+	if (kports.has_port(name)) {
+		log_warnx("Ignoring duplicate kernel port \"%s\"",
+		    name.c_str());
+		return;
+	}
+
+	if (!kports.add_port(name, port.port_id)) {
+		log_warnx("kports::add_port failed");
+	}
+}
+
 conf_up
 conf_new_from_kernel(struct kports &kports)
 {
@@ -559,12 +569,11 @@ conf_new_from_kernel(struct kports &kports)
 		}
 
 		if (port.port_frontend == "iscsi") {
-			add_iscsi_port(kports, conf.get(), port, name);
+			add_iscsi_port(conf.get(), port, name);
 		} else if (port.port_frontend == "nvmf") {
 			add_nvmf_port(conf.get(), port, name);
 		} else {
-			/* XXX: Treat all unknown ports as iSCSI? */
-			add_iscsi_port(kports, conf.get(), port, name);
+			add_kernel_port(kports, port, name);
 		}
 	}