Re: [PATCH 2/2] TARGET/sbc,loopback: Adjust command data length in case pi exists on the wire

Sagi Grimberg
2014-06-05T17:22:15Z

On 6/2/2014 7:54 PM, Martin K. Petersen wrote:
>>>>>> "Sagi" == Sagi Grimberg <sagig@mellanox.com> writes:
> Sagi,
>
> Sagi> In various areas of the code, it is assumed that
> Sagi> se_cmd-> data_length describes pure data. In case
> Sagi> that protection information exists over the wire (protect bits is
> Sagi> are on) the target core decrease the protection length from the
> Sagi> data length (instead of each transport peeking in the cdb).
>
> I completely agree with the notion of including PI in the transport byte
> count.
>
> Why do you open code the transfer length adjustment below?

Can't say I have a good reason for that.
I'll move this logic to scsi_cmnd.h.

>
> + /**
> + * Adjust data_length to include
> + * protection information
> + **/
> + switch (sc->device->sector_size) {
> + case 512:
> + data_len += (data_len >> 9) * 8;
> + break;
> + case 1024:
> + data_len += (data_len >> 10) * 8;
> + break;
> + case 2048:
> + data_len += (data_len >> 11) * 8;
> + break;
> + case 4096:
> + data_len += (data_len >> 12) * 8;
> + break;
> + default:
> + data_len +=
> + (data_len >> ilog2(sc->device->sector_size)) * 8;
> + }
>