[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 06/27] scsi-disk: Factor out scsi_disk_emulate_st
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v3 06/27] scsi-disk: Factor out scsi_disk_emulate_start_stop() |
Date: |
Tue, 6 Sep 2011 18:58:39 +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 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] [PATCH v3 02/27] ide: Use a table to declare which drive kinds accept each command, (continued)
- [Qemu-devel] [PATCH v3 02/27] ide: Use a table to declare which drive kinds accept each command, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 16/27] scsi-disk: Fix START_STOP to fail when it can't eject, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 19/27] block: Drop BlockDriverState member removable, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 07/27] scsi-disk: Track tray open/close state, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 12/27] block: Leave enforcing tray lock to device models, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 08/27] block: Revert entanglement of bdrv_is_inserted() with tray status, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 06/27] scsi-disk: Factor out scsi_disk_emulate_start_stop(),
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 01/27] ide: Fix ATA command READ to set ATAPI signature for CD-ROM, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 20/27] block: Show whether the virtual tray is open in info block, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 26/27] block: New change_media_cb() parameter load, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 15/27] ide/atapi: Don't fail eject when tray is already open, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 13/27] block: Drop medium lock tracking, ask device models instead, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 24/27] block: Reset buffer alignment on detach, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 25/27] nbd: Clean up use of block_int.h, Markus Armbruster, 2011/09/06
- [Qemu-devel] [PATCH v3 23/27] block: New bdrv_set_buffer_alignment(), Markus Armbruster, 2011/09/06