+ add-elv_extended_request-call-to-iosched-api.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     block: add elv_extended_request call to iosched API

has been added to the -mm tree.  Its filename is

     add-elv_extended_request-call-to-iosched-api.patch

See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this

------------------------------------------------------
Subject: block: add elv_extended_request call to iosched API
From: "Nate Diller" <nate.diller@xxxxxxxxx>

the Elevator iosched would prefer to be unconditionally notified of a merge,
but the current API calls only one 'merge' notifier (elv_merge_requests or
elv_merged_requests), even if both front and back merges happened.

elv_extended_request satisfies this requirement in conjunction with
elv_merge_requests.

Signed-off-by: Nate Diller <nate.diller@xxxxxxxxx>
Cc: Jens Axboe <axboe@xxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 block/elevator.c         |    9 +++++++++
 block/ll_rw_blk.c        |    2 ++
 include/linux/elevator.h |    4 ++++
 3 files changed, 15 insertions(+)

diff -puN block/elevator.c~add-elv_extended_request-call-to-iosched-api block/elevator.c
--- a/block/elevator.c~add-elv_extended_request-call-to-iosched-api
+++ a/block/elevator.c
@@ -466,6 +466,15 @@ void elv_merged_request(request_queue_t 
 	q->last_merge = rq;
 }
 
+void elv_extended_request(request_queue_t *q, struct request *rq,
+			int direction, int nr_sectors)
+{
+	elevator_t *e = q->elevator;
+
+	if (e->ops->elevator_extended_req_fn)
+		e->ops->elevator_extended_req_fn(q, rq, direction, nr_sectors);
+}
+
 void elv_merge_requests(request_queue_t *q, struct request *rq,
 			     struct request *next)
 {
diff -puN block/ll_rw_blk.c~add-elv_extended_request-call-to-iosched-api block/ll_rw_blk.c
--- a/block/ll_rw_blk.c~add-elv_extended_request-call-to-iosched-api
+++ a/block/ll_rw_blk.c
@@ -2864,6 +2864,7 @@ static int __make_request(request_queue_
 			req->nr_sectors = req->hard_nr_sectors += nr_sectors;
 			req->ioprio = ioprio_best(req->ioprio, prio);
 			drive_stat_acct(req, nr_sectors, 0);
+			elv_extended_request(q, req, el_ret, nr_sectors);
 			if (!attempt_back_merge(q, req))
 				elv_merged_request(q, req, el_ret);
 			goto out;
@@ -2891,6 +2892,7 @@ static int __make_request(request_queue_
 			req->nr_sectors = req->hard_nr_sectors += nr_sectors;
 			req->ioprio = ioprio_best(req->ioprio, prio);
 			drive_stat_acct(req, nr_sectors, 0);
+			elv_extended_request(q, req, el_ret, nr_sectors);
 			if (!attempt_front_merge(q, req))
 				elv_merged_request(q, req, el_ret);
 			goto out;
diff -puN include/linux/elevator.h~add-elv_extended_request-call-to-iosched-api include/linux/elevator.h
--- a/include/linux/elevator.h~add-elv_extended_request-call-to-iosched-api
+++ a/include/linux/elevator.h
@@ -8,6 +8,8 @@ typedef int (elevator_merge_fn) (request
 
 typedef void (elevator_merge_req_fn) (request_queue_t *, struct request *, struct request *);
 
+typedef void (elevator_extended_req_fn) (request_queue_t *, struct request *, int, int);
+
 typedef void (elevator_merged_fn) (request_queue_t *, struct request *, int);
 
 typedef int (elevator_dispatch_fn) (request_queue_t *, int);
@@ -30,6 +32,7 @@ struct elevator_ops
 {
 	elevator_merge_fn *elevator_merge_fn;
 	elevator_merged_fn *elevator_merged_fn;
+	elevator_extended_req_fn *elevator_extended_req_fn;
 	elevator_merge_req_fn *elevator_merge_req_fn;
 
 	elevator_dispatch_fn *elevator_dispatch_fn;
@@ -98,6 +101,7 @@ extern void elv_insert(request_queue_t *
 extern int elv_merge(request_queue_t *, struct request **, struct bio *);
 extern void elv_merge_requests(request_queue_t *, struct request *,
 			       struct request *);
+extern void elv_extended_request(request_queue_t *, struct request *, int, int);
 extern void elv_merged_request(request_queue_t *, struct request *, int);
 extern void elv_dequeue_request(request_queue_t *, struct request *);
 extern void elv_requeue_request(request_queue_t *, struct request *);
_

Patches currently in -mm which might be from nate.diller@xxxxxxxxx are

add-elv_extended_request-call-to-iosched-api.patch
add-list_merge-to-listh.patch
add-the-elevator-i-o-scheduler.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux