parisc: remove unused local out_putf label
[safe/jmp/linux-2.6] / drivers / ide / ide-pm.c
index 0c206c6..60538d9 100644 (file)
@@ -67,7 +67,7 @@ int generic_ide_resume(struct device *dev)
        blk_put_request(rq);
 
        if (err == 0 && dev->driver) {
-               ide_driver_t *drv = to_ide_driver(dev->driver);
+               struct ide_driver *drv = to_ide_driver(dev->driver);
 
                if (drv->resume)
                        drv->resume(drive);
@@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t *drive, struct request *rq)
               blk_pm_suspend_request(rq) ? "suspend" : "resume");
 #endif
        spin_lock_irqsave(q->queue_lock, flags);
-       if (blk_pm_suspend_request(rq)) {
+       if (blk_pm_suspend_request(rq))
                blk_stop_queue(q);
-       } else {
+       else
                drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
-               blk_start_queue(q);
-       }
        spin_unlock_irqrestore(q->queue_lock, flags);
 
        drive->hwif->rq = NULL;
@@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
                 * point.
                 */
                ide_hwif_t *hwif = drive->hwif;
+               struct request_queue *q = drive->queue;
+               unsigned long flags;
                int rc;
 #ifdef DEBUG_PM
                printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
@@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
                rc = ide_wait_not_busy(hwif, 100000);
                if (rc)
                        printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
+
+               spin_lock_irqsave(q->queue_lock, flags);
+               blk_start_queue(q);
+               spin_unlock_irqrestore(q->queue_lock, flags);
        }
 }