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.

Reply via email to