Pete Wyckoff wrote:
> [EMAIL PROTECTED] wrote on Sun, 04 May 2008 11:21 +0300:
>> Pete Wyckoff wrote:
>>> [EMAIL PROTECTED] wrote on Mon, 28 Apr 2008 11:20 -0500:
>>>> Erez Zilber wrote:
>>>>> I understand that IB's requirements are too difficult to force. I guess
>>>>> that we will do something like:
>>>>>
>>>>>     * If the scatterlist is aligned, just use it as is.
>>>>>     * If some elements at the beginning/end of the scatterlist are
>>>>>       unaligned, we can copy only them (and use the rest of the
>>>>>       scatterlist as is). We saw that sometimes (e.g. GFS), only the 1st
>>>>>       element is unaligned, so copying the whole data is unnecessary.
>>>>>     * Else, copy the whole scatterlist to buffers that iSER allocates.
>>>>>       This is what we do today with unaligned buffers.
>>>>>
>>>>>       
>>>> Pete, we are discissing the dma_alignment patch you sent. Above are the 
>>>> dma 
>>>> restrictions the iser driver has right now. For the 3rd requirement does 
>>>> that mean we want to set the alignment to be page aligned right?
>>>>     
>>> Erez's alignment rules leave out one case:  when the sg list
>>> has only one element, there are no restrictions on start/end
>>> alignment.
>>>   
>> Yeah, this is the trivial case (which is already covered in the iSER code).
>>
>>> The iser alignment requirements are too complex to express with the
>>> q->dma_alignment approach.  In iser, as Erez suggests, bouncing can
>>> be done.  His second (*) would be a nice addition that would
>>> definitely help some of our apps.
>>>   
>> We will try to send a patch for that soon.
>>
>>> My patch "iscsi iser: remove DMA alignment restriction" changes
>>> iser to make the alignment 0, rather than the default 512, to avoid
>>> the bounce buffering in __blk_rq_map_user().
>> Just to make sure that I understand - "alignment 0 " means that the
>> block layer doesn't care at all about alignment?
> 
> Yep.  The lines to think about are in __blk_rq_map_user:
> 
>         alignment = queue_dma_alignment(q) | q->dma_pad_mask;
>         if (!(uaddr & alignment) && !(len & alignment))
>                 bio = bio_map_user(q, NULL, uaddr, len, reading);
>         else
>                 bio = bio_copy_user(q, uaddr, len, reading);
> 
> As it stands, queue_dma_alignment(q) returns 511.  That forces the
> use of the bio_copy_user path for anything that isn't aligned (start
> and end) on a 512 byte boundary.  Changing it to page alignment
> isn't what we want either.  Zero disables the copy path, and lets
> iser do everything.  You can add printks and test my patch using sg
> or bsg to submit from userspace, to see.
> 

Oh yeah, Pete is right. Since iser has that code already to handle its 
issues we can avoid all the mess by just setting it to zero.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---

Reply via email to