===================================================================
@@ -532,7 +532,8 @@ repeat:
if (startstop == ide_stopped) {
rq = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
+ hwif->rq = NULL;
goto repeat;
}
} else
@@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
spin_lock_irq(&hwif->lock);
enable_irq(hwif->irq);
if (startstop == ide_stopped && hwif->polling == 0) {
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
ide_unlock_port(hwif);
plug_device = 1;
}
@@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
*/
if (startstop == ide_stopped && hwif->polling == 0) {
BUG_ON(hwif->handler);
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
ide_unlock_port(hwif);
plug_device = 1;
}