From: Potnuri Bharat Teja <bharat-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
To: "Nicholas A. Bellinger" <nab-IzHhD5pYlfBP7FQvKIMDCQ@public.gmane.org>
Cc: "sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org"
<sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
SWise OGC
<swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>,
Raju Rangoju <rajur-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>,
Jenny Derzhavetz <jennyf-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [Query] iSER-Target: QP errors observed on increasing MaxXmitDataSegmentLength to 16384 (default = 8192)
Date: Thu, 2 Mar 2017 18:39:59 +0530 [thread overview]
Message-ID: <20170302130957.GA11399@chelsio.com> (raw)
In-Reply-To: <1488449150.21712.129.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
On Thursday, March 03/02/17, 2017 at 15:35:50 +0530, Nicholas A. Bellinger wrote:
> On Thu, 2017-03-02 at 14:31 +0530, Potnuri Bharat Teja wrote:
> > On Thursday, March 03/02/17, 2017 at 14:00:33 +0530, Nicholas A.
> Bellinger wrote:
> > > Hi Bharat & Co,
> > >
> > > Adding Jenny + Or CC', as I believe they are still the main point
> people
> > > for iser-target related items at Mellanox.
> > >
> > > On Fri, 2017-02-24 at 14:44 +0530, Potnuri Bharat Teja wrote:
> > > > Hi Sagi/Nicholas,
> > > >
> > > > When tried changing the MaxXmitDataSegmentLength to 16384
> (default =
> > > > 8192), by changing it from targetcli on target and iscsd.conf on
> > > > initiator, I observe the following errors.
> > > >
> > > > cxgb4 0000:06:00.4: AE qpid 1024 opcode 3 status 0x6 type 0 len
> 0x5c
> > > wrid.hi 0x0 wrid.lo 0x136
> > > > isert: isert_qp_event_callback: QP access error (3): conn
> > > ffff8807da7b6000
> > > > Aligning ISER MaxRecvDataSegmentLength: 4096 down to PAGE_SIZE
> > >
> > > IIRC, this message in
> iscsi_target_login.c:iscsi_login_zero_tsih_s2()
> > > indicates the initiator presented MRDSL was either not PAGE_SIZED
> > > aligned, or less than PAGE_SIZE..
> > >
> > > Not sure why this is happening with a MRDSL=16384..? Can you
> confirm
> > > what MRDSL came across the wire..?
> > Hi Nicholas,
> > Thanks for the reply!
> > I saw the same MRDSL=16384 over the wire.
> > >
> > > This would explain the iw_cxgb4 errors about the receive buffers
> posted
> > > by target are insufficient for incoming data.
> > >
> > > > cxgb4 0000:06:00.4: AE qpid 1026 opcode 3 status 0x6 type 0 len
> 0x5c
> > > wrid.hi 0x0 wrid.lo 0x2
> > > > isert: isert_qp_event_callback: QP access error (3): conn
> > > ffff88053a2ee000
> > > >
> > > > From the error status of iw_cxgb4 the receive buffers posted by
> target
> > > > are unsufficient for the
> > > > incoming data to be placed/DMAed by the HW/adapter.
> > > > Apparently, from the iSER-target code the rx buffers are
> acclocated
> > > > for a fixed size of 8192. from isert_alloc_rx_descriptors() in
> > > > drivers/infiniband/ulp/isert/ib_isert.c
> > > > rx_sg->length = ISER_RX_PAYLOAD_SIZE;
> > > >
> > > > I confirmed the same by increasing the ISER_RX_PAYLOAD_SIZE to
> 16384
> > > > and the errors arent seen.
> > > >
> > >
> > > Mmmm.
> > >
> > > > As far as i could see, from the iSER target code,
> > > > MaxXmitDataSegmentLength should not be changed according to the
> > > > targetcli/openiscsi parameters and should countinue based on iSER
> > > > specific Initiator/targetrecvdatasegmentlength and so does the
> > > > MaxrecvDatasegmentLength.
> > > >
> > > > Please let me know if my observations are right and what could be
> done
> > > > to fix this.
> > > >
> > >
> > > OK, it sounds like a reasonable approach to always enforce the
> default
> > > MXDSL=8192 from the target side.
> > >
> > > The issue of ignoring what the initiator sent for MRDSL, and always
> > > enforcing MRDSL=8192 would be OK if the initiator is presenting a
> MRDSL
> > > larger than 8192, but could be problematic if it is presenting a
> MRDSL
> > > smaller than 8192.
> > >
> > > So I think the right approach would be:
> > >
> > > - Always use MXDSL = 8192 in iser-target, regardless of what's
> > > configured by targetcli via configfs, et al.
> > > - Always honor MRDSL = 8192 in iser-target, when the initiator
> presents
> > > a MRDSL >= 8192 during login.
> > > - If the initiator is attempting to present a MRDSL < 8192, fail
> > > the login with ISCSI_LOGIN_STATUS_INIT_ERR
> > Agreed!
>
> After reading your email again, I may have mistaken one important bit..
>
> If the initiator is proposing MRDSL != 8192, are there still problems
> with iser-initiator hard-coded limits vs. what iser-target is actually
> posting for outgoing non RDMA_WRITE transfers of != 8192..?
>
> Or rather, does initiator proposed MRDSL != 8192 work as expected with
> existing iser-initiator + iser-target code..?
>
Here are my Initiator MRDSL and MXDSL
node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
node.conn[0].iscsi.MaxXmitDataSegmentLength = 16384
and the Target MRDSL and MXDSL:
/> iscsi/iqn.2016-17.org1/tpg1/ get parameter MaxXmitDataSegmentLength
MaxXmitDataSegmentLength=16384
/> iscsi/iqn.2016-17.org1/tpg1/ get parameter MaxRecvDataSegmentLength
MaxRecvDataSegmentLength=8192
To my knowledge, MaxXmitDataSegmentLength should be negotiated to min(8192, 16384).
But the session info shows 16384:
#iscsiadm -m session -P3
-
************************
Negotiated iSCSI params:
************************
HeaderDigest: None
DataDigest: None
MaxRecvDataSegmentLength: 128
MaxXmitDataSegmentLength: 16384
FirstBurstLength: 65536
MaxBurstLength: 262144
ImmediateData: Yes
InitialR2T: Yes
MaxOutstandingR2T: 1
-
with default LIO and openiscsi configuration I see:
MaxXmitDataSegmentLength: 8192
> If this is true and it's only a iser-target + MXDSL specific bug vs.
> hard-coded ISER_RX_PAYLOAD_SIZE definitions mentioned above, then we can
> avoid messing with the initiator proposed MRDSL.
>
From the set-up perspective, I was able to alter the negotiated
MaxXmitDataSegmentLength to 16384 only if I set the MaxXmitDataSegmentLength to
16384 on Target. So, There is high chance the target makeing wrong calculation
> If this is the case, then following (untested) patch should do the
> trick.
Below Patch isnt holding good, I see the issue still and MXDSL set to 16384.
# iscsiadm -m session -P3
Target: iqn.2016-17.chelsio.org8 (non-flash)
Current Portal: 10.0.2.2:3260,1
Persistent Portal: 10.0.2.2:3260,1
-
************************
Negotiated iSCSI params:
************************
HeaderDigest: None
DataDigest: None
MaxRecvDataSegmentLength: 128
MaxXmitDataSegmentLength: 16384
FirstBurstLength: 65536
MaxBurstLength: 262144
ImmediateData: Yes
InitialR2T: Yes
MaxOutstandingR2T: 1
************************
Attached SCSI devices:
************************
Host Number: 13 State: running
scsi13 Channel 00 Id 0 Lun: 0
Attached scsi disk sdj State: running
-
Shall debug further and let you know.
Thanks!
>
> diff --git a/drivers/target/iscsi/iscsi_target_login.c
> b/drivers/target/iscsi/iscsi_target_login.c
> index 303cb65..db811a6 100644
> --- a/drivers/target/iscsi/iscsi_target_login.c
> +++ b/drivers/target/iscsi/iscsi_target_login.c
> @@ -427,49 +427,31 @@ static int iscsi_login_zero_tsih_s2(
> * Set RDMAExtensions=Yes by default for iSER enabled network
> portals
> */
> if (iser) {
> - struct iscsi_param *param;
> - unsigned long mrdsl, off;
> + unsigned long mxdsl;
> int rc;
>
> if (iscsi_change_param_sprintf(conn,
> "RDMAExtensions=Yes"))
> return -1;
> -
> /*
> - * Make MaxRecvDataSegmentLength PAGE_SIZE aligned for
> - * Immediate Data + Unsolicited Data-OUT if necessary..
> + * Due to the hardcoded assumptions about MXDSL for
> iser-target
> + * in ISER_RX_PAYLOAD_SIZE, we must always enforce the
> default
> + * INITIAL_TARGETRECVDATASEGMENTLENGTH = 8192, regardless
> of
> + * what this value may have been set to by user via
> configfs
> + * for traditional iscsi-target operation.
> */
> - param =
> iscsi_find_param_from_key("MaxRecvDataSegmentLength",
> - conn->param_list);
> - if (!param) {
> - iscsit_tx_login_rsp(conn,
> ISCSI_STATUS_CLS_TARGET_ERR,
> - ISCSI_LOGIN_STATUS_NO_RESOURCES);
> - return -1;
> - }
> - rc = kstrtoul(param->value, 0, &mrdsl);
> + rc = kstrtoul(INITIAL_TARGETRECVDATASEGMENTLENGTH, 0,
> &mxdsl);
> if (rc < 0) {
> iscsit_tx_login_rsp(conn,
> ISCSI_STATUS_CLS_TARGET_ERR,
> ISCSI_LOGIN_STATUS_NO_RESOURCES);
> return -1;
> }
> - off = mrdsl % PAGE_SIZE;
> - if (!off)
> - goto check_prot;
> -
> - if (mrdsl < PAGE_SIZE)
> - mrdsl = PAGE_SIZE;
> - else
> - mrdsl -= off;
> -
> - pr_warn("Aligning ISER MaxRecvDataSegmentLength: %lu down"
> - " to PAGE_SIZE\n", mrdsl);
> -
> - if (iscsi_change_param_sprintf(conn,
> "MaxRecvDataSegmentLength=%lu\n", mrdsl))
> + if (iscsi_change_param_sprintf(conn,
> "MaxXmitDataSegmentLength=%lu\n", mxdsl))
> return -1;
> +
> /*
> * ISER currently requires that ImmediateData +
> Unsolicited
> * Data be disabled when protection / signature MRs are
> enabled.
> */
> -check_prot:
> if (sess->se_sess->sup_prot_ops &
> (TARGET_PROT_DOUT_STRIP | TARGET_PROT_DOUT_PASS |
> TARGET_PROT_DOUT_INSERT)) {
> --
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-03-02 13:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-24 9:14 [Query] iSER-Target: QP errors observed on increasing MaxXmitDataSegmentLength to 16384 (default = 8192) Potnuri Bharat Teja
2017-03-02 8:30 ` Nicholas A. Bellinger
2017-03-02 9:01 ` Potnuri Bharat Teja
[not found] ` <20170302090101.GA31347-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
2017-03-02 10:05 ` Nicholas A. Bellinger
[not found] ` <1488449150.21712.129.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2017-03-02 13:09 ` Potnuri Bharat Teja [this message]
2017-03-06 15:20 ` Sagi Grimberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170302130957.GA11399@chelsio.com \
--to=bharat-ut6up61k2wzbdgjk7y7tuq@public.gmane.org \
--cc=jennyf-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=nab-IzHhD5pYlfBP7FQvKIMDCQ@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=rajur-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org \
--cc=sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org \
--cc=swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org \
--cc=target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox