Re: [PATCH v2 1/3] scsi_cmnd: Introduce scsi_transfer_length helper

Atchley, Scott
2014-06-26T15:41:48Z

On Jun 26, 2014, at 10:55 AM, James Bottomley <James.Bottomley@HansenPartnership.com> wrote:

> On Thu, 2014-06-26 at 16:53 +0200, Bart Van Assche wrote:
>> On 06/11/14 11:09, Sagi Grimberg wrote:
>>> + return xfer_len + (xfer_len >> ilog2(sector_size)) * 8;
>>
>> Sorry that I just noticed this now, but why is a shift-right and ilog2()
>> used in the above expression instead of just dividing the transfer
>> length by the sector size ?
>
> It's a performance thing. Division is really slow on most CPUs.
> However, we know the divisor is a power of two so we re-express the
> division as a shift, which the processor can do really fast.
>
> James

I have done this in the past as well, but have you benchmarked it? Compilers typically do the right thing in this case (i.e replace division with shift).

Scott