diff options
| author | Christoph Hellwig <hch@lst.de> | 2017-02-08 08:46:48 -0500 |
|---|---|---|
| committer | Jens Axboe <axboe@fb.com> | 2017-02-08 15:43:06 -0500 |
| commit | 34fe7c05400663e01e23cddd1fea68bb7a2b3d29 (patch) | |
| tree | c03679f3bf7602925ecd9cbd6849af412b06d959 /include/linux/elevator.h | |
| parent | 6cf7677f1a94546e472658290b3b8bdbb16cc045 (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.h | 28 |
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 @@ | |||
| 9 | struct io_cq; | 9 | struct io_cq; |
| 10 | struct elevator_type; | 10 | struct elevator_type; |
| 11 | 11 | ||
| 12 | typedef int (elevator_merge_fn) (struct request_queue *, struct request **, | 12 | /* |
| 13 | * Return values from elevator merger | ||
| 14 | */ | ||
| 15 | enum elv_merge { | ||
| 16 | ELEVATOR_NO_MERGE = 0, | ||
| 17 | ELEVATOR_FRONT_MERGE = 1, | ||
| 18 | ELEVATOR_BACK_MERGE = 2, | ||
| 19 | }; | ||
| 20 | |||
| 21 | typedef enum elv_merge (elevator_merge_fn) (struct request_queue *, struct request **, | ||
| 13 | struct bio *); | 22 | struct bio *); |
| 14 | 23 | ||
| 15 | typedef void (elevator_merge_req_fn) (struct request_queue *, struct request *, struct request *); | 24 | typedef void (elevator_merge_req_fn) (struct request_queue *, struct request *, struct request *); |
| 16 | 25 | ||
| 17 | typedef void (elevator_merged_fn) (struct request_queue *, struct request *, int); | 26 | typedef void (elevator_merged_fn) (struct request_queue *, struct request *, enum elv_merge); |
| 18 | 27 | ||
| 19 | typedef int (elevator_allow_bio_merge_fn) (struct request_queue *, | 28 | typedef 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 *); | |||
| 166 | extern void elv_dispatch_add_tail(struct request_queue *, struct request *); | 175 | extern void elv_dispatch_add_tail(struct request_queue *, struct request *); |
| 167 | extern void elv_add_request(struct request_queue *, struct request *, int); | 176 | extern void elv_add_request(struct request_queue *, struct request *, int); |
| 168 | extern void __elv_add_request(struct request_queue *, struct request *, int); | 177 | extern void __elv_add_request(struct request_queue *, struct request *, int); |
| 169 | extern int elv_merge(struct request_queue *, struct request **, struct bio *); | 178 | extern enum elv_merge elv_merge(struct request_queue *, struct request **, |
| 179 | struct bio *); | ||
| 170 | extern void elv_merge_requests(struct request_queue *, struct request *, | 180 | extern void elv_merge_requests(struct request_queue *, struct request *, |
| 171 | struct request *); | 181 | struct request *); |
| 172 | extern void elv_merged_request(struct request_queue *, struct request *, int); | 182 | extern void elv_merged_request(struct request_queue *, struct request *, |
| 183 | enum elv_merge); | ||
| 173 | extern void elv_bio_merged(struct request_queue *q, struct request *, | 184 | extern void elv_bio_merged(struct request_queue *q, struct request *, |
| 174 | struct bio *); | 185 | struct bio *); |
| 175 | extern bool elv_attempt_insert_merge(struct request_queue *, struct request *); | 186 | extern bool elv_attempt_insert_merge(struct request_queue *, struct request *); |
| @@ -219,13 +230,6 @@ extern void elv_rb_del(struct rb_root *, struct request *); | |||
| 219 | extern struct request *elv_rb_find(struct rb_root *, sector_t); | 230 | extern 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 |
