blk-mq-sched.c (a7e7388dced47a10ca13ae95ca975ea2830f196b) blk-mq-sched.c (63064be150e4b1ba1e4af594ef5aa81adf21a52d)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * blk-mq scheduling framework
4 *
5 * Copyright (C) 2016 Jens Axboe
6 */
7#include <linux/kernel.h>
8#include <linux/module.h>

--- 505 unchanged lines hidden (view full) ---

514 out:
515 percpu_ref_put(&q->q_usage_counter);
516}
517
518static int blk_mq_sched_alloc_map_and_rqs(struct request_queue *q,
519 struct blk_mq_hw_ctx *hctx,
520 unsigned int hctx_idx)
521{
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * blk-mq scheduling framework
4 *
5 * Copyright (C) 2016 Jens Axboe
6 */
7#include <linux/kernel.h>
8#include <linux/module.h>

--- 505 unchanged lines hidden (view full) ---

514 out:
515 percpu_ref_put(&q->q_usage_counter);
516}
517
518static int blk_mq_sched_alloc_map_and_rqs(struct request_queue *q,
519 struct blk_mq_hw_ctx *hctx,
520 unsigned int hctx_idx)
521{
522 struct blk_mq_tag_set *set = q->tag_set;
523 int ret;
522 hctx->sched_tags = blk_mq_alloc_map_and_rqs(q->tag_set, hctx_idx,
523 q->nr_requests);
524
524
525 hctx->sched_tags = blk_mq_alloc_rq_map(set, hctx_idx, q->nr_requests,
526 set->reserved_tags, set->flags);
527 if (!hctx->sched_tags)
528 return -ENOMEM;
525 if (!hctx->sched_tags)
526 return -ENOMEM;
529
530 ret = blk_mq_alloc_rqs(set, hctx->sched_tags, hctx_idx, q->nr_requests);
531 if (ret) {
532 blk_mq_free_rq_map(hctx->sched_tags, set->flags);
533 hctx->sched_tags = NULL;
534 }
535
536 return ret;
527 return 0;
537}
538
539/* called in queue's release handler, tagset has gone away */
540static void blk_mq_sched_tags_teardown(struct request_queue *q)
541{
542 struct blk_mq_hw_ctx *hctx;
543 int i;
544

--- 146 unchanged lines hidden ---
528}
529
530/* called in queue's release handler, tagset has gone away */
531static void blk_mq_sched_tags_teardown(struct request_queue *q)
532{
533 struct blk_mq_hw_ctx *hctx;
534 int i;
535

--- 146 unchanged lines hidden ---