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

Martin K. Petersen
2014-06-02T16:54:35Z

>>>>> "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?

+ /**
+ * 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;
+ }

--
Martin K. Petersen Oracle Linux Engineering