From: Bartlomiej Zolnierkiewicz Date: Tue, 15 Jul 2008 19:21:43 +0000 (+0200) Subject: block: handle blk_pm_resume_request() requests in blk_execute_rq_nowait() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=9a2d43b7566caeeeb414aa628bc2759028897dbb;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git block: handle blk_pm_resume_request() requests in blk_execute_rq_nowait() For blk_pm_resume_request() requests (which are used only by IDE subsystem currently) the queue is stopped so we need to call ->request_fn explicitly. Thanks to: - Rafael for reporting/bisecting the bug - Borislav/Rafael for testing the fix This is a preparation for converting IDE to use blk_execute_rq(). Cc: FUJITA Tomonori Cc: Borislav Petkov Cc: Jens Axboe Cc: "Rafael J. Wysocki" Signed-off-by: Bartlomiej Zolnierkiewicz --- diff --git a/block/blk-exec.c b/block/blk-exec.c index 391dd6224890..4f52f2792059 100644 --- a/block/blk-exec.c +++ b/block/blk-exec.c @@ -58,6 +58,9 @@ void blk_execute_rq_nowait(struct request_queue *q, struct gendisk *bd_disk, spin_lock_irq(q->queue_lock); __elv_add_request(q, rq, where, 1); __generic_unplug_device(q); + /* the queue is stopped so it won't be plugged+unplugged */ + if (blk_pm_resume_request(rq)) + q->request_fn(q); spin_unlock_irq(q->queue_lock); } EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);