summaryrefslogtreecommitdiff
path: root/block/bfq-iosched.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/bfq-iosched.c')
-rw-r--r--block/bfq-iosched.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index d4bff8a0fb11..8b5fd91938b9 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -1646,7 +1646,7 @@ static int bfq_merge(struct request_queue *q, struct request **req,
struct request *__rq;
__rq = bfq_find_rq_fmerge(bfqd, bio);
- if (__rq && elv_rq_merge_ok(__rq, bio)) {
+ if (__rq && elv_bio_merge_ok(__rq, bio)) {
*req = __rq;
return ELEVATOR_FRONT_MERGE;
}
@@ -2163,7 +2163,7 @@ bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
bfq_put_queue(bfqq);
}
-static int bfq_allow_merge(struct request_queue *q, struct request *rq,
+static int bfq_allow_bio_merge(struct request_queue *q, struct request *rq,
struct bio *bio)
{
struct bfq_data *bfqd = q->elevator->elevator_data;
@@ -2206,6 +2206,12 @@ static int bfq_allow_merge(struct request_queue *q, struct request *rq,
return bfqq == RQ_BFQQ(rq);
}
+static int bfq_allow_rq_merge(struct request_queue *q, struct request *rq,
+ struct request *next)
+{
+ return RQ_BFQQ(rq) == RQ_BFQQ(next);
+}
+
/*
* Set the maximum time for the in-service queue to consume its
* budget. This prevents seeky processes from lowering the throughput.
@@ -5268,7 +5274,8 @@ static struct elevator_type iosched_bfq = {
#ifdef CONFIG_BFQ_GROUP_IOSCHED
.elevator_bio_merged_fn = bfq_bio_merged,
#endif
- .elevator_allow_merge_fn = bfq_allow_merge,
+ .elevator_allow_bio_merge_fn = bfq_allow_bio_merge,
+ .elevator_allow_rq_merge_fn = bfq_allow_rq_merge,
.elevator_dispatch_fn = bfq_dispatch_requests,
.elevator_add_req_fn = bfq_insert_request,
.elevator_activate_req_fn = bfq_activate_request,