#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 */
/* 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[] = {
}
/* 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");
}