[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/35] scsi-disk: Factor out scsi_disk_emulate_start
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 07/35] scsi-disk: Factor out scsi_disk_emulate_start_stop() |
Date: |
Mon, 12 Sep 2011 16:19:06 +0200 |
From: Markus Armbruster <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
hw/scsi-disk.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 9724d0f..c8ad2e7 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -814,6 +814,18 @@ static int scsi_disk_emulate_read_toc(SCSIRequest *req,
uint8_t *outbuf)
return toclen;
}
+static void scsi_disk_emulate_start_stop(SCSIDiskReq *r)
+{
+ SCSIRequest *req = &r->req;
+ SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, req->dev);
+ bool start = req->cmd.buf[4] & 1;
+ bool loej = req->cmd.buf[4] & 2; /* load on start, eject on !start */
+
+ if (s->qdev.type == TYPE_ROM && loej) {
+ bdrv_eject(s->bs, !start);
+ }
+}
+
static int scsi_disk_emulate_command(SCSIDiskReq *r, uint8_t *outbuf)
{
SCSIRequest *req = &r->req;
@@ -859,10 +871,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r,
uint8_t *outbuf)
goto illegal_request;
break;
case START_STOP:
- if (s->qdev.type == TYPE_ROM && (req->cmd.buf[4] & 2)) {
- /* load/eject medium */
- bdrv_eject(s->bs, !(req->cmd.buf[4] & 1));
- }
+ scsi_disk_emulate_start_stop(r);
break;
case ALLOW_MEDIUM_REMOVAL:
bdrv_set_locked(s->bs, req->cmd.buf[4] & 1);
--
1.7.6
- [Qemu-devel] [PULL 00/35] Block patches, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 06/35] ide/atapi: Track tray open/close state, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 04/35] ide: Reject ATA commands specific to drive kinds, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 01/35] qcow2: removed unused depends_on field, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 03/35] ide: Use a table to declare which drive kinds accept each command, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 05/35] ide/atapi: Clean up misleading name in cmd_start_stop_unit(), Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 02/35] ide: Fix ATA command READ to set ATAPI signature for CD-ROM, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 07/35] scsi-disk: Factor out scsi_disk_emulate_start_stop(),
Kevin Wolf <=
- [Qemu-devel] [PATCH 08/35] scsi-disk: Track tray open/close state, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 11/35] ide/atapi: Track tray locked state, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 10/35] block: Drop tray status tracking, no longer used, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 09/35] block: Revert entanglement of bdrv_is_inserted() with tray status, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 13/35] block: Leave enforcing tray lock to device models, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 14/35] block: Drop medium lock tracking, ask device models instead, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 16/35] rbd: allow client id to be specified in config string, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 21/35] ide/atapi: Preserve tray state on migration, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 12/35] scsi-disk: Track tray locked state, Kevin Wolf, 2011/09/12
- [Qemu-devel] [PATCH 15/35] block: Rename bdrv_set_locked() to bdrv_lock_medium(), Kevin Wolf, 2011/09/12