Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Oct 2021 14:58:22 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 259439] ctld: MaxRecvDataSegmentLength is sent only in response to initiator's MaxRecvDataSegmentLength
Message-ID:  <bug-259439-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D259439

            Bug ID: 259439
           Summary: ctld: MaxRecvDataSegmentLength is sent only in
                    response to initiator's MaxRecvDataSegmentLength
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: bugs@FreeBSD.org
          Reporter: emaste@freebsd.org

PR259355 reports an issue with the iSCSI initiator relating to
MaxRecvDataSegmentLength. jhb@ reports ctld has a similar issue - some more
detail in https://reviews.freebsd.org/D32605. Quoting from that review:

---
} else if (strcmp(name, "MaxRecvDataSegmentLength") =3D=3D 0) {
        tmp =3D strtoul(value, NULL, 10);
        if (tmp <=3D 0) {
                login_send_error(request, 0x02, 0x00);
                log_errx(1, "received invalid "
                    "MaxRecvDataSegmentLength");
        }

        /*
         * MaxRecvDataSegmentLength is a direction-specific parameter.
         * We'll limit our _send_ to what the initiator can handle but
         * our MaxRecvDataSegmentLength is not influenced by the
         * initiator in any way.
         */
        if ((int)tmp > conn->conn_max_send_data_segment_limit) {
                log_debugx("capping MaxRecvDataSegmentLength "
                    "from %zd to %d", tmp,
                    conn->conn_max_send_data_segment_limit);
                tmp =3D conn->conn_max_send_data_segment_limit;
        }
        conn->conn_max_send_data_segment_length =3D tmp;
        conn->conn_max_recv_data_segment_length =3D
            conn->conn_max_recv_data_segment_limit;
        keys_add_int(response_keys, name,
            conn->conn_max_recv_data_segment_length);

so conn_max_recv_data_segment_length is only set if the initiator provides a
MaxRecvDataSegmentLength (and it's only in that case that we send
MaxRecvDataSegmentLength back to the initiator). Presumably
MaxRecvDataSegmentLength should be sent unconditionally. Same for all
Declarative keys?
---

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-259439-227>