mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
a85a00a699
commit
a4e7d46407
|
@ -575,13 +575,6 @@ blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* if caller didn't supply a lock, they get per-queue locking with
|
||||
* our embedded lock
|
||||
*/
|
||||
if (!lock)
|
||||
lock = &q->__queue_lock;
|
||||
|
||||
q->request_fn = rfn;
|
||||
q->prep_rq_fn = NULL;
|
||||
q->unplug_fn = generic_unplug_device;
|
||||
|
|
|
@ -164,6 +164,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
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue