summaryrefslogtreecommitdiff
path: root/include/linux/elevator.h
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2002-10-27 17:14:14 -0800
committerJens Axboe <axboe@suse.de>2002-10-27 17:14:14 -0800
commit86b9d08bca816f68dea450e9baf42d474e09112c (patch)
tree946e2c0ba180c4593ebaf1052facdfafe82e2ee0 /include/linux/elevator.h
parent6d94d882f8924da545059f82952707dc6ca9157b (diff)
[PATCH] elv_add_request cleanups
Request insertion in the current tree is a mess. We have all sorts of variants of *elv_add_request*, and it's not at all clear who does what and with what locks (or not). This patch cleans it up to be: o __elv_add_request(queue, request, at_end, plug) Core function, requires queue lock to be held o elv_add_request(queue, request, at_end, plug) Like __elv_add_request(), but grabs queue lock o __elv_add_request_pos(queue, request, position) Insert request at a given location, lock must be held
Diffstat (limited to 'include/linux/elevator.h')
-rw-r--r--include/linux/elevator.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/elevator.h b/include/linux/elevator.h
index 8a54a1c5e5af..62092e8ed2ad 100644
--- a/include/linux/elevator.h
+++ b/include/linux/elevator.h
@@ -40,8 +40,8 @@ struct elevator_s
/*
* block elevator interface
*/
-extern void __elv_add_request(request_queue_t *, struct request *,
- struct list_head *);
+extern void elv_add_request(request_queue_t *, struct request *, int, int);
+extern void __elv_add_request(request_queue_t *, struct request *, int, int);
extern int elv_merge(request_queue_t *, struct list_head **, struct bio *);
extern void elv_merge_requests(request_queue_t *, struct request *,
struct request *);
@@ -50,6 +50,9 @@ extern void elv_remove_request(request_queue_t *, struct request *);
extern int elv_queue_empty(request_queue_t *);
extern inline struct list_head *elv_get_sort_head(request_queue_t *, struct request *);
+#define __elv_add_request_pos(q, rq, pos) \
+ (q)->elevator.elevator_add_req_fn((q), (rq), (pos))
+
/*
* noop I/O scheduler. always merges, always inserts new request at tail
*/