[SCSI] scsi_debug: GET LBA STATUS response length correction
authorDouglas Gilbert <dgilbert@interlog.com>
Fri, 20 Jan 2012 00:30:00 +0000 (19:30 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 19 Feb 2012 14:08:57 +0000 (08:08 -0600)
The SCSI GET LBA STATUS command was introduced in SBC-3 revision
20 in September 2009. At that time the Parameter Data Length
field in the response had an associated byte offset of 8.

Then in SBC-3 revision 25 (October 2010) that byte offset was
changed to 4. The sg_get_lba_status utility in sg3_utils version
1.33 (released earlier today) has been changed to calculate
the newer response length. However the implementation of
GET LBA STATUS command in the scsi_debug driver still uses the
original byte offset.

modify the Parameter Data Length field value in the GET LBA STATUS command
response to comply with the change in SBC-3 revision 25

Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/scsi_debug.c

index 6888b2ca5bfcdaa470dd7c44219f2507247f46f9..d2fd0efca565f0adef4adcca392211a77dc10ce6 100644 (file)
@@ -2220,7 +2220,7 @@ static int resp_get_lba_status(struct scsi_cmnd * scmd,
        mapped = map_state(lba, &num);
 
        memset(arr, 0, SDEBUG_GET_LBA_STATUS_LEN);
-       put_unaligned_be32(16, &arr[0]);        /* Parameter Data Length */
+       put_unaligned_be32(20, &arr[0]);        /* Parameter Data Length */
        put_unaligned_be64(lba, &arr[8]);       /* LBA */
        put_unaligned_be32(num, &arr[16]);      /* Number of blocks */
        arr[20] = !mapped;                      /* mapped = 0, unmapped = 1 */