diff mbox

[v3,5/5] target: Fix wrong setting of sense format for PI errors

Message ID 559D1EB6.3090509@dev.mellanox.co.il (mailing list archive)
State New, archived
Headers show

Commit Message

Sagi Grimberg July 8, 2015, 12:59 p.m. UTC
On 7/8/2015 2:14 PM, Sagi Grimberg wrote:
>>
>> And it's actually not true that you'd need descriptor sense to
>> encode the sector information; it'll be stored in the 'information'
>> section (byte 3-6) for fixed format sense.
>
> But when I return the sector info in a fixed size format, the initiator
> is not able to decode the faulty sector:
>
> kernel: DIFv1 Type 1 reference failed on sector: 15 tag: 0xfffffff0
> sector MSB: 0x0000000f
> kernel: sd 10:0:1:0: [sdc] tag#0 FAILED Result: hostbyte=DID_OK
> driverbyte=DRIVER_SENSE
> kernel: sd 10:0:1:0: [sdc] tag#0 Sense Key : Aborted Command [current]
> kernel: sd 10:0:1:0: [sdc] tag#0 Add. Sense: No additional sense
> information
> kernel: sd 10:0:1:0: [sdc] tag#0 CDB: Read(10) 28 20 00 00 00 00 00 00
> 10 00
> kernel: blk_update_request: I/O error, dev sdc, sector 0
>
> Is that a bug?

Bleh, found the bug... It was in scsi_set_sense_information()

For Fixed sized sense the information field is 4 bytes so this fixes it:

I'll send out a separate patch.

Thanks Hannes and Christoph for catching this.

Sagi.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/scsi/scsi_common.c b/drivers/scsi/scsi_common.c
index 41432c1..8cfb7ee 100644
--- a/drivers/scsi/scsi_common.c
+++ b/drivers/scsi/scsi_common.c
@@ -270,7 +270,7 @@  void scsi_set_sense_information(u8 *buf, u64 info)
                 put_unaligned_be64(info, &ucp[4]);
         } else if ((buf[0] & 0x7f) == 0x70) {
                 buf[0] |= 0x80;
-           put_unaligned_be64(info, &buf[3]);
+         put_unaligned_be32(info, &buf[3]);
         }
  }
  EXPORT_SYMBOL(scsi_set_sense_information);