On 07/04/2014 19:34, Mike Christie wrote:
On 04/06/2014 01:03 PM, Or Gerlitz wrote:
On Sun, Apr 6, 2014, Michael Christie <[email protected]> wrote:
On Apr 6, 2014, Or Gerlitz <[email protected]> wrote:
the kernel code path of iscsi_complete_pdu--> __iscsi_complete_pdu -->
iscsi_scsi_cmd_rsp
uses a "datalen" value which should account for the length of the data received
from the target.
In iser/iscsi_iser_recv() we don't skip the AHS in case the target sent it and
I'd like to fix it.
I wasn't fully surewhat is done today in iscsi_tcp... I see few hits in
libiscsi_tcp.c for ahslen but didn't manageto spot the a place where the ahs is
being skipped, is it?
You saw iscsi_tcp_hdr_recv_done in libiscsi_tcp.c right? We just have a
preallocated header buffer that we copy to. That function just detects the ahs
then sets things up so iscsi_tcp_recv_skb reads it into that buffer.
Yes, I saw iscsi_tcp_hdr_recv_done() but I wasn't sure to fully follow
on what's exactly done there w.r.t to the AHS, it reads the ahs len
and adds it to two size fields, and I was under the impression that
the AHS is skipped before the data pointer is provided to the
iscsi_complete_pdu--> __iscsi_complete_pdu --> iscsi_scsi_cmd_rsp
call chain but couldn't prove it to myself, so the question, is this
really the case? and I can align iser to do the same practice.
Ah ok, I think I see what you are saying. Yeah, probably a bug in
iscsi_tcp/libiscsi_tcp.
We would read in the bhs by doing:
iscsi_sw_tcp_recv -> iscsi_tcp_recv_skb -> iscsi_tcp_segment_recv
iscsi_tcp_recv_skb then would call segment->done which calls
iscsi_tcp_hdr_recv_done. That updates the sizes for the ahs.
iscsi_tcp_recv_skb would then return ISCSI_TCP_SEGMENT_DONE and we would
not read in the ahs. That last part is a bug.
What should have happened is that segment->done should have indicated
that there was more data (the ahs parts), and we should have continued
reading in iscsi_tcp_recv_skb.
basically in iser, I would 1st want to change it such that we skip the
AHS till there's code in libiscsi to handle it.
Ccing Boaz to see if there is some easy osd test script to test it out and fix.
I see that Boaz said AFAHK there are no commands under which AHS is
expected on the reply, so just to
make sure against faulty target we should skip it even if sent, agree?
--
You received this message because you are subscribed to the Google Groups
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.