mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 21:40:49 +00:00
pc-bios/s390-ccw: Refactor scsi_inquiry function
If we want to issue any of the SCSI Inquiry EVPD pages, which we do, we could use this function to issue both types of commands with a little bit of refactoring. Signed-off-by: Eric Farman <farman@linux.vnet.ibm.com> Message-Id: <20170510155359.32727-5-farman@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
5ffd4a3c2d
commit
9c12359c57
@ -26,6 +26,12 @@
|
||||
#define SCSI_SENSE_KEY_NO_SENSE 0
|
||||
#define SCSI_SENSE_KEY_UNIT_ATTENTION 6
|
||||
|
||||
/* SCSI Inquiry Types */
|
||||
#define SCSI_INQUIRY_STANDARD 0x00U
|
||||
|
||||
/* SCSI Inquiry Pages */
|
||||
#define SCSI_INQUIRY_STANDARD_NONE 0x00U
|
||||
|
||||
union ScsiLun {
|
||||
uint64_t v64; /* numeric shortcut */
|
||||
uint8_t v8[8]; /* generic 8 bytes representation */
|
||||
|
@ -89,10 +89,13 @@ static void vs_run(const char *title, VirtioCmd *cmd, VDev *vdev,
|
||||
|
||||
/* SCSI protocol implementation routines */
|
||||
|
||||
static bool scsi_inquiry(VDev *vdev, void *data, uint32_t data_size)
|
||||
static bool scsi_inquiry(VDev *vdev, uint8_t evpd, uint8_t page,
|
||||
void *data, uint32_t data_size)
|
||||
{
|
||||
ScsiCdbInquiry cdb = {
|
||||
.command = 0x12,
|
||||
.b1 = evpd,
|
||||
.b2 = page,
|
||||
.alloc_len = data_size < 65535 ? data_size : 65535,
|
||||
};
|
||||
VirtioCmd inquiry[] = {
|
||||
@ -346,7 +349,10 @@ void virtio_scsi_setup(VDev *vdev)
|
||||
}
|
||||
|
||||
/* read and cache SCSI INQUIRY response */
|
||||
if (!scsi_inquiry(vdev, scsi_inquiry_std_response,
|
||||
if (!scsi_inquiry(vdev,
|
||||
SCSI_INQUIRY_STANDARD,
|
||||
SCSI_INQUIRY_STANDARD_NONE,
|
||||
scsi_inquiry_std_response,
|
||||
sizeof(scsi_inquiry_std_response))) {
|
||||
virtio_scsi_verify_response(&resp, "virtio-scsi:setup:inquiry");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user