On 04/08/2014 02:35 AM, Or Gerlitz wrote: > 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?
That sounds good. Just do something that will not cause a kernel crash until a case we can test against comes up. -- 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.
