diff options
Diffstat (limited to 'include/linux/blk-mq.h')
-rw-r--r-- | include/linux/blk-mq.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index b6ee48740458..29c1a6e83814 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
@@ -67,6 +67,10 @@ typedef struct blk_mq_hw_ctx *(alloc_hctx_fn)(struct blk_mq_reg *,unsigned int); | |||
67 | typedef void (free_hctx_fn)(struct blk_mq_hw_ctx *, unsigned int); | 67 | typedef void (free_hctx_fn)(struct blk_mq_hw_ctx *, unsigned int); |
68 | typedef int (init_hctx_fn)(struct blk_mq_hw_ctx *, void *, unsigned int); | 68 | typedef int (init_hctx_fn)(struct blk_mq_hw_ctx *, void *, unsigned int); |
69 | typedef void (exit_hctx_fn)(struct blk_mq_hw_ctx *, unsigned int); | 69 | typedef void (exit_hctx_fn)(struct blk_mq_hw_ctx *, unsigned int); |
70 | typedef int (init_request_fn)(void *, struct blk_mq_hw_ctx *, | ||
71 | struct request *, unsigned int); | ||
72 | typedef void (exit_request_fn)(void *, struct blk_mq_hw_ctx *, | ||
73 | struct request *, unsigned int); | ||
70 | 74 | ||
71 | struct blk_mq_ops { | 75 | struct blk_mq_ops { |
72 | /* | 76 | /* |
@@ -99,6 +103,14 @@ struct blk_mq_ops { | |||
99 | */ | 103 | */ |
100 | init_hctx_fn *init_hctx; | 104 | init_hctx_fn *init_hctx; |
101 | exit_hctx_fn *exit_hctx; | 105 | exit_hctx_fn *exit_hctx; |
106 | |||
107 | /* | ||
108 | * Called for every command allocated by the block layer to allow | ||
109 | * the driver to set up driver specific data. | ||
110 | * Ditto for exit/teardown. | ||
111 | */ | ||
112 | init_request_fn *init_request; | ||
113 | exit_request_fn *exit_request; | ||
102 | }; | 114 | }; |
103 | 115 | ||
104 | enum { | 116 | enum { |
@@ -118,8 +130,6 @@ enum { | |||
118 | struct request_queue *blk_mq_init_queue(struct blk_mq_reg *, void *); | 130 | struct request_queue *blk_mq_init_queue(struct blk_mq_reg *, void *); |
119 | int blk_mq_register_disk(struct gendisk *); | 131 | int blk_mq_register_disk(struct gendisk *); |
120 | void blk_mq_unregister_disk(struct gendisk *); | 132 | void blk_mq_unregister_disk(struct gendisk *); |
121 | int blk_mq_init_commands(struct request_queue *, int (*init)(void *data, struct blk_mq_hw_ctx *, struct request *, unsigned int), void *data); | ||
122 | void blk_mq_free_commands(struct request_queue *, void (*free)(void *data, struct blk_mq_hw_ctx *, struct request *, unsigned int), void *data); | ||
123 | 133 | ||
124 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); | 134 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); |
125 | 135 | ||