提交 ebf46023 编写于 作者: G Gerd Hoffmann 提交者: Anthony Liguori

scsi: use command defines in scsi-disk.c

Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 2ec749cb
......@@ -379,16 +379,16 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
if (lun || buf[1] >> 5) {
/* Only LUN 0 supported. */
DPRINTF("Unimplemented LUN %d\n", lun ? lun : buf[1] >> 5);
if (command != 0x03 && command != 0x12) /* REQUEST SENSE and INQUIRY */
if (command != REQUEST_SENSE && command != INQUIRY)
goto fail;
}
switch (command) {
case 0x0:
case TEST_UNIT_READY:
DPRINTF("Test Unit Ready\n");
if (!bdrv_is_inserted(s->dinfo->bdrv))
goto notready;
break;
case 0x03:
case REQUEST_SENSE:
DPRINTF("Request Sense (len %d)\n", len);
if (len < 4)
goto fail;
......@@ -406,7 +406,7 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
outbuf[1] = 0;
outbuf[2] = s->sense;
break;
case 0x12:
case INQUIRY:
DPRINTF("Inquiry (len %d)\n", len);
if (buf[1] & 0x2) {
/* Command support data - optional, not implemented */
......@@ -562,18 +562,18 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
outbuf[7] = 0x10 | (r->req.bus->tcq ? 0x02 : 0);
r->iov.iov_len = len;
break;
case 0x16:
case RESERVE:
DPRINTF("Reserve(6)\n");
if (buf[1] & 1)
goto fail;
break;
case 0x17:
case RELEASE:
DPRINTF("Release(6)\n");
if (buf[1] & 1)
goto fail;
break;
case 0x1a:
case 0x5a:
case MODE_SENSE:
case MODE_SENSE_10:
{
uint8_t *p;
int page;
......@@ -724,18 +724,18 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
r->iov.iov_len = len;
}
break;
case 0x1b:
case START_STOP:
DPRINTF("Start Stop Unit\n");
if (bdrv_get_type_hint(s->dinfo->bdrv) == BDRV_TYPE_CDROM &&
(buf[4] & 2))
/* load/eject medium */
bdrv_eject(s->dinfo->bdrv, !(buf[4] & 1));
break;
case 0x1e:
case ALLOW_MEDIUM_REMOVAL:
DPRINTF("Prevent Allow Medium Removal (prevent = %d)\n", buf[4] & 3);
bdrv_set_locked(s->dinfo->bdrv, buf[4] & 1);
break;
case 0x25:
case READ_CAPACITY:
DPRINTF("Read Capacity\n");
/* The normal LEN field for this command is zero. */
memset(outbuf, 0, 8);
......@@ -764,8 +764,8 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
return 0;
}
break;
case 0x08:
case 0x28:
case READ_6:
case READ_10:
case 0x88:
DPRINTF("Read (sector %" PRId64 ", count %d)\n", lba, len);
if (lba > s->max_lba)
......@@ -773,8 +773,8 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
r->sector = lba * s->cluster_size;
r->sector_count = len * s->cluster_size;
break;
case 0x0a:
case 0x2a:
case WRITE_6:
case WRITE_10:
case 0x8a:
DPRINTF("Write (sector %" PRId64 ", count %d)\n", lba, len);
if (lba > s->max_lba)
......@@ -783,11 +783,11 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
r->sector_count = len * s->cluster_size;
is_write = 1;
break;
case 0x35:
case SYNCHRONIZE_CACHE:
DPRINTF("Synchronise cache (sector %" PRId64 ", count %d)\n", lba, len);
bdrv_flush(s->dinfo->bdrv);
break;
case 0x43:
case READ_TOC:
{
int start_track, format, msf, toclen;
......@@ -833,12 +833,12 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
outbuf[7] = 8; // CD-ROM
r->iov.iov_len = 8;
break;
case 0x56:
case RESERVE_10:
DPRINTF("Reserve(10)\n");
if (buf[1] & 3)
goto fail;
break;
case 0x57:
case RELEASE_10:
DPRINTF("Release(10)\n");
if (buf[1] & 3)
goto fail;
......@@ -885,7 +885,7 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
outbuf[3] = 8;
r->iov.iov_len = 16;
break;
case 0x2f:
case VERIFY:
DPRINTF("Verify (sector %" PRId64 ", count %d)\n", lba, len);
break;
default:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册