aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blk-mq.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/blk-mq.h')
-rw-r--r--include/linux/blk-mq.h16
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
120void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); 122void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule);
121 123
122void blk_mq_insert_request(struct request_queue *, struct request *, bool); 124void blk_mq_insert_request(struct request *, bool, bool, bool);
123void blk_mq_run_queues(struct request_queue *q, bool async); 125void blk_mq_run_queues(struct request_queue *q, bool async);
124void blk_mq_free_request(struct request *rq); 126void blk_mq_free_request(struct request *rq);
125bool blk_mq_can_queue(struct blk_mq_hw_ctx *); 127bool blk_mq_can_queue(struct blk_mq_hw_ctx *);
126struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp, bool reserved); 128struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp);
127struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); 129struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp);
128struct request *blk_mq_rq_from_tag(struct request_queue *q, unsigned int tag); 130struct 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
131struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_reg *, unsigned int); 133struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_reg *, unsigned int);
132void blk_mq_free_single_hw_queue(struct blk_mq_hw_ctx *, unsigned int); 134void blk_mq_free_single_hw_queue(struct blk_mq_hw_ctx *, unsigned int);
133 135
134void blk_mq_end_io(struct request *rq, int error); 136bool blk_mq_end_io_partial(struct request *rq, int error,
137 unsigned int nr_bytes);
138static 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
144void blk_mq_complete_request(struct request *rq);
135 145
136void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); 146void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx);
137void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx); 147void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx);