From 8b293a26940ddcb5991a4a959accf5cd40e11c39 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Thu, 3 Nov 2011 18:52:11 +0100 Subject: [PATCH] --- yaml --- r: 273815 b: refs/heads/master c: 6dd9ad7df2019b1e33a372a501907db293ebcd0d h: refs/heads/master i: 273813: f0ceca1773b3c7d847d87c55022ba37cc17cc5d7 273811: f371116b29874cd6337bf859f5da675f25573c39 273807: f78d240958d78d7432774bc8663f1cefea7e9736 v: v3 --- [refs] | 2 +- trunk/block/blk-core.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index d6604fef7737..ab0385408e14 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 334c2b0b8b2ab186fa198413386cba41fffcb4f2 +refs/heads/master: 6dd9ad7df2019b1e33a372a501907db293ebcd0d diff --git a/trunk/block/blk-core.c b/trunk/block/blk-core.c index f65871116404..f43c8a5840ae 100644 --- a/trunk/block/blk-core.c +++ b/trunk/block/blk-core.c @@ -407,8 +407,13 @@ void blk_cleanup_queue(struct request_queue *q) spin_unlock_irq(lock); mutex_unlock(&q->sysfs_lock); - /* drain all requests queued before DEAD marking */ - blk_drain_queue(q, true); + /* + * Drain all requests queued before DEAD marking. The caller might + * be trying to tear down @q before its elevator is initialized, in + * which case we don't want to call into draining. + */ + if (q->elevator) + blk_drain_queue(q, true); /* @q won't process any more request, flush async actions */ del_timer_sync(&q->backing_dev_info.laptop_mode_wb_timer);