aboutsummaryrefslogtreecommitdiff
path: root/drivers/block/paride/pd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/paride/pd.c')
-rw-r--r--drivers/block/paride/pd.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/block/paride/pd.c b/drivers/block/paride/pd.c
index 9ec5d4ac0b6..d2ca3f55206 100644
--- a/drivers/block/paride/pd.c
+++ b/drivers/block/paride/pd.c
@@ -410,11 +410,14 @@ static void run_fsm(void)
pd_claimed = 0;
phase = NULL;
spin_lock_irqsave(&pd_lock, saved_flags);
- __blk_end_request_cur(pd_req,
- res == Ok ? 0 : -EIO);
- pd_req = elv_next_request(pd_queue);
- if (!pd_req)
- stop = 1;
+ if (!__blk_end_request_cur(pd_req,
+ res == Ok ? 0 : -EIO)) {
+ pd_req = elv_next_request(pd_queue);
+ if (!pd_req)
+ stop = 1;
+ else
+ blkdev_dequeue_request(pd_req);
+ }
spin_unlock_irqrestore(&pd_lock, saved_flags);
if (stop)
return;
@@ -706,6 +709,7 @@ static void do_pd_request(struct request_queue * q)
pd_req = elv_next_request(q);
if (!pd_req)
return;
+ blkdev_dequeue_request(pd_req);
schedule_fsm();
}