diff options
author | Bart Van Assche <bvanassche@acm.org> | 2014-12-09 16:59:48 +0100 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-12-09 17:07:28 +0100 |
commit | 52f7eb945f2ba62b324bb9ae16d945326a961dcf (patch) | |
tree | 000158231baaf25480bc9adb50ba8dd7e37e646c /block | |
parent | blk-mq: Fix a race between bt_clear_tag() and bt_get() (diff) | |
download | linux-52f7eb945f2ba62b324bb9ae16d945326a961dcf.tar.xz linux-52f7eb945f2ba62b324bb9ae16d945326a961dcf.zip |
blk-mq: Micro-optimize bt_get()
Remove a superfluous finish_wait() call. Convert the two bt_wait_ptr()
calls into a single call.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Robert Elliott <elliott@hp.com>
Cc: Ming Lei <ming.lei@canonical.com>
Cc: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq-tag.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index e47c4c75fd33..1b7229f9354a 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c @@ -248,8 +248,8 @@ static int bt_get(struct blk_mq_alloc_data *data, if (!(data->gfp & __GFP_WAIT)) return -1; - bs = bt_wait_ptr(bt, hctx); do { + bs = bt_wait_ptr(bt, hctx); prepare_to_wait(&bs->wait, &wait, TASK_UNINTERRUPTIBLE); tag = __bt_get(hctx, bt, last_tag); @@ -285,8 +285,6 @@ static int bt_get(struct blk_mq_alloc_data *data, hctx = data->hctx; bt = &hctx->tags->bitmap_tags; } - finish_wait(&bs->wait, &wait); - bs = bt_wait_ptr(bt, hctx); } while (1); finish_wait(&bs->wait, &wait); |