[stgt] [PATCH] ISCSI: Honour MaxRecvDataSegmentLength for NORMAL sessions

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Sat Aug 18 10:32:29 CEST 2012


On Sat, 18 Aug 2012 17:18:54 +0900 (JST)
FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp> wrote:

> On Sat, 18 Aug 2012 18:13:05 +1000
> ronnie sahlberg <ronniesahlberg at gmail.com> wrote:
> 
> > On Sat, Aug 18, 2012 at 6:06 PM, FUJITA Tomonori
> > <fujita.tomonori at lab.ntt.co.jp> wrote:
> >> On Sat, 18 Aug 2012 17:04:51 +0900 (JST)
> >> FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp> wrote:
> >>
> >>> On Sat, 18 Aug 2012 09:03:54 +1000
> >>> Ronnie Sahlberg <ronniesahlberg at gmail.com> wrote:
> >>>
> >>>> Fix a bug in iscsid.c with regards to MaxRecvDataSegmentLength.
> >>>> The parsing of this login key only updated the settings for how large PDUs we can send for DISCOVERY sessions.
> >>>
> >>> Really? I thought that we call param_set_val() for
> >>> ISCSI_PARAM_MAX_XMIT_DLENGTH in SESSION_NORMAL. If you configure
> >>> ISCSI_PARAM_MAX_XMIT_DLENGTH, tgtd honors MaxRecvDataSegmentLength
> >>> that an initiator sends?
> >>>
> >>> tgtadm --op show --mode target --tid 1 MaxRecvDataSegmentLength=8192
> >>
> >> Oops, this should be something like:
> >>
> >> tgtadm --op update --mode target --tid 1 --name MaxXmitDataSegmentLength --value 16384
> > 
> > Why set it manually from the tgtadm command line?
> > The initiator already told tgtd what the size is, so only thing
> > required is to fix the bug to make the target honour what the
> > initiator aleady sent to the target.
> 
> Yeah, but tgtd still needs to check if the value that an initiator
> told is acceptable from the iscsi spec (512 - 2^24 -1).
> 
> I agree that we had better to improve the current code. Setting
> MaxXmitDataSegmentLength by hand is not a good idea.

The following patch might work. I'm not sure this patch works if an
initiator doesn't send MaxRecvDataSegmentLength. IIRC, open-iscsi
always send.


diff --git a/usr/iscsi/target.c b/usr/iscsi/target.c
index 3a91404..aad1556 100644
--- a/usr/iscsi/target.c
+++ b/usr/iscsi/target.c
@@ -433,7 +433,7 @@ int iscsi_target_create(struct target *t)
 	struct iscsi_target *target;
 	struct param default_tgt_session_param[] = {
 		[ISCSI_PARAM_MAX_RECV_DLENGTH] = {0, 8192},
-		[ISCSI_PARAM_MAX_XMIT_DLENGTH] = {0, 8192},  /* do not edit */
+		[ISCSI_PARAM_MAX_XMIT_DLENGTH] = {0, 262144},  /* do not edit */
 		[ISCSI_PARAM_HDRDGST_EN] = {0, DIGEST_NONE},
 		[ISCSI_PARAM_DATADGST_EN] = {0, DIGEST_NONE},
 		[ISCSI_PARAM_INITIAL_R2T_EN] = {0, 1},
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list