diff mbox

[32/55] ide/atapi: Don't fail eject when tray is already open

Message ID 1311179069-27882-33-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster July 20, 2011, 4:24 p.m. UTC
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 <armbru@redhat.com>
---
 hw/ide/atapi.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Christoph Hellwig July 26, 2011, 12:16 p.m. UTC | #1
On Wed, Jul 20, 2011 at 06:24:06PM +0200, Markus Armbruster wrote:
> 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 <armbru@redhat.com>

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
diff mbox

Patch

diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
index 1be6cbf..9f384c8 100644
--- a/hw/ide/atapi.c
+++ b/hw/ide/atapi.c
@@ -899,7 +899,7 @@  static void cmd_start_stop_unit(IDEState *s, uint8_t* buf)
     bool loej = buf[4] & 2;
 
     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);