summaryrefslogtreecommitdiffstats
path: root/block/blk-settings.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2009-07-28 09:07:29 +0200
committerJens Axboe <jens.axboe@oracle.com>2009-07-28 09:07:29 +0200
commita4e7d46407d73f35d217013b363b79a8f8eafcaa (patch)
tree109996edac0c6382e7a7cfb99736e75ea5398b49 /block/blk-settings.c
parentmg_disk: Add missing ready status check on mg_write() (diff)
downloadlinux-a4e7d46407d73f35d217013b363b79a8f8eafcaa.tar.xz
linux-a4e7d46407d73f35d217013b363b79a8f8eafcaa.zip
block: always assign default lock to queues
Move the assignment of a default lock below blk_init_queue() to blk_queue_make_request(), so we also get to set the default lock for ->make_request_fn() based drivers. This is important since the queue flag locking requires a lock to be in place. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-settings.c')
-rw-r--r--block/blk-settings.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c
index bd582a7f5310..8a3ea3bba10d 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -165,6 +165,13 @@ void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
blk_set_default_limits(&q->limits);
/*
+ * If the caller didn't supply a lock, fall back to our embedded
+ * per-queue locks
+ */
+ if (!q->queue_lock)
+ q->queue_lock = &q->__queue_lock;
+
+ /*
* by default assume old behaviour and bounce for any highmem page
*/
blk_queue_bounce_limit(q, BLK_BOUNCE_HIGH);