[Bug 293076] ctld regression in FreeBSD 15: multiple physical ports per target rejected and ports not enabled automatically

[email protected] Mon, 23 Mar 2026 14:14:53 +0000
Newsgroups gmane.os.freebsd.devel.scsi
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D293076

--- Comment #8 from Ken J. Thomson <[email protected]> ---
Reading symbols from ctld...
Reading symbols from /usr/lib/debug//usr/sbin/ctld.debug...
(gdb) break conf::apply
Breakpoint 1 at 0x46965: file /usr/src/usr.sbin/ctld/ctld.cc, line 1967.
(gdb) run -d -f /etc/ctl.conf
Starting program: /usr/sbin/ctld -d -f /etc/ctl.conf
ctld: obtaining configuration from /etc/ctl.conf
ctld: /etc/ctl.conf is world-readable
ctld: auth-group "default" not defined; going with defaults
ctld: portal-group "default" not defined; going with defaults
ctld: transport-group "default" not defined; going with defaults
ctld: opening pidfile /var/run/ctld.pid
ctld: obtaining previously configured CTL luns from the kernel
ctld: CTL port 0 "camsim" wasn't managed by ctld;=20
ctld: CTL port 1 "ioctl" wasn't managed by ctld;=20
ctld: CTL port 2 "tpc" wasn't managed by ctld;=20
ctld: CTL port 3 "ocs_fc0" wasn't managed by ctld;=20
ctld: CTL port 4 "ocs_fc1" wasn't managed by ctld;=20
ctld: added kernel port "ocs_fc0" for target "naa.123456789"
ctld: added kernel port "ocs_fc1" for target "naa.123456789"

Breakpoint 1, conf::apply (this=3D0x801a1f000, oldconf=3D0x801a1f1c0) at
/usr/src/usr.sbin/ctld/ctld.cc:1967
1967            int cumulated_error =3D 0;
(gdb) n
1969            if (oldconf->conf_debug !=3D conf_debug) {
(gdb) n
1982            if (!oldconf->conf_pidfile_path.empty() &&
(gdb)=20
2001            for (auto &kv : conf_portal_groups) {
(gdb) n
2002                    struct portal_group &newpg =3D *kv.second;
(gdb) n
2004                    if (newpg.tag() !=3D 0)
(gdb) n
2006                    auto it =3D oldconf->conf_portal_groups.find(kv.fir=
st);
(gdb) n
2007                    if (it !=3D oldconf->conf_portal_groups.end())
(gdb) n
2010                            newpg.allocate_tag();
(gdb) n
2001            for (auto &kv : conf_portal_groups) {
(gdb) n
2012            for (auto &kv : conf_transport_groups) {
(gdb) n
2013                    struct portal_group &newpg =3D *kv.second;
(gdb) n
2015                    if (newpg.tag() !=3D 0)
(gdb) n
2017                    auto it =3D
oldconf->conf_transport_groups.find(kv.first);
(gdb) n
2018                    if (it !=3D oldconf->conf_transport_groups.end())
(gdb) n
2021                            newpg.allocate_tag();
(gdb) n
2012            for (auto &kv : conf_transport_groups) {
(gdb) n
2025            for (auto &kv : oldconf->conf_isns) {
(gdb) n
2041            for (const auto &kv : oldconf->conf_ports) {
(gdb) n
2065            for (auto it =3D oldconf->conf_luns.begin();
(gdb) n
2066                 it !=3D oldconf->conf_luns.end(); ) {
(gdb) n
2065            for (auto it =3D oldconf->conf_luns.begin();
(gdb) n
2108            for (auto it =3D conf_luns.begin(); it !=3D conf_luns.end()=
; ) {
(gdb) n
2109                    struct lun *newlun =3D it->second.get();
(gdb) n
2111                    auto oldit =3D oldconf->conf_luns.find(it->first);
(gdb) n
2112                    if (oldit !=3D oldconf->conf_luns.end()) {
(gdb) n
2125                    log_debugx("adding lun \"%s\"", newlun->name());
(gdb) n
ctld: adding lun "example_1"
2126                    if (!newlun->kernel_add()) {
(gdb) n
2132                            it++;
(gdb) n
2108            for (auto it =3D conf_luns.begin(); it !=3D conf_luns.end()=
; ) {
(gdb) n
2138            for (auto it =3D conf_ports.begin(); it !=3D conf_ports.end=
(); ) {
(gdb) n
2139                    const std::string &name =3D it->first;
(gdb) print it->first.c_str()
$1 =3D (const std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::value_type *) 0x801a2f161 "ocs_fc1-naa.1234567=
89"
(gdb) print it->second->is_dummy()
$2 =3D true
(gdb) print it->second->p_type
There is no member or method named p_type.
(gdb) break port::kernel_add
Breakpoint 2 at 0x10a028e: file /usr/src/usr.sbin/ctld/kernel.cc, line 850.
(gdb) continue=20
Continuing.
ctld: skipping dummy port "ocs_fc1-naa.123456789"
ctld: skipping dummy port "ocs_fc0-naa.123456789"
ctld: adding port "default-naa.123456789"

Breakpoint 2, port::kernel_add (this=3D0x801a2f180) at
/usr/src/usr.sbin/ctld/kernel.cc:850
850             struct target *targ =3D p_target;

--=20
You are receiving this mail because:
You are the assignee for the bug.=