[Stgt-devel] [Ips] Calculating the VA in iSER header
Eli Dorfman
dorfman.eli
Wed Apr 16 10:22:04 CEST 2008
According to Mike's explanation below it seems that we have a bug in
iSER initiator.
Fixing this bug will require a fix in the stgt iSER code.
The problem is that the initiator send a VA which already includes an
offset for the unsolicited data (which is wrong).
In iser_initiator.c::iser_prepare_write_cmd the code looks like this:
hdr->write_va = cpu_to_be64(regd_buf->reg.va + unsol_sz);
we think that it should be modified to:
hdr->write_va = cpu_to_be64(regd_buf->reg.va);
Let's discuss this and verify we interpret the spec correctly.
If agreed we will send a patch.
Eli
2008/4/15 Mike Ko <mako at almaden.ibm.com>:
>
> VA is a concept introduced in an Infiniband annex to support iSER. It
> appears in the expanded iSER header for Infiniband use only to support the
> non-Zero Based Virtual Address (non-ZBVA) used in Infiniband vs the ZBVA
> used in IETF.
>
> "The DataDescriptorOut describes the I/O buffer starting with the immediate
> unsolicited data (if any), followed by the non-immediate unsolicited data
> (if any) and solicited data." If non-ZBVA mode is used, then VA points to
> the beginning of this buffer. So in your example, the VA field in the
> expanded iSER header will be zero. Note that for IETF, ZBVA is assumed and
> there is no provision to specify a different VA in the iSER header.
>
> Tagged offset (TO) refers to the offset within a tagged buffer in RDMA Write
> and RDMA Read Request Messages. When sending non-immediate unsolicited
> data, Send Message types are used and the TO field is not present. Instead,
> the buffer offset is appropriately represented by the Buffer Offset field in
> the SCSI Data-Out PDU. Note that Tagged Offset is not the same as write VA
> and it does not appear in the iSER header.
>
> Mike
>
>
>
> Erez Zilber <erezz at voltaire.com>
> Sent by: ips-bounces at ietf.org
>
> 04/15/2008 06:40 AM
>
> To ips at ietf.org
>
> cc
>
> Subject [Ips] Calculating the VA in iSER header
>
>
>
>
>
>
> We're trying to understand what should be the write VA (tagged offset)
> in the iSER header for WRITE commands. If unsolicited data is to be
> sent, should the VA be the original VA or should it be original VA +
> FirstBurstLength?
>
>
> Example:
>
>
> InitialR2T=No
>
> FirstBurstLength = 1000
>
>
> Base address of the registered buffer = 0
>
>
> Now, what should be the VA in the iSER header? 0 or 1000?
>
>
> We read the following paragraph in the iSER spec, but didn't get an
> answer from there:
>
>
> * If there is solicited data to be transferred for the SCSI write or
> bidirectional command, as indicated by the Expected Data Transfer
> Length in the SCSI Command PDU exceeding the value of
> UnsolicitedDataSize, the iSER layer at the initiator MUST do the
> following:
>
> a. It MUST allocate a Write STag for the I/O Buffer defined by
> the qualifier DataDescriptorOut. The DataDescriptorOut
> describes the I/O buffer starting with the immediate
> unsolicited data (if any), followed by the non-immediate
> unsolicited data (if any) and solicited data. This means
> that the BufferOffset for the SCSI Data-out for this
> command is equal to the TO. This implies that a zero TO
> for this STag points to the beginning of this I/O Buffer.
>
>
> Thanks,
>
> --
>
> ____________________________________________________________
>
> Erez Zilber | 972-9-971-7689
>
> Software Engineer, Storage Solutions
>
> Voltaire ? _The Grid Backbone_
>
> __
>
> www.voltaire.com <http://www.voltaire.com/>
>
>
>
> _______________________________________________
> Ips mailing list
> Ips at ietf.org
> https://www.ietf.org/mailman/listinfo/ips
>
>
> _______________________________________________
> Ips mailing list
> Ips at ietf.org
> https://www.ietf.org/mailman/listinfo/ips
>
>
More information about the stgt
mailing list