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:
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);
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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html