if (time_after(jiffies, info->write_timeout))
                return 0;
        else {
-               struct request_queue *q = drive->queue;
-               unsigned long flags;
-
                /*
-                * take a breather relying on the unplug timer to kick us again
+                * take a breather
                 */
-
-               spin_lock_irqsave(q->queue_lock, flags);
-               blk_plug_device(q);
-               spin_unlock_irqrestore(q->queue_lock, flags);
-
+               blk_delay_queue(drive->queue, 1);
                return 1;
        }
 }
        blk_queue_dma_alignment(q, 31);
        blk_queue_update_dma_pad(q, 15);
 
-       q->unplug_delay = max((1 * HZ) / 1000, 1);
-
        drive->dev_flags |= IDE_DFLAG_MEDIA_CHANGED;
        drive->atapi_flags = IDE_AFLAG_NO_EJECT | ide_cd_flags(id);