[Bug 259439] ctld: MaxRecvDataSegmentLength is sent only in response to initiator's MaxRecvDataSegmentLength
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 259439] ctld: MaxRecvDataSegmentLength is sent only in response to initiator's MaxRecvDataSegmentLength"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 259439] ctld: MaxRecvDataSegmentLength is sent only in response to initiator's MaxRecvDataSegmentLength"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 259439] ctld: MaxRecvDataSegmentLength is sent only in response to initiator's MaxRecvDataSegmentLength"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 25 Oct 2021 14:58:22 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259439
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") == 0) {
tmp = strtoul(value, NULL, 10);
if (tmp <= 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 = conn->conn_max_send_data_segment_limit;
}
conn->conn_max_send_data_segment_length = tmp;
conn->conn_max_recv_data_segment_length =
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?
---
--
You are receiving this mail because:
You are the assignee for the bug.