diff options
author | Christoph Hellwig <hch@lst.de> | 2014-05-27 14:59:46 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-05-28 11:49:19 -0400 |
commit | 4ce01dd1a07d9cf3eaf44fbf4ea9a61b11badccc (patch) | |
tree | d3314a1d9affb10f9397d4351df26f4a95a5f047 | |
parent | 6fca6a611c27f1f0d90fbe1cc3c229dbf8c09e48 (diff) |
blk-mq: merge blk_mq_alloc_reserved_request into blk_mq_alloc_request
Instead of having two almost identical copies of the same code just let
the callers pass in the reserved flag directly.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | block/blk-core.c | 2 | ||||
-rw-r--r-- | block/blk-mq.c | 20 | ||||
-rw-r--r-- | include/linux/blk-mq.h | 4 |
3 files changed, 6 insertions, 20 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 29d5fbafd94a..d87be5b4e554 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -1173,7 +1173,7 @@ static struct request *blk_old_get_request(struct request_queue *q, int rw, | |||
1173 | struct request *blk_get_request(struct request_queue *q, int rw, gfp_t gfp_mask) | 1173 | struct request *blk_get_request(struct request_queue *q, int rw, gfp_t gfp_mask) |
1174 | { | 1174 | { |
1175 | if (q->mq_ops) | 1175 | if (q->mq_ops) |
1176 | return blk_mq_alloc_request(q, rw, gfp_mask); | 1176 | return blk_mq_alloc_request(q, rw, gfp_mask, false); |
1177 | else | 1177 | else |
1178 | return blk_old_get_request(q, rw, gfp_mask); | 1178 | return blk_old_get_request(q, rw, gfp_mask); |
1179 | } | 1179 | } |
diff --git a/block/blk-mq.c b/block/blk-mq.c index 67066ecc79c0..63d581d72a70 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
@@ -294,35 +294,21 @@ static struct request *blk_mq_alloc_request_pinned(struct request_queue *q, | |||
294 | return rq; | 294 | return rq; |
295 | } | 295 | } |
296 | 296 | ||
297 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp) | 297 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp, |
298 | bool reserved) | ||
298 | { | 299 | { |
299 | struct request *rq; | 300 | struct request *rq; |
300 | 301 | ||
301 | if (blk_mq_queue_enter(q)) | 302 | if (blk_mq_queue_enter(q)) |
302 | return NULL; | 303 | return NULL; |
303 | 304 | ||
304 | rq = blk_mq_alloc_request_pinned(q, rw, gfp, false); | 305 | rq = blk_mq_alloc_request_pinned(q, rw, gfp, reserved); |
305 | if (rq) | 306 | if (rq) |
306 | blk_mq_put_ctx(rq->mq_ctx); | 307 | blk_mq_put_ctx(rq->mq_ctx); |
307 | return rq; | 308 | return rq; |
308 | } | 309 | } |
309 | EXPORT_SYMBOL(blk_mq_alloc_request); | 310 | EXPORT_SYMBOL(blk_mq_alloc_request); |
310 | 311 | ||
311 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, | ||
312 | gfp_t gfp) | ||
313 | { | ||
314 | struct request *rq; | ||
315 | |||
316 | if (blk_mq_queue_enter(q)) | ||
317 | return NULL; | ||
318 | |||
319 | rq = blk_mq_alloc_request_pinned(q, rw, gfp, true); | ||
320 | if (rq) | ||
321 | blk_mq_put_ctx(rq->mq_ctx); | ||
322 | return rq; | ||
323 | } | ||
324 | EXPORT_SYMBOL(blk_mq_alloc_reserved_request); | ||
325 | |||
326 | static void __blk_mq_free_request(struct blk_mq_hw_ctx *hctx, | 312 | static void __blk_mq_free_request(struct blk_mq_hw_ctx *hctx, |
327 | struct blk_mq_ctx *ctx, struct request *rq) | 313 | struct blk_mq_ctx *ctx, struct request *rq) |
328 | { | 314 | { |
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index b9a74a386dbc..2bd82f399128 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
@@ -160,8 +160,8 @@ void blk_mq_insert_request(struct request *, bool, bool, bool); | |||
160 | void blk_mq_run_queues(struct request_queue *q, bool async); | 160 | void blk_mq_run_queues(struct request_queue *q, bool async); |
161 | void blk_mq_free_request(struct request *rq); | 161 | void blk_mq_free_request(struct request *rq); |
162 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); | 162 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); |
163 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp); | 163 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, |
164 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); | 164 | gfp_t gfp, bool reserved); |
165 | struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag); | 165 | struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag); |
166 | 166 | ||
167 | struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index); | 167 | struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index); |