aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/elevator.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-02-08 08:46:48 -0500
committerJens Axboe <axboe@fb.com>2017-02-08 15:43:06 -0500
commit34fe7c05400663e01e23cddd1fea68bb7a2b3d29 (patch)
treec03679f3bf7602925ecd9cbd6849af412b06d959 /include/linux/elevator.h
parent6cf7677f1a94546e472658290b3b8bdbb16cc045 (diff)
block: enumify ELEVATOR_*_MERGE
Switch these constants to an enum, and make let the compiler ensure that all callers of blk_try_merge and elv_merge handle all potential values. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux/elevator.h')
-rw-r--r--include/linux/elevator.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/include/linux/elevator.h b/include/linux/elevator.h
index b5825c4f06f7..b38b4e651ea6 100644
--- a/include/linux/elevator.h
+++ b/include/linux/elevator.h
@@ -9,12 +9,21 @@
9struct io_cq; 9struct io_cq;
10struct elevator_type; 10struct elevator_type;
11 11
12typedef int (elevator_merge_fn) (struct request_queue *, struct request **, 12/*
13 * Return values from elevator merger
14 */
15enum elv_merge {
16 ELEVATOR_NO_MERGE = 0,
17 ELEVATOR_FRONT_MERGE = 1,
18 ELEVATOR_BACK_MERGE = 2,
19};
20
21typedef enum elv_merge (elevator_merge_fn) (struct request_queue *, struct request **,
13 struct bio *); 22 struct bio *);
14 23
15typedef void (elevator_merge_req_fn) (struct request_queue *, struct request *, struct request *); 24typedef void (elevator_merge_req_fn) (struct request_queue *, struct request *, struct request *);
16 25
17typedef void (elevator_merged_fn) (struct request_queue *, struct request *, int); 26typedef void (elevator_merged_fn) (struct request_queue *, struct request *, enum elv_merge);
18 27
19typedef int (elevator_allow_bio_merge_fn) (struct request_queue *, 28typedef int (elevator_allow_bio_merge_fn) (struct request_queue *,
20 struct request *, struct bio *); 29 struct request *, struct bio *);
@@ -87,7 +96,7 @@ struct elevator_mq_ops {
87 bool (*allow_merge)(struct request_queue *, struct request *, struct bio *); 96 bool (*allow_merge)(struct request_queue *, struct request *, struct bio *);
88 bool (*bio_merge)(struct blk_mq_hw_ctx *, struct bio *); 97 bool (*bio_merge)(struct blk_mq_hw_ctx *, struct bio *);
89 int (*request_merge)(struct request_queue *q, struct request **, struct bio *); 98 int (*request_merge)(struct request_queue *q, struct request **, struct bio *);
90 void (*request_merged)(struct request_queue *, struct request *, int); 99 void (*request_merged)(struct request_queue *, struct request *, enum elv_merge);
91 void (*requests_merged)(struct request_queue *, struct request *, struct request *); 100 void (*requests_merged)(struct request_queue *, struct request *, struct request *);
92 struct request *(*get_request)(struct request_queue *, unsigned int, struct blk_mq_alloc_data *); 101 struct request *(*get_request)(struct request_queue *, unsigned int, struct blk_mq_alloc_data *);
93 void (*put_request)(struct request *); 102 void (*put_request)(struct request *);
@@ -166,10 +175,12 @@ extern void elv_dispatch_sort(struct request_queue *, struct request *);
166extern void elv_dispatch_add_tail(struct request_queue *, struct request *); 175extern void elv_dispatch_add_tail(struct request_queue *, struct request *);
167extern void elv_add_request(struct request_queue *, struct request *, int); 176extern void elv_add_request(struct request_queue *, struct request *, int);
168extern void __elv_add_request(struct request_queue *, struct request *, int); 177extern void __elv_add_request(struct request_queue *, struct request *, int);
169extern int elv_merge(struct request_queue *, struct request **, struct bio *); 178extern enum elv_merge elv_merge(struct request_queue *, struct request **,
179 struct bio *);
170extern void elv_merge_requests(struct request_queue *, struct request *, 180extern void elv_merge_requests(struct request_queue *, struct request *,
171 struct request *); 181 struct request *);
172extern void elv_merged_request(struct request_queue *, struct request *, int); 182extern void elv_merged_request(struct request_queue *, struct request *,
183 enum elv_merge);
173extern void elv_bio_merged(struct request_queue *q, struct request *, 184extern void elv_bio_merged(struct request_queue *q, struct request *,
174 struct bio *); 185 struct bio *);
175extern bool elv_attempt_insert_merge(struct request_queue *, struct request *); 186extern bool elv_attempt_insert_merge(struct request_queue *, struct request *);
@@ -219,13 +230,6 @@ extern void elv_rb_del(struct rb_root *, struct request *);
219extern struct request *elv_rb_find(struct rb_root *, sector_t); 230extern struct request *elv_rb_find(struct rb_root *, sector_t);
220 231
221/* 232/*
222 * Return values from elevator merger
223 */
224#define ELEVATOR_NO_MERGE 0
225#define ELEVATOR_FRONT_MERGE 1
226#define ELEVATOR_BACK_MERGE 2
227
228/*
229 * Insertion selection 233 * Insertion selection
230 */ 234 */
231#define ELEVATOR_INSERT_FRONT 1 235#define ELEVATOR_INSERT_FRONT 1