diff options
Diffstat (limited to 'include/linux/blk-mq.h')
-rw-r--r-- | include/linux/blk-mq.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 161b23105b1e..2ff2e8d982be 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
@@ -83,6 +83,8 @@ struct blk_mq_ops { | |||
83 | */ | 83 | */ |
84 | rq_timed_out_fn *timeout; | 84 | rq_timed_out_fn *timeout; |
85 | 85 | ||
86 | softirq_done_fn *complete; | ||
87 | |||
86 | /* | 88 | /* |
87 | * Override for hctx allocations (should probably go) | 89 | * Override for hctx allocations (should probably go) |
88 | */ | 90 | */ |
@@ -119,11 +121,11 @@ void blk_mq_init_commands(struct request_queue *, void (*init)(void *data, struc | |||
119 | 121 | ||
120 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); | 122 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); |
121 | 123 | ||
122 | void blk_mq_insert_request(struct request_queue *, struct request *, bool); | 124 | void blk_mq_insert_request(struct request *, bool, bool, bool); |
123 | void blk_mq_run_queues(struct request_queue *q, bool async); | 125 | void blk_mq_run_queues(struct request_queue *q, bool async); |
124 | void blk_mq_free_request(struct request *rq); | 126 | void blk_mq_free_request(struct request *rq); |
125 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); | 127 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); |
126 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp, bool reserved); | 128 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp); |
127 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); | 129 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); |
128 | struct request *blk_mq_rq_from_tag(struct request_queue *q, unsigned int tag); | 130 | struct request *blk_mq_rq_from_tag(struct request_queue *q, unsigned int tag); |
129 | 131 | ||
@@ -131,7 +133,15 @@ struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_ind | |||
131 | struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_reg *, unsigned int); | 133 | struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_reg *, unsigned int); |
132 | void blk_mq_free_single_hw_queue(struct blk_mq_hw_ctx *, unsigned int); | 134 | void blk_mq_free_single_hw_queue(struct blk_mq_hw_ctx *, unsigned int); |
133 | 135 | ||
134 | void blk_mq_end_io(struct request *rq, int error); | 136 | bool blk_mq_end_io_partial(struct request *rq, int error, |
137 | unsigned int nr_bytes); | ||
138 | static inline void blk_mq_end_io(struct request *rq, int error) | ||
139 | { | ||
140 | bool done = !blk_mq_end_io_partial(rq, error, blk_rq_bytes(rq)); | ||
141 | BUG_ON(!done); | ||
142 | } | ||
143 | |||
144 | void blk_mq_complete_request(struct request *rq); | ||
135 | 145 | ||
136 | void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); | 146 | void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); |
137 | void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx); | 147 | void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx); |