Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
[pandora-kernel.git] / drivers / ide / ide-cd.c
index 5108e97..31fc769 100644 (file)
@@ -508,15 +508,22 @@ int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd,
        return (flags & REQ_FAILED) ? -EIO : 0;
 }
 
-static void ide_cd_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd)
+/*
+ * returns true if rq has been completed
+ */
+static bool ide_cd_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd)
 {
        unsigned int nr_bytes = cmd->nbytes - cmd->nleft;
 
        if (cmd->tf_flags & IDE_TFLAG_WRITE)
                nr_bytes -= cmd->last_xfer_len;
 
-       if (nr_bytes > 0)
+       if (nr_bytes > 0) {
                ide_complete_rq(drive, 0, nr_bytes);
+               return true;
+       }
+
+       return false;
 }
 
 static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
@@ -681,7 +688,8 @@ out_end:
                }
 
                if (uptodate == 0 && rq->bio)
-                       ide_cd_error_cmd(drive, cmd);
+                       if (ide_cd_error_cmd(drive, cmd))
+                               return ide_stopped;
 
                /* make sure it's fully ended */
                if (rq->cmd_type != REQ_TYPE_FS) {