From patchwork Tue Sep 6 16:58:48 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v3,15/27] ide/atapi: Don't fail eject when tray is already open Date: Tue, 06 Sep 2011 06:58:48 -0000 From: Markus Armbruster X-Patchwork-Id: 113636 Message-Id: <1315328340-6192-16-git-send-email-armbru@redhat.com> To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefano.stabellini@eu.citrix.com, lcapitulino@redhat.com, hare@suse.de, amit.shah@redhat.com, pbonzini@redhat.com, hch@lst.de MMC-5 6.40.2.6 specifies that START STOP UNIT succeeds when the drive already has the requested state. cmd_start_stop_unit() fails when asked to eject while the tray is open and locked. Fix that. Signed-off-by: Markus Armbruster --- hw/ide/atapi.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c index 06778f3..3f909c3 100644 --- a/hw/ide/atapi.c +++ b/hw/ide/atapi.c @@ -910,7 +910,7 @@ static void cmd_start_stop_unit(IDEState *s, uint8_t* buf) bool loej = buf[4] & 2; /* load on start, eject on !start */ if (loej) { - if (!start && s->tray_locked) { + if (!start && !s->tray_open && s->tray_locked) { sense = bdrv_is_inserted(s->bs) ? SENSE_NOT_READY : SENSE_ILLEGAL_REQUEST; ide_atapi_cmd_error(s, sense, ASC_MEDIA_REMOVAL_PREVENTED);