[SCSI] scsi_debug: add support for rotation speed
Add support for VPD page b1 to scsi_debug SCSI VPD page b1 reports the nominal rotation speed of the device. Since scsi_debug is ram-based, claim to be a non-rotating medium. Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Acked-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
f80f868ec4
commit
eac6e8e449
|
@ -643,6 +643,14 @@ static int inquiry_evpd_b0(unsigned char * arr)
|
||||||
return sizeof(vpdb0_data);
|
return sizeof(vpdb0_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int inquiry_evpd_b1(unsigned char *arr)
|
||||||
|
{
|
||||||
|
memset(arr, 0, 0x3c);
|
||||||
|
arr[0] = 0;
|
||||||
|
arr[1] = 1;
|
||||||
|
|
||||||
|
return 0x3c;
|
||||||
|
}
|
||||||
|
|
||||||
#define SDEBUG_LONG_INQ_SZ 96
|
#define SDEBUG_LONG_INQ_SZ 96
|
||||||
#define SDEBUG_MAX_INQ_ARR_SZ 584
|
#define SDEBUG_MAX_INQ_ARR_SZ 584
|
||||||
|
@ -698,6 +706,7 @@ static int resp_inquiry(struct scsi_cmnd * scp, int target,
|
||||||
arr[n++] = 0x88; /* SCSI ports */
|
arr[n++] = 0x88; /* SCSI ports */
|
||||||
arr[n++] = 0x89; /* ATA information */
|
arr[n++] = 0x89; /* ATA information */
|
||||||
arr[n++] = 0xb0; /* Block limits (SBC) */
|
arr[n++] = 0xb0; /* Block limits (SBC) */
|
||||||
|
arr[n++] = 0xb1; /* Block characteristics (SBC) */
|
||||||
arr[3] = n - 4; /* number of supported VPD pages */
|
arr[3] = n - 4; /* number of supported VPD pages */
|
||||||
} else if (0x80 == cmd[2]) { /* unit serial number */
|
} else if (0x80 == cmd[2]) { /* unit serial number */
|
||||||
arr[1] = cmd[2]; /*sanity */
|
arr[1] = cmd[2]; /*sanity */
|
||||||
|
@ -737,6 +746,9 @@ static int resp_inquiry(struct scsi_cmnd * scp, int target,
|
||||||
} else if (0xb0 == cmd[2]) { /* Block limits (SBC) */
|
} else if (0xb0 == cmd[2]) { /* Block limits (SBC) */
|
||||||
arr[1] = cmd[2]; /*sanity */
|
arr[1] = cmd[2]; /*sanity */
|
||||||
arr[3] = inquiry_evpd_b0(&arr[4]);
|
arr[3] = inquiry_evpd_b0(&arr[4]);
|
||||||
|
} else if (0xb1 == cmd[2]) { /* Block characteristics (SBC) */
|
||||||
|
arr[1] = cmd[2]; /*sanity */
|
||||||
|
arr[3] = inquiry_evpd_b1(&arr[4]);
|
||||||
} else {
|
} else {
|
||||||
/* Illegal request, invalid field in cdb */
|
/* Illegal request, invalid field in cdb */
|
||||||
mk_sense_buffer(devip, ILLEGAL_REQUEST,
|
mk_sense_buffer(devip, ILLEGAL_REQUEST,
|
||||||
|
|
Loading…
Reference in New Issue