[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 19/55] scsi-disk: Factor out scsi_disk_emulate_start
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 19/55] scsi-disk: Factor out scsi_disk_emulate_start_stop() |
Date: |
Wed, 20 Jul 2011 18:23:53 +0200 |
Signed-off-by: Markus Armbruster <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 c4643d0..544ecef 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -817,6 +817,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;
+
+ if (s->drive_kind == SCSI_CD && loej) {
+ bdrv_eject(s->bs, !start);
+ }
+}
+
static int scsi_disk_emulate_command(SCSIDiskReq *r, uint8_t *outbuf)
{
SCSIRequest *req = &r->req;
@@ -870,10 +882,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r,
uint8_t *outbuf)
goto illegal_request;
break;
case START_STOP:
- if (s->drive_kind == SCSI_CD && (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.2.3
- Re: [Qemu-devel] [PATCH 11/55] ide: Clean up case label indentation in ide_exec_cmd(), (continued)
- [Qemu-devel] [PATCH 24/55] ide/atapi: Track tray locked state, Markus Armbruster, 2011/07/20
- [Qemu-devel] [PATCH 17/55] ide/atapi: Switch from BlockDriverState's tray_open to own, Markus Armbruster, 2011/07/20
- [Qemu-devel] [PATCH 19/55] scsi-disk: Factor out scsi_disk_emulate_start_stop(),
Markus Armbruster <=
- [Qemu-devel] [PATCH 02/55] block: Reset device model callbacks on detach, Markus Armbruster, 2011/07/20
- [Qemu-devel] [PATCH 36/55] ide: Give vmstate structs internal linkage where possible, Markus Armbruster, 2011/07/20
- [Qemu-devel] [PATCH 20/55] scsi-disk: Track tray open/close state, Markus Armbruster, 2011/07/20
- [Qemu-devel] [PATCH 49/55] block: Declare qemu_blockalign() in block.h, not block_int.h, Markus Armbruster, 2011/07/20