diff options
author | Bart Van Assche <bart.vanassche@sandisk.com> | 2017-06-20 11:15:45 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-06-20 19:27:14 -0600 |
commit | 2fff8a924d4c614b5a17b2a236a2cf09aa51af5f (patch) | |
tree | 46f7b27ff3593ddeabaadd0032e5449825995fde /block/blk-timeout.c | |
parent | 9e0c829906b9aa1e7ad84689f2bcd56457bdb417 (diff) | |
download | lwn-2fff8a924d4c614b5a17b2a236a2cf09aa51af5f.tar.gz lwn-2fff8a924d4c614b5a17b2a236a2cf09aa51af5f.zip |
block: Check locking assumptions at runtime
Instead of documenting the locking assumptions of most block layer
functions as a comment, use lockdep_assert_held() to verify locking
assumptions at runtime.
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Omar Sandoval <osandov@fb.com>
Cc: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-timeout.c')
-rw-r--r-- | block/blk-timeout.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/block/blk-timeout.c b/block/blk-timeout.c index cbff183f3d9f..17ec83bb0900 100644 --- a/block/blk-timeout.c +++ b/block/blk-timeout.c @@ -189,13 +189,15 @@ unsigned long blk_rq_timeout(unsigned long timeout) * Notes: * Each request has its own timer, and as it is added to the queue, we * set up the timer. When the request completes, we cancel the timer. - * Queue lock must be held for the non-mq case, mq case doesn't care. */ void blk_add_timer(struct request *req) { struct request_queue *q = req->q; unsigned long expiry; + if (!q->mq_ops) + lockdep_assert_held(q->queue_lock); + /* blk-mq has its own handler, so we don't need ->rq_timed_out_fn */ if (!q->mq_ops && !q->rq_timed_out_fn) return; |