HomeFreeBSD

iscsi: Fetch limits based on a socket rather than assuming global limits.

Description

iscsi: Fetch limits based on a socket rather than assuming global limits.

cxgbei needs the ability to return different limits based on the
connection (e.g. if the connection is over a T5 adapter or a T6
adapter as well as factoring in the MTU).

This change plumbs through the changes in the ioctls without changing
any of the backends. The limits callback passed to icl_register now
accepts a second socket argument which holds the integer file
descriptor. To support ABI compatiblity for old binaries, the
callback should return "global" values if the socket fd is zero.

The CTL_ISCSI_LIMITS argument used with CTL_ISCSI by ctld(8) now
accepts the socket fd in a field that was previously part of a
reserved spare field. Old binaries zero this request which results in
passing a socket fd of 0 to the limits callback.

The ISCSIDREQUEST ioctl no longer returns limits. Instead, iscsid(8)
invokes a new ISCSIDLIMITS ioctl after establishing the connection via
connect(2). For ABI compat, if the old ISCSIDREQUEST is invoked, the
global limits are still fetched (with a socket fd of 0) and returned.

Reviewed by: mav
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D34928

(cherry picked from commit 7b02c1e8c6a17d11b69988f3e1b449b783785415)

Details

Provenance
jhbAuthored on Apr 18 2022, 7:48 PM
Reviewer
mav
Differential Revision
D34928: iscsi: Fetch limits based on a socket rather than assuming global limits.
Parents
rGb0da3d887c4b: Clang: Add Diags for targets pre to i686 for -fcf-protection
Branches
Unknown
Tags
Unknown