diff options
author | Robert Elliott <elliott@hp.com> | 2014-05-20 17:46:26 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-05-20 17:49:03 -0400 |
commit | da41a589f52464e24ddefe76814ee35bfb07950c (patch) | |
tree | e3270f36a1a5766e2433b70b0eef4e2205096075 /block/blk-core.c | |
parent | eba7176826ddab1d04c51bb2d5f2bbf22865444c (diff) |
blk-mq: Micro-optimize blk_queue_nomerges() check
In blk_mq_make_request(), do the blk_queue_nomerges() check
outside the call to blk_attempt_plug_merge() to eliminate
function call overhead when nomerges=2 (disabled)
Signed-off-by: Robert Elliott <elliott@hp.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r-- | block/blk-core.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index fe81e19099a1..5b6f768a7c01 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -1471,6 +1471,8 @@ bool bio_attempt_front_merge(struct request_queue *q, struct request *req, | |||
1471 | * added on the elevator at this point. In addition, we don't have | 1471 | * added on the elevator at this point. In addition, we don't have |
1472 | * reliable access to the elevator outside queue lock. Only check basic | 1472 | * reliable access to the elevator outside queue lock. Only check basic |
1473 | * merging parameters without querying the elevator. | 1473 | * merging parameters without querying the elevator. |
1474 | * | ||
1475 | * Caller must ensure !blk_queue_nomerges(q) beforehand. | ||
1474 | */ | 1476 | */ |
1475 | bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, | 1477 | bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, |
1476 | unsigned int *request_count) | 1478 | unsigned int *request_count) |
@@ -1480,9 +1482,6 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, | |||
1480 | bool ret = false; | 1482 | bool ret = false; |
1481 | struct list_head *plug_list; | 1483 | struct list_head *plug_list; |
1482 | 1484 | ||
1483 | if (blk_queue_nomerges(q)) | ||
1484 | goto out; | ||
1485 | |||
1486 | plug = current->plug; | 1485 | plug = current->plug; |
1487 | if (!plug) | 1486 | if (!plug) |
1488 | goto out; | 1487 | goto out; |
@@ -1561,7 +1560,8 @@ void blk_queue_bio(struct request_queue *q, struct bio *bio) | |||
1561 | * Check if we can merge with the plugged list before grabbing | 1560 | * Check if we can merge with the plugged list before grabbing |
1562 | * any locks. | 1561 | * any locks. |
1563 | */ | 1562 | */ |
1564 | if (blk_attempt_plug_merge(q, bio, &request_count)) | 1563 | if (!blk_queue_nomerges(q) && |
1564 | blk_attempt_plug_merge(q, bio, &request_count)) | ||
1565 | return; | 1565 | return; |
1566 | 1566 | ||
1567 | spin_lock_irq(q->queue_lock); | 1567 | spin_lock_irq(q->queue_lock); |