linux/block/blk-mq.c
<<
>>
Prefs
   1/*
   2 * Block multiqueue core code
   3 *
   4 * Copyright (C) 2013-2014 Jens Axboe
   5 * Copyright (C) 2013-2014 Christoph Hellwig
   6 */
   7#include <linux/kernel.h>
   8#include <linux/module.h>
   9#include <linux/backing-dev.h>
  10#include <linux/bio.h>
  11#include <linux/blkdev.h>
  12#include <linux/kmemleak.h>
  13#include <linux/mm.h>
  14#include <linux/init.h>
  15#include <linux/slab.h>
  16#include <linux/workqueue.h>
  17#include <linux/smp.h>
  18#include <linux/llist.h>
  19#include <linux/list_sort.h>
  20#include <linux/cpu.h>
  21#include <linux/cache.h>
  22#include <linux/sched/sysctl.h>
  23#include <linux/sched/topology.h>
  24#include <linux/sched/signal.h>
  25#include <linux/delay.h>
  26#include <linux/crash_dump.h>
  27#include <linux/prefetch.h>
  28
  29#include <trace/events/block.h>
  30
  31#include <linux/blk-mq.h>
  32#include "blk.h"
  33#include "blk-mq.h"
  34#include "blk-mq-debugfs.h"
  35#include "blk-mq-tag.h"
  36#include "blk-stat.h"
  37#include "blk-mq-sched.h"
  38#include "blk-rq-qos.h"
  39
  40static bool blk_mq_poll(struct request_queue *q, blk_qc_t cookie);
  41static void blk_mq_poll_stats_start(struct request_queue *q);
  42static void blk_mq_poll_stats_fn(struct blk_stat_callback *cb);
  43
  44static int blk_mq_poll_stats_bkt(const struct request *rq)
  45{
  46        int ddir, bytes, bucket;
  47
  48        ddir = rq_data_dir(rq);
  49        bytes = blk_rq_bytes(rq);
  50
  51        bucket = ddir + 2*(ilog2(bytes) - 9);
  52
  53        if (bucket < 0)
  54                return -1;
  55        else if (bucket >= BLK_MQ_POLL_STATS_BKTS)
  56                return ddir + BLK_MQ_POLL_STATS_BKTS - 2;
  57
  58        return bucket;
  59}
  60
  61/*
  62 * Check if any of the ctx's have pending work in this hardware queue
  63 */
  64static bool blk_mq_hctx_has_pending(struct blk_mq_hw_ctx *hctx)
  65{
  66        return !list_empty_careful(&hctx->dispatch) ||
  67                sbitmap_any_bit_set(&hctx->ctx_map) ||
  68                        blk_mq_sched_has_work(hctx);
  69}
  70
  71/*
  72 * Mark this ctx as having pending work in this hardware queue
  73 */
  74static void blk_mq_hctx_mark_pending(struct blk_mq_hw_ctx *hctx,
  75                                     struct blk_mq_ctx *ctx)
  76{
  77        if (!sbitmap_test_bit(&hctx->ctx_map, ctx->index_hw))
  78                sbitmap_set_bit(&hctx->ctx_map, ctx->index_hw);
  79}
  80
  81static void blk_mq_hctx_clear_pending(struct blk_mq_hw_ctx *hctx,
  82                                      struct blk_mq_ctx *ctx)
  83{
  84        sbitmap_clear_bit(&hctx->ctx_map, ctx->index_hw);
  85}
  86
  87struct mq_inflight {
  88        struct hd_struct *part;
  89        unsigned int *inflight;
  90};
  91
  92static void blk_mq_check_inflight(struct blk_mq_hw_ctx *hctx,
  93                                  struct request *rq, void *priv,
  94                                  bool reserved)
  95{
  96        struct mq_inflight *mi = priv;
  97
  98        /*
  99         * index[0] counts the specific partition that was asked for. index[1]
 100         * counts the ones that are active on the whole device, so increment
 101         * that if mi->part is indeed a partition, and not a whole device.
 102         */
 103        if (rq->part == mi->part)
 104                mi->inflight[0]++;
 105        if (mi->part->partno)
 106                mi->inflight[1]++;
 107}
 108
 109void blk_mq_in_flight(struct request_queue *q, struct hd_struct *part,
 110                      unsigned int inflight[2])
 111{
 112        struct mq_inflight mi = { .part = part, .inflight = inflight, };
 113
 114        inflight[0] = inflight[1] = 0;
 115        blk_mq_queue_tag_busy_iter(q, blk_mq_check_inflight, &mi);
 116}
 117
 118static void blk_mq_check_inflight_rw(struct blk_mq_hw_ctx *hctx,
 119                                     struct request *rq, void *priv,
 120                                     bool reserved)
 121{
 122        struct mq_inflight *mi = priv;
 123
 124        if (rq->part == mi->part)
 125                mi->inflight[rq_data_dir(rq)]++;
 126}
 127
 128void blk_mq_in_flight_rw(struct request_queue *q, struct hd_struct *part,
 129                         unsigned int inflight[2])
 130{
 131        struct mq_inflight mi = { .part = part, .inflight = inflight, };
 132
 133        inflight[0] = inflight[1] = 0;
 134        blk_mq_queue_tag_busy_iter(q, blk_mq_check_inflight_rw, &mi);
 135}
 136
 137void blk_freeze_queue_start(struct request_queue *q)
 138{
 139        int freeze_depth;
 140
 141        freeze_depth = atomic_inc_return(&q->mq_freeze_depth);
 142        if (freeze_depth == 1) {
 143                percpu_ref_kill(&q->q_usage_counter);
 144                if (q->mq_ops)
 145                        blk_mq_run_hw_queues(q, false);
 146        }
 147}
 148EXPORT_SYMBOL_GPL(blk_freeze_queue_start);
 149
 150void blk_mq_freeze_queue_wait(struct request_queue *q)
 151{
 152        wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter));
 153}
 154EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait);
 155
 156int blk_mq_freeze_queue_wait_timeout(struct request_queue *q,
 157                                     unsigned long timeout)
 158{
 159        return wait_event_timeout(q->mq_freeze_wq,
 160                                        percpu_ref_is_zero(&q->q_usage_counter),
 161                                        timeout);
 162}
 163EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait_timeout);
 164
 165/*
 166 * Guarantee no request is in use, so we can change any data structure of
 167 * the queue afterward.
 168 */
 169void blk_freeze_queue(struct request_queue *q)
 170{
 171        /*
 172         * In the !blk_mq case we are only calling this to kill the
 173         * q_usage_counter, otherwise this increases the freeze depth
 174         * and waits for it to return to zero.  For this reason there is
 175         * no blk_unfreeze_queue(), and blk_freeze_queue() is not
 176         * exported to drivers as the only user for unfreeze is blk_mq.
 177         */
 178        blk_freeze_queue_start(q);
 179        if (!q->mq_ops)
 180                blk_drain_queue(q);
 181        blk_mq_freeze_queue_wait(q);
 182}
 183
 184void blk_mq_freeze_queue(struct request_queue *q)
 185{
 186        /*
 187         * ...just an alias to keep freeze and unfreeze actions balanced
 188         * in the blk_mq_* namespace
 189         */
 190        blk_freeze_queue(q);
 191}
 192EXPORT_SYMBOL_GPL(blk_mq_freeze_queue);
 193
 194void blk_mq_unfreeze_queue(struct request_queue *q)
 195{
 196        int freeze_depth;
 197
 198        freeze_depth = atomic_dec_return(&q->mq_freeze_depth);
 199        WARN_ON_ONCE(freeze_depth < 0);
 200        if (!freeze_depth) {
 201                percpu_ref_reinit(&q->q_usage_counter);
 202                wake_up_all(&q->mq_freeze_wq);
 203        }
 204}
 205EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue);
 206
 207/*
 208 * FIXME: replace the scsi_internal_device_*block_nowait() calls in the
 209 * mpt3sas driver such that this function can be removed.
 210 */
 211void blk_mq_quiesce_queue_nowait(struct request_queue *q)
 212{
 213        blk_queue_flag_set(QUEUE_FLAG_QUIESCED, q);
 214}
 215EXPORT_SYMBOL_GPL(blk_mq_quiesce_queue_nowait);
 216
 217/**
 218 * blk_mq_quiesce_queue() - wait until all ongoing dispatches have finished
 219 * @q: request queue.
 220 *
 221 * Note: this function does not prevent that the struct request end_io()
 222 * callback function is invoked. Once this function is returned, we make
 223 * sure no dispatch can happen until the queue is unquiesced via
 224 * blk_mq_unquiesce_queue().
 225 */
 226void blk_mq_quiesce_queue(struct request_queue *q)
 227{
 228        struct blk_mq_hw_ctx *hctx;
 229        unsigned int i;
 230        bool rcu = false;
 231
 232        blk_mq_quiesce_queue_nowait(q);
 233
 234        queue_for_each_hw_ctx(q, hctx, i) {
 235                if (hctx->flags & BLK_MQ_F_BLOCKING)
 236                        synchronize_srcu(hctx->srcu);
 237                else
 238                        rcu = true;
 239        }
 240        if (rcu)
 241                synchronize_rcu();
 242}
 243EXPORT_SYMBOL_GPL(blk_mq_quiesce_queue);
 244
 245/*
 246 * blk_mq_unquiesce_queue() - counterpart of blk_mq_quiesce_queue()
 247 * @q: request queue.
 248 *
 249 * This function recovers queue into the state before quiescing
 250 * which is done by blk_mq_quiesce_queue.
 251 */
 252void blk_mq_unquiesce_queue(struct request_queue *q)
 253{
 254        blk_queue_flag_clear(QUEUE_FLAG_QUIESCED, q);
 255
 256        /* dispatch requests which are inserted during quiescing */
 257        blk_mq_run_hw_queues(q, true);
 258}
 259EXPORT_SYMBOL_GPL(blk_mq_unquiesce_queue);
 260
 261void blk_mq_wake_waiters(struct request_queue *q)
 262{
 263        struct blk_mq_hw_ctx *hctx;
 264        unsigned int i;
 265
 266        queue_for_each_hw_ctx(q, hctx, i)
 267                if (blk_mq_hw_queue_mapped(hctx))
 268                        blk_mq_tag_wakeup_all(hctx->tags, true);
 269}
 270
 271bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx)
 272{
 273        return blk_mq_has_free_tags(hctx->tags);
 274}
 275EXPORT_SYMBOL(blk_mq_can_queue);
 276
 277static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
 278                unsigned int tag, unsigned int op)
 279{
 280        struct blk_mq_tags *tags = blk_mq_tags_from_data(data);
 281        struct request *rq = tags->static_rqs[tag];
 282        req_flags_t rq_flags = 0;
 283
 284        if (data->flags & BLK_MQ_REQ_INTERNAL) {
 285                rq->tag = -1;
 286                rq->internal_tag = tag;
 287        } else {
 288                if (data->hctx->flags & BLK_MQ_F_TAG_SHARED) {
 289                        rq_flags = RQF_MQ_INFLIGHT;
 290                        atomic_inc(&data->hctx->nr_active);
 291                }
 292                rq->tag = tag;
 293                rq->internal_tag = -1;
 294                data->hctx->tags->rqs[rq->tag] = rq;
 295        }
 296
 297        /* csd/requeue_work/fifo_time is initialized before use */
 298        rq->q = data->q;
 299        rq->mq_ctx = data->ctx;
 300        rq->rq_flags = rq_flags;
 301        rq->cpu = -1;
 302        rq->cmd_flags = op;
 303        if (data->flags & BLK_MQ_REQ_PREEMPT)
 304                rq->rq_flags |= RQF_PREEMPT;
 305        if (blk_queue_io_stat(data->q))
 306                rq->rq_flags |= RQF_IO_STAT;
 307        INIT_LIST_HEAD(&rq->queuelist);
 308        INIT_HLIST_NODE(&rq->hash);
 309        RB_CLEAR_NODE(&rq->rb_node);
 310        rq->rq_disk = NULL;
 311        rq->part = NULL;
 312        rq->start_time_ns = ktime_get_ns();
 313        rq->io_start_time_ns = 0;
 314        rq->nr_phys_segments = 0;
 315#if defined(CONFIG_BLK_DEV_INTEGRITY)
 316        rq->nr_integrity_segments = 0;
 317#endif
 318        rq->special = NULL;
 319        /* tag was already set */
 320        rq->extra_len = 0;
 321        rq->__deadline = 0;
 322
 323        INIT_LIST_HEAD(&rq->timeout_list);
 324        rq->timeout = 0;
 325
 326        rq->end_io = NULL;
 327        rq->end_io_data = NULL;
 328        rq->next_rq = NULL;
 329
 330#ifdef CONFIG_BLK_CGROUP
 331        rq->rl = NULL;
 332#endif
 333
 334        data->ctx->rq_dispatched[op_is_sync(op)]++;
 335        refcount_set(&rq->ref, 1);
 336        return rq;
 337}
 338
 339static struct request *blk_mq_get_request(struct request_queue *q,
 340                struct bio *bio, unsigned int op,
 341                struct blk_mq_alloc_data *data)
 342{
 343        struct elevator_queue *e = q->elevator;
 344        struct request *rq;
 345        unsigned int tag;
 346        bool put_ctx_on_error = false;
 347
 348        blk_queue_enter_live(q);
 349        data->q = q;
 350        if (likely(!data->ctx)) {
 351                data->ctx = blk_mq_get_ctx(q);
 352                put_ctx_on_error = true;
 353        }
 354        if (likely(!data->hctx))
 355                data->hctx = blk_mq_map_queue(q, data->ctx->cpu);
 356        if (op & REQ_NOWAIT)
 357                data->flags |= BLK_MQ_REQ_NOWAIT;
 358
 359        if (e) {
 360                data->flags |= BLK_MQ_REQ_INTERNAL;
 361
 362                /*
 363                 * Flush requests are special and go directly to the
 364                 * dispatch list. Don't include reserved tags in the
 365                 * limiting, as it isn't useful.
 366                 */
 367                if (!op_is_flush(op) && e->type->ops.mq.limit_depth &&
 368                    !(data->flags & BLK_MQ_REQ_RESERVED))
 369                        e->type->ops.mq.limit_depth(op, data);
 370        } else {
 371                blk_mq_tag_busy(data->hctx);
 372        }
 373
 374        tag = blk_mq_get_tag(data);
 375        if (tag == BLK_MQ_TAG_FAIL) {
 376                if (put_ctx_on_error) {
 377                        blk_mq_put_ctx(data->ctx);
 378                        data->ctx = NULL;
 379                }
 380                blk_queue_exit(q);
 381                return NULL;
 382        }
 383
 384        rq = blk_mq_rq_ctx_init(data, tag, op);
 385        if (!op_is_flush(op)) {
 386                rq->elv.icq = NULL;
 387                if (e && e->type->ops.mq.prepare_request) {
 388                        if (e->type->icq_cache && rq_ioc(bio))
 389                                blk_mq_sched_assign_ioc(rq, bio);
 390
 391                        e->type->ops.mq.prepare_request(rq, bio);
 392                        rq->rq_flags |= RQF_ELVPRIV;
 393                }
 394        }
 395        data->hctx->queued++;
 396        return rq;
 397}
 398
 399struct request *blk_mq_alloc_request(struct request_queue *q, unsigned int op,
 400                blk_mq_req_flags_t flags)
 401{
 402        struct blk_mq_alloc_data alloc_data = { .flags = flags };
 403        struct request *rq;
 404        int ret;
 405
 406        ret = blk_queue_enter(q, flags);
 407        if (ret)
 408                return ERR_PTR(ret);
 409
 410        rq = blk_mq_get_request(q, NULL, op, &alloc_data);
 411        blk_queue_exit(q);
 412
 413        if (!rq)
 414                return ERR_PTR(-EWOULDBLOCK);
 415
 416        blk_mq_put_ctx(alloc_data.ctx);
 417
 418        rq->__data_len = 0;
 419        rq->__sector = (sector_t) -1;
 420        rq->bio = rq->biotail = NULL;
 421        return rq;
 422}
 423EXPORT_SYMBOL(blk_mq_alloc_request);
 424
 425struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
 426        unsigned int op, blk_mq_req_flags_t flags, unsigned int hctx_idx)
 427{
 428        struct blk_mq_alloc_data alloc_data = { .flags = flags };
 429        struct request *rq;
 430        unsigned int cpu;
 431        int ret;
 432
 433        /*
 434         * If the tag allocator sleeps we could get an allocation for a
 435         * different hardware context.  No need to complicate the low level
 436         * allocator for this for the rare use case of a command tied to
 437         * a specific queue.
 438         */
 439        if (WARN_ON_ONCE(!(flags & BLK_MQ_REQ_NOWAIT)))
 440                return ERR_PTR(-EINVAL);
 441
 442        if (hctx_idx >= q->nr_hw_queues)
 443                return ERR_PTR(-EIO);
 444
 445        ret = blk_queue_enter(q, flags);
 446        if (ret)
 447                return ERR_PTR(ret);
 448
 449        /*
 450         * Check if the hardware context is actually mapped to anything.
 451         * If not tell the caller that it should skip this queue.
 452         */
 453        alloc_data.hctx = q->queue_hw_ctx[hctx_idx];
 454        if (!blk_mq_hw_queue_mapped(alloc_data.hctx)) {
 455                blk_queue_exit(q);
 456                return ERR_PTR(-EXDEV);
 457        }
 458        cpu = cpumask_first_and(alloc_data.hctx->cpumask, cpu_online_mask);
 459        alloc_data.ctx = __blk_mq_get_ctx(q, cpu);
 460
 461        rq = blk_mq_get_request(q, NULL, op, &alloc_data);
 462        blk_queue_exit(q);
 463
 464        if (!rq)
 465                return ERR_PTR(-EWOULDBLOCK);
 466
 467        return rq;
 468}
 469EXPORT_SYMBOL_GPL(blk_mq_alloc_request_hctx);
 470
 471static void __blk_mq_free_request(struct request *rq)
 472{
 473        struct request_queue *q = rq->q;
 474        struct blk_mq_ctx *ctx = rq->mq_ctx;
 475        struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, ctx->cpu);
 476        const int sched_tag = rq->internal_tag;
 477
 478        if (rq->tag != -1)
 479                blk_mq_put_tag(hctx, hctx->tags, ctx, rq->tag);
 480        if (sched_tag != -1)
 481                blk_mq_put_tag(hctx, hctx->sched_tags, ctx, sched_tag);
 482        blk_mq_sched_restart(hctx);
 483        blk_queue_exit(q);
 484}
 485
 486void blk_mq_free_request(struct request *rq)
 487{
 488        struct request_queue *q = rq->q;
 489        struct elevator_queue *e = q->elevator;
 490        struct blk_mq_ctx *ctx = rq->mq_ctx;
 491        struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, ctx->cpu);
 492
 493        if (rq->rq_flags & RQF_ELVPRIV) {
 494                if (e && e->type->ops.mq.finish_request)
 495                        e->type->ops.mq.finish_request(rq);
 496                if (rq->elv.icq) {
 497                        put_io_context(rq->elv.icq->ioc);
 498                        rq->elv.icq = NULL;
 499                }
 500        }
 501
 502        ctx->rq_completed[rq_is_sync(rq)]++;
 503        if (rq->rq_flags & RQF_MQ_INFLIGHT)
 504                atomic_dec(&hctx->nr_active);
 505
 506        if (unlikely(laptop_mode && !blk_rq_is_passthrough(rq)))
 507                laptop_io_completion(q->backing_dev_info);
 508
 509        rq_qos_done(q, rq);
 510
 511        if (blk_rq_rl(rq))
 512                blk_put_rl(blk_rq_rl(rq));
 513
 514        WRITE_ONCE(rq->state, MQ_RQ_IDLE);
 515        if (refcount_dec_and_test(&rq->ref))
 516                __blk_mq_free_request(rq);
 517}
 518EXPORT_SYMBOL_GPL(blk_mq_free_request);
 519
 520inline void __blk_mq_end_request(struct request *rq, blk_status_t error)
 521{
 522        u64 now = ktime_get_ns();
 523
 524        if (rq->rq_flags & RQF_STATS) {
 525                blk_mq_poll_stats_start(rq->q);
 526                blk_stat_add(rq, now);
 527        }
 528
 529        blk_account_io_done(rq, now);
 530
 531        if (rq->end_io) {
 532                rq_qos_done(rq->q, rq);
 533                rq->end_io(rq, error);
 534        } else {
 535                if (unlikely(blk_bidi_rq(rq)))
 536                        blk_mq_free_request(rq->next_rq);
 537                blk_mq_free_request(rq);
 538        }
 539}
 540EXPORT_SYMBOL(__blk_mq_end_request);
 541
 542void blk_mq_end_request(struct request *rq, blk_status_t error)
 543{
 544        if (blk_update_request(rq, error, blk_rq_bytes(rq)))
 545                BUG();
 546        __blk_mq_end_request(rq, error);
 547}
 548EXPORT_SYMBOL(blk_mq_end_request);
 549
 550static void __blk_mq_complete_request_remote(void *data)
 551{
 552        struct request *rq = data;
 553
 554        rq->q->softirq_done_fn(rq);
 555}
 556
 557static void __blk_mq_complete_request(struct request *rq)
 558{
 559        struct blk_mq_ctx *ctx = rq->mq_ctx;
 560        bool shared = false;
 561        int cpu;
 562
 563        if (!blk_mq_mark_complete(rq))
 564                return;
 565        if (rq->internal_tag != -1)
 566                blk_mq_sched_completed_request(rq);
 567
 568        if (!test_bit(QUEUE_FLAG_SAME_COMP, &rq->q->queue_flags)) {
 569                rq->q->softirq_done_fn(rq);
 570                return;
 571        }
 572
 573        cpu = get_cpu();
 574        if (!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags))
 575                shared = cpus_share_cache(cpu, ctx->cpu);
 576
 577        if (cpu != ctx->cpu && !shared && cpu_online(ctx->cpu)) {
 578                rq->csd.func = __blk_mq_complete_request_remote;
 579                rq->csd.info = rq;
 580                rq->csd.flags = 0;
 581                smp_call_function_single_async(ctx->cpu, &rq->csd);
 582        } else {
 583                rq->q->softirq_done_fn(rq);
 584        }
 585        put_cpu();
 586}
 587
 588static void hctx_unlock(struct blk_mq_hw_ctx *hctx, int srcu_idx)
 589        __releases(hctx->srcu)
 590{
 591        if (!(hctx->flags & BLK_MQ_F_BLOCKING))
 592                rcu_read_unlock();
 593        else
 594                srcu_read_unlock(hctx->srcu, srcu_idx);
 595}
 596
 597static void hctx_lock(struct blk_mq_hw_ctx *hctx, int *srcu_idx)
 598        __acquires(hctx->srcu)
 599{
 600        if (!(hctx->flags & BLK_MQ_F_BLOCKING)) {
 601                /* shut up gcc false positive */
 602                *srcu_idx = 0;
 603                rcu_read_lock();
 604        } else
 605                *srcu_idx = srcu_read_lock(hctx->srcu);
 606}
 607
 608/**
 609 * blk_mq_complete_request - end I/O on a request
 610 * @rq:         the request being processed
 611 *
 612 * Description:
 613 *      Ends all I/O on a request. It does not handle partial completions.
 614 *      The actual completion happens out-of-order, through a IPI handler.
 615 **/
 616void blk_mq_complete_request(struct request *rq)
 617{
 618        if (unlikely(blk_should_fake_timeout(rq->q)))
 619                return;
 620        __blk_mq_complete_request(rq);
 621}
 622EXPORT_SYMBOL(blk_mq_complete_request);
 623
 624int blk_mq_request_started(struct request *rq)
 625{
 626        return blk_mq_rq_state(rq) != MQ_RQ_IDLE;
 627}
 628EXPORT_SYMBOL_GPL(blk_mq_request_started);
 629
 630void blk_mq_start_request(struct request *rq)
 631{
 632        struct request_queue *q = rq->q;
 633
 634        blk_mq_sched_started_request(rq);
 635
 636        trace_block_rq_issue(q, rq);
 637
 638        if (test_bit(QUEUE_FLAG_STATS, &q->queue_flags)) {
 639                rq->io_start_time_ns = ktime_get_ns();
 640#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
 641                rq->throtl_size = blk_rq_sectors(rq);
 642#endif
 643                rq->rq_flags |= RQF_STATS;
 644                rq_qos_issue(q, rq);
 645        }
 646
 647        WARN_ON_ONCE(blk_mq_rq_state(rq) != MQ_RQ_IDLE);
 648
 649        blk_add_timer(rq);
 650        WRITE_ONCE(rq->state, MQ_RQ_IN_FLIGHT);
 651
 652        if (q->dma_drain_size && blk_rq_bytes(rq)) {
 653                /*
 654                 * Make sure space for the drain appears.  We know we can do
 655                 * this because max_hw_segments has been adjusted to be one
 656                 * fewer than the device can handle.
 657                 */
 658                rq->nr_phys_segments++;
 659        }
 660}
 661EXPORT_SYMBOL(blk_mq_start_request);
 662
 663static void __blk_mq_requeue_request(struct request *rq)
 664{
 665        struct request_queue *q = rq->q;
 666
 667        blk_mq_put_driver_tag(rq);
 668
 669        trace_block_rq_requeue(q, rq);
 670        rq_qos_requeue(q, rq);
 671
 672        if (blk_mq_request_started(rq)) {
 673                WRITE_ONCE(rq->state, MQ_RQ_IDLE);
 674                rq->rq_flags &= ~RQF_TIMED_OUT;
 675                if (q->dma_drain_size && blk_rq_bytes(rq))
 676                        rq->nr_phys_segments--;
 677        }
 678}
 679
 680void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list)
 681{
 682        __blk_mq_requeue_request(rq);
 683
 684        /* this request will be re-inserted to io scheduler queue */
 685        blk_mq_sched_requeue_request(rq);
 686
 687        BUG_ON(blk_queued_rq(rq));
 688        blk_mq_add_to_requeue_list(rq, true, kick_requeue_list);
 689}
 690EXPORT_SYMBOL(blk_mq_requeue_request);
 691
 692static void blk_mq_requeue_work(struct work_struct *work)
 693{
 694        struct request_queue *q =
 695                container_of(work, struct request_queue, requeue_work.work);
 696        LIST_HEAD(rq_list);
 697        struct request *rq, *next;
 698
 699        spin_lock_irq(&q->requeue_lock);
 700        list_splice_init(&q->requeue_list, &rq_list);
 701        spin_unlock_irq(&q->requeue_lock);
 702
 703        list_for_each_entry_safe(rq, next, &rq_list, queuelist) {
 704                if (!(rq->rq_flags & RQF_SOFTBARRIER))
 705                        continue;
 706
 707                rq->rq_flags &= ~RQF_SOFTBARRIER;
 708                list_del_init(&rq->queuelist);
 709                blk_mq_sched_insert_request(rq, true, false, false);
 710        }
 711
 712        while (!list_empty(&rq_list)) {
 713                rq = list_entry(rq_list.next, struct request, queuelist);
 714                list_del_init(&rq->queuelist);
 715                blk_mq_sched_insert_request(rq, false, false, false);
 716        }
 717
 718        blk_mq_run_hw_queues(q, false);
 719}
 720
 721void blk_mq_add_to_requeue_list(struct request *rq, bool at_head,
 722                                bool kick_requeue_list)
 723{
 724        struct request_queue *q = rq->q;
 725        unsigned long flags;
 726
 727        /*
 728         * We abuse this flag that is otherwise used by the I/O scheduler to
 729         * request head insertion from the workqueue.
 730         */
 731        BUG_ON(rq->rq_flags & RQF_SOFTBARRIER);
 732
 733        spin_lock_irqsave(&q->requeue_lock, flags);
 734        if (at_head) {
 735                rq->rq_flags |= RQF_SOFTBARRIER;
 736                list_add(&rq->queuelist, &q->requeue_list);
 737        } else {
 738                list_add_tail(&rq->queuelist, &q->requeue_list);
 739        }
 740        spin_unlock_irqrestore(&q->requeue_lock, flags);
 741
 742        if (kick_requeue_list)
 743                blk_mq_kick_requeue_list(q);
 744}
 745EXPORT_SYMBOL(blk_mq_add_to_requeue_list);
 746
 747void blk_mq_kick_requeue_list(struct request_queue *q)
 748{
 749        kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work, 0);
 750}
 751EXPORT_SYMBOL(blk_mq_kick_requeue_list);
 752
 753void blk_mq_delay_kick_requeue_list(struct request_queue *q,
 754                                    unsigned long msecs)
 755{
 756        kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work,
 757                                    msecs_to_jiffies(msecs));
 758}
 759EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list);
 760
 761struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag)
 762{
 763        if (tag < tags->nr_tags) {
 764                prefetch(tags->rqs[tag]);
 765                return tags->rqs[tag];
 766        }
 767
 768        return NULL;
 769}
 770EXPORT_SYMBOL(blk_mq_tag_to_rq);
 771
 772static void blk_mq_rq_timed_out(struct request *req, bool reserved)
 773{
 774        req->rq_flags |= RQF_TIMED_OUT;
 775        if (req->q->mq_ops->timeout) {
 776                enum blk_eh_timer_return ret;
 777
 778                ret = req->q->mq_ops->timeout(req, reserved);
 779                if (ret == BLK_EH_DONE)
 780                        return;
 781                WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER);
 782        }
 783
 784        blk_add_timer(req);
 785}
 786
 787static bool blk_mq_req_expired(struct request *rq, unsigned long *next)
 788{
 789        unsigned long deadline;
 790
 791        if (blk_mq_rq_state(rq) != MQ_RQ_IN_FLIGHT)
 792                return false;
 793        if (rq->rq_flags & RQF_TIMED_OUT)
 794                return false;
 795
 796        deadline = blk_rq_deadline(rq);
 797        if (time_after_eq(jiffies, deadline))
 798                return true;
 799
 800        if (*next == 0)
 801                *next = deadline;
 802        else if (time_after(*next, deadline))
 803                *next = deadline;
 804        return false;
 805}
 806
 807static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx,
 808                struct request *rq, void *priv, bool reserved)
 809{
 810        unsigned long *next = priv;
 811
 812        /*
 813         * Just do a quick check if it is expired before locking the request in
 814         * so we're not unnecessarilly synchronizing across CPUs.
 815         */
 816        if (!blk_mq_req_expired(rq, next))
 817                return;
 818
 819        /*
 820         * We have reason to believe the request may be expired. Take a
 821         * reference on the request to lock this request lifetime into its
 822         * currently allocated context to prevent it from being reallocated in
 823         * the event the completion by-passes this timeout handler.
 824         *
 825         * If the reference was already released, then the driver beat the
 826         * timeout handler to posting a natural completion.
 827         */
 828        if (!refcount_inc_not_zero(&rq->ref))
 829                return;
 830
 831        /*
 832         * The request is now locked and cannot be reallocated underneath the
 833         * timeout handler's processing. Re-verify this exact request is truly
 834         * expired; if it is not expired, then the request was completed and
 835         * reallocated as a new request.
 836         */
 837        if (blk_mq_req_expired(rq, next))
 838                blk_mq_rq_timed_out(rq, reserved);
 839        if (refcount_dec_and_test(&rq->ref))
 840                __blk_mq_free_request(rq);
 841}
 842
 843static void blk_mq_timeout_work(struct work_struct *work)
 844{
 845        struct request_queue *q =
 846                container_of(work, struct request_queue, timeout_work);
 847        unsigned long next = 0;
 848        struct blk_mq_hw_ctx *hctx;
 849        int i;
 850
 851        /* A deadlock might occur if a request is stuck requiring a
 852         * timeout at the same time a queue freeze is waiting
 853         * completion, since the timeout code would not be able to
 854         * acquire the queue reference here.
 855         *
 856         * That's why we don't use blk_queue_enter here; instead, we use
 857         * percpu_ref_tryget directly, because we need to be able to
 858         * obtain a reference even in the short window between the queue
 859         * starting to freeze, by dropping the first reference in
 860         * blk_freeze_queue_start, and the moment the last request is
 861         * consumed, marked by the instant q_usage_counter reaches
 862         * zero.
 863         */
 864        if (!percpu_ref_tryget(&q->q_usage_counter))
 865                return;
 866
 867        blk_mq_queue_tag_busy_iter(q, blk_mq_check_expired, &next);
 868
 869        if (next != 0) {
 870                mod_timer(&q->timeout, next);
 871        } else {
 872                /*
 873                 * Request timeouts are handled as a forward rolling timer. If
 874                 * we end up here it means that no requests are pending and
 875                 * also that no request has been pending for a while. Mark
 876                 * each hctx as idle.
 877                 */
 878                queue_for_each_hw_ctx(q, hctx, i) {
 879                        /* the hctx may be unmapped, so check it here */
 880                        if (blk_mq_hw_queue_mapped(hctx))
 881                                blk_mq_tag_idle(hctx);
 882                }
 883        }
 884        blk_queue_exit(q);
 885}
 886
 887struct flush_busy_ctx_data {
 888        struct blk_mq_hw_ctx *hctx;
 889        struct list_head *list;
 890};
 891
 892static bool flush_busy_ctx(struct sbitmap *sb, unsigned int bitnr, void *data)
 893{
 894        struct flush_busy_ctx_data *flush_data = data;
 895        struct blk_mq_hw_ctx *hctx = flush_data->hctx;
 896        struct blk_mq_ctx *ctx = hctx->ctxs[bitnr];
 897
 898        spin_lock(&ctx->lock);
 899        list_splice_tail_init(&ctx->rq_list, flush_data->list);
 900        sbitmap_clear_bit(sb, bitnr);
 901        spin_unlock(&ctx->lock);
 902        return true;
 903}
 904
 905/*
 906 * Process software queues that have been marked busy, splicing them
 907 * to the for-dispatch
 908 */
 909void blk_mq_flush_busy_ctxs(struct blk_mq_hw_ctx *hctx, struct list_head *list)
 910{
 911        struct flush_busy_ctx_data data = {
 912                .hctx = hctx,
 913                .list = list,
 914        };
 915
 916        sbitmap_for_each_set(&hctx->ctx_map, flush_busy_ctx, &data);
 917}
 918EXPORT_SYMBOL_GPL(blk_mq_flush_busy_ctxs);
 919
 920struct dispatch_rq_data {
 921        struct blk_mq_hw_ctx *hctx;
 922        struct request *rq;
 923};
 924
 925static bool dispatch_rq_from_ctx(struct sbitmap *sb, unsigned int bitnr,
 926                void *data)
 927{
 928        struct dispatch_rq_data *dispatch_data = data;
 929        struct blk_mq_hw_ctx *hctx = dispatch_data->hctx;
 930        struct blk_mq_ctx *ctx = hctx->ctxs[bitnr];
 931
 932        spin_lock(&ctx->lock);
 933        if (!list_empty(&ctx->rq_list)) {
 934                dispatch_data->rq = list_entry_rq(ctx->rq_list.next);
 935                list_del_init(&dispatch_data->rq->queuelist);
 936                if (list_empty(&ctx->rq_list))
 937                        sbitmap_clear_bit(sb, bitnr);
 938        }
 939        spin_unlock(&ctx->lock);
 940
 941        return !dispatch_data->rq;
 942}
 943
 944struct request *blk_mq_dequeue_from_ctx(struct blk_mq_hw_ctx *hctx,
 945                                        struct blk_mq_ctx *start)
 946{
 947        unsigned off = start ? start->index_hw : 0;
 948        struct dispatch_rq_data data = {
 949                .hctx = hctx,
 950                .rq   = NULL,
 951        };
 952
 953        __sbitmap_for_each_set(&hctx->ctx_map, off,
 954                               dispatch_rq_from_ctx, &data);
 955
 956        return data.rq;
 957}
 958
 959static inline unsigned int queued_to_index(unsigned int queued)
 960{
 961        if (!queued)
 962                return 0;
 963
 964        return min(BLK_MQ_MAX_DISPATCH_ORDER - 1, ilog2(queued) + 1);
 965}
 966
 967bool blk_mq_get_driver_tag(struct request *rq)
 968{
 969        struct blk_mq_alloc_data data = {
 970                .q = rq->q,
 971                .hctx = blk_mq_map_queue(rq->q, rq->mq_ctx->cpu),
 972                .flags = BLK_MQ_REQ_NOWAIT,
 973        };
 974        bool shared;
 975
 976        if (rq->tag != -1)
 977                goto done;
 978
 979        if (blk_mq_tag_is_reserved(data.hctx->sched_tags, rq->internal_tag))
 980                data.flags |= BLK_MQ_REQ_RESERVED;
 981
 982        shared = blk_mq_tag_busy(data.hctx);
 983        rq->tag = blk_mq_get_tag(&data);
 984        if (rq->tag >= 0) {
 985                if (shared) {
 986                        rq->rq_flags |= RQF_MQ_INFLIGHT;
 987                        atomic_inc(&data.hctx->nr_active);
 988                }
 989                data.hctx->tags->rqs[rq->tag] = rq;
 990        }
 991
 992done:
 993        return rq->tag != -1;
 994}
 995
 996static int blk_mq_dispatch_wake(wait_queue_entry_t *wait, unsigned mode,
 997                                int flags, void *key)
 998{
 999        struct blk_mq_hw_ctx *hctx;
1000
1001        hctx = container_of(wait, struct blk_mq_hw_ctx, dispatch_wait);
1002
1003        spin_lock(&hctx->dispatch_wait_lock);
1004        list_del_init(&wait->entry);
1005        spin_unlock(&hctx->dispatch_wait_lock);
1006
1007        blk_mq_run_hw_queue(hctx, true);
1008        return 1;
1009}
1010
1011/*
1012 * Mark us waiting for a tag. For shared tags, this involves hooking us into
1013 * the tag wakeups. For non-shared tags, we can simply mark us needing a
1014 * restart. For both cases, take care to check the condition again after
1015 * marking us as waiting.
1016 */
1017static bool blk_mq_mark_tag_wait(struct blk_mq_hw_ctx *hctx,
1018                                 struct request *rq)
1019{
1020        struct wait_queue_head *wq;
1021        wait_queue_entry_t *wait;
1022        bool ret;
1023
1024        if (!(hctx->flags & BLK_MQ_F_TAG_SHARED)) {
1025                if (!test_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state))
1026                        set_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state);
1027
1028                /*
1029                 * It's possible that a tag was freed in the window between the
1030                 * allocation failure and adding the hardware queue to the wait
1031                 * queue.
1032                 *
1033                 * Don't clear RESTART here, someone else could have set it.
1034                 * At most this will cost an extra queue run.
1035                 */
1036                return blk_mq_get_driver_tag(rq);
1037        }
1038
1039        wait = &hctx->dispatch_wait;
1040        if (!list_empty_careful(&wait->entry))
1041                return false;
1042
1043        wq = &bt_wait_ptr(&hctx->tags->bitmap_tags, hctx)->wait;
1044
1045        spin_lock_irq(&wq->lock);
1046        spin_lock(&hctx->dispatch_wait_lock);
1047        if (!list_empty(&wait->entry)) {
1048                spin_unlock(&hctx->dispatch_wait_lock);
1049                spin_unlock_irq(&wq->lock);
1050                return false;
1051        }
1052
1053        wait->flags &= ~WQ_FLAG_EXCLUSIVE;
1054        __add_wait_queue(wq, wait);
1055
1056        /*
1057         * It's possible that a tag was freed in the window between the
1058         * allocation failure and adding the hardware queue to the wait
1059         * queue.
1060         */
1061        ret = blk_mq_get_driver_tag(rq);
1062        if (!ret) {
1063                spin_unlock(&hctx->dispatch_wait_lock);
1064                spin_unlock_irq(&wq->lock);
1065                return false;
1066        }
1067
1068        /*
1069         * We got a tag, remove ourselves from the wait queue to ensure
1070         * someone else gets the wakeup.
1071         */
1072        list_del_init(&wait->entry);
1073        spin_unlock(&hctx->dispatch_wait_lock);
1074        spin_unlock_irq(&wq->lock);
1075
1076        return true;
1077}
1078
1079#define BLK_MQ_DISPATCH_BUSY_EWMA_WEIGHT  8
1080#define BLK_MQ_DISPATCH_BUSY_EWMA_FACTOR  4
1081/*
1082 * Update dispatch busy with the Exponential Weighted Moving Average(EWMA):
1083 * - EWMA is one simple way to compute running average value
1084 * - weight(7/8 and 1/8) is applied so that it can decrease exponentially
1085 * - take 4 as factor for avoiding to get too small(0) result, and this
1086 *   factor doesn't matter because EWMA decreases exponentially
1087 */
1088static void blk_mq_update_dispatch_busy(struct blk_mq_hw_ctx *hctx, bool busy)
1089{
1090        unsigned int ewma;
1091
1092        if (hctx->queue->elevator)
1093                return;
1094
1095        ewma = hctx->dispatch_busy;
1096
1097        if (!ewma && !busy)
1098                return;
1099
1100        ewma *= BLK_MQ_DISPATCH_BUSY_EWMA_WEIGHT - 1;
1101        if (busy)
1102                ewma += 1 << BLK_MQ_DISPATCH_BUSY_EWMA_FACTOR;
1103        ewma /= BLK_MQ_DISPATCH_BUSY_EWMA_WEIGHT;
1104
1105        hctx->dispatch_busy = ewma;
1106}
1107
1108#define BLK_MQ_RESOURCE_DELAY   3               /* ms units */
1109
1110/*
1111 * Returns true if we did some work AND can potentially do more.
1112 */
1113bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list,
1114                             bool got_budget)
1115{
1116        struct blk_mq_hw_ctx *hctx;
1117        struct request *rq, *nxt;
1118        bool no_tag = false;
1119        int errors, queued;
1120        blk_status_t ret = BLK_STS_OK;
1121
1122        if (list_empty(list))
1123                return false;
1124
1125        WARN_ON(!list_is_singular(list) && got_budget);
1126
1127        /*
1128         * Now process all the entries, sending them to the driver.
1129         */
1130        errors = queued = 0;
1131        do {
1132                struct blk_mq_queue_data bd;
1133
1134                rq = list_first_entry(list, struct request, queuelist);
1135
1136                hctx = blk_mq_map_queue(rq->q, rq->mq_ctx->cpu);
1137                if (!got_budget && !blk_mq_get_dispatch_budget(hctx))
1138                        break;
1139
1140                if (!blk_mq_get_driver_tag(rq)) {
1141                        /*
1142                         * The initial allocation attempt failed, so we need to
1143                         * rerun the hardware queue when a tag is freed. The
1144                         * waitqueue takes care of that. If the queue is run
1145                         * before we add this entry back on the dispatch list,
1146                         * we'll re-run it below.
1147                         */
1148                        if (!blk_mq_mark_tag_wait(hctx, rq)) {
1149                                blk_mq_put_dispatch_budget(hctx);
1150                                /*
1151                                 * For non-shared tags, the RESTART check
1152                                 * will suffice.
1153                                 */
1154                                if (hctx->flags & BLK_MQ_F_TAG_SHARED)
1155                                        no_tag = true;
1156                                break;
1157                        }
1158                }
1159
1160                list_del_init(&rq->queuelist);
1161
1162                bd.rq = rq;
1163
1164                /*
1165                 * Flag last if we have no more requests, or if we have more
1166                 * but can't assign a driver tag to it.
1167                 */
1168                if (list_empty(list))
1169                        bd.last = true;
1170                else {
1171                        nxt = list_first_entry(list, struct request, queuelist);
1172                        bd.last = !blk_mq_get_driver_tag(nxt);
1173                }
1174
1175                ret = q->mq_ops->queue_rq(hctx, &bd);
1176                if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE) {
1177                        /*
1178                         * If an I/O scheduler has been configured and we got a
1179                         * driver tag for the next request already, free it
1180                         * again.
1181                         */
1182                        if (!list_empty(list)) {
1183                                nxt = list_first_entry(list, struct request, queuelist);
1184                                blk_mq_put_driver_tag(nxt);
1185                        }
1186                        list_add(&rq->queuelist, list);
1187                        __blk_mq_requeue_request(rq);
1188                        break;
1189                }
1190
1191                if (unlikely(ret != BLK_STS_OK)) {
1192                        errors++;
1193                        blk_mq_end_request(rq, BLK_STS_IOERR);
1194                        continue;
1195                }
1196
1197                queued++;
1198        } while (!list_empty(list));
1199
1200        hctx->dispatched[queued_to_index(queued)]++;
1201
1202        /*
1203         * Any items that need requeuing? Stuff them into hctx->dispatch,
1204         * that is where we will continue on next queue run.
1205         */
1206        if (!list_empty(list)) {
1207                bool needs_restart;
1208
1209                spin_lock(&hctx->lock);
1210                list_splice_init(list, &hctx->dispatch);
1211                spin_unlock(&hctx->lock);
1212
1213                /*
1214                 * If SCHED_RESTART was set by the caller of this function and
1215                 * it is no longer set that means that it was cleared by another
1216                 * thread and hence that a queue rerun is needed.
1217                 *
1218                 * If 'no_tag' is set, that means that we failed getting
1219                 * a driver tag with an I/O scheduler attached. If our dispatch
1220                 * waitqueue is no longer active, ensure that we run the queue
1221                 * AFTER adding our entries back to the list.
1222                 *
1223                 * If no I/O scheduler has been configured it is possible that
1224                 * the hardware queue got stopped and restarted before requests
1225                 * were pushed back onto the dispatch list. Rerun the queue to
1226                 * avoid starvation. Notes:
1227                 * - blk_mq_run_hw_queue() checks whether or not a queue has
1228                 *   been stopped before rerunning a queue.
1229                 * - Some but not all block drivers stop a queue before
1230                 *   returning BLK_STS_RESOURCE. Two exceptions are scsi-mq
1231                 *   and dm-rq.
1232                 *
1233                 * If driver returns BLK_STS_RESOURCE and SCHED_RESTART
1234                 * bit is set, run queue after a delay to avoid IO stalls
1235                 * that could otherwise occur if the queue is idle.
1236                 */
1237                needs_restart = blk_mq_sched_needs_restart(hctx);
1238                if (!needs_restart ||
1239                    (no_tag && list_empty_careful(&hctx->dispatch_wait.entry)))
1240                        blk_mq_run_hw_queue(hctx, true);
1241                else if (needs_restart && (ret == BLK_STS_RESOURCE))
1242                        blk_mq_delay_run_hw_queue(hctx, BLK_MQ_RESOURCE_DELAY);
1243
1244                blk_mq_update_dispatch_busy(hctx, true);
1245                return false;
1246        } else
1247                blk_mq_update_dispatch_busy(hctx, false);
1248
1249        /*
1250         * If the host/device is unable to accept more work, inform the
1251         * caller of that.
1252         */
1253        if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE)
1254                return false;
1255
1256        return (queued + errors) != 0;
1257}
1258
1259static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx)
1260{
1261        int srcu_idx;
1262
1263        /*
1264         * We should be running this queue from one of the CPUs that
1265         * are mapped to it.
1266         *
1267         * There are at least two related races now between setting
1268         * hctx->next_cpu from blk_mq_hctx_next_cpu() and running
1269         * __blk_mq_run_hw_queue():
1270         *
1271         * - hctx->next_cpu is found offline in blk_mq_hctx_next_cpu(),
1272         *   but later it becomes online, then this warning is harmless
1273         *   at all
1274         *
1275         * - hctx->next_cpu is found online in blk_mq_hctx_next_cpu(),
1276         *   but later it becomes offline, then the warning can't be
1277         *   triggered, and we depend on blk-mq timeout handler to
1278         *   handle dispatched requests to this hctx
1279         */
1280        if (!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask) &&
1281                cpu_online(hctx->next_cpu)) {
1282                printk(KERN_WARNING "run queue from wrong CPU %d, hctx %s\n",
1283                        raw_smp_processor_id(),
1284                        cpumask_empty(hctx->cpumask) ? "inactive": "active");
1285                dump_stack();
1286        }
1287
1288        /*
1289         * We can't run the queue inline with ints disabled. Ensure that
1290         * we catch bad users of this early.
1291         */
1292        WARN_ON_ONCE(in_interrupt());
1293
1294        might_sleep_if(hctx->flags & BLK_MQ_F_BLOCKING);
1295
1296        hctx_lock(hctx, &srcu_idx);
1297        blk_mq_sched_dispatch_requests(hctx);
1298        hctx_unlock(hctx, srcu_idx);
1299}
1300
1301static inline int blk_mq_first_mapped_cpu(struct blk_mq_hw_ctx *hctx)
1302{
1303        int cpu = cpumask_first_and(hctx->cpumask, cpu_online_mask);
1304
1305        if (cpu >= nr_cpu_ids)
1306                cpu = cpumask_first(hctx->cpumask);
1307        return cpu;
1308}
1309
1310/*
1311 * It'd be great if the workqueue API had a way to pass
1312 * in a mask and had some smarts for more clever placement.
1313 * For now we just round-robin here, switching for every
1314 * BLK_MQ_CPU_WORK_BATCH queued items.
1315 */
1316static int blk_mq_hctx_next_cpu(struct blk_mq_hw_ctx *hctx)
1317{
1318        bool tried = false;
1319        int next_cpu = hctx->next_cpu;
1320
1321        if (hctx->queue->nr_hw_queues == 1)
1322                return WORK_CPU_UNBOUND;
1323
1324        if (--hctx->next_cpu_batch <= 0) {
1325select_cpu:
1326                next_cpu = cpumask_next_and(next_cpu, hctx->cpumask,
1327                                cpu_online_mask);
1328                if (next_cpu >= nr_cpu_ids)
1329                        next_cpu = blk_mq_first_mapped_cpu(hctx);
1330                hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH;
1331        }
1332
1333        /*
1334         * Do unbound schedule if we can't find a online CPU for this hctx,
1335         * and it should only happen in the path of handling CPU DEAD.
1336         */
1337        if (!cpu_online(next_cpu)) {
1338                if (!tried) {
1339                        tried = true;
1340                        goto select_cpu;
1341                }
1342
1343                /*
1344                 * Make sure to re-select CPU next time once after CPUs
1345                 * in hctx->cpumask become online again.
1346                 */
1347                hctx->next_cpu = next_cpu;
1348                hctx->next_cpu_batch = 1;
1349                return WORK_CPU_UNBOUND;
1350        }
1351
1352        hctx->next_cpu = next_cpu;
1353        return next_cpu;
1354}
1355
1356static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async,
1357                                        unsigned long msecs)
1358{
1359        if (unlikely(blk_mq_hctx_stopped(hctx)))
1360                return;
1361
1362        if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
1363                int cpu = get_cpu();
1364                if (cpumask_test_cpu(cpu, hctx->cpumask)) {
1365                        __blk_mq_run_hw_queue(hctx);
1366                        put_cpu();
1367                        return;
1368                }
1369
1370                put_cpu();
1371        }
1372
1373        kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
1374                                    msecs_to_jiffies(msecs));
1375}
1376
1377void blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
1378{
1379        __blk_mq_delay_run_hw_queue(hctx, true, msecs);
1380}
1381EXPORT_SYMBOL(blk_mq_delay_run_hw_queue);
1382
1383bool blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
1384{
1385        int srcu_idx;
1386        bool need_run;
1387
1388        /*
1389         * When queue is quiesced, we may be switching io scheduler, or
1390         * updating nr_hw_queues, or other things, and we can't run queue
1391         * any more, even __blk_mq_hctx_has_pending() can't be called safely.
1392         *
1393         * And queue will be rerun in blk_mq_unquiesce_queue() if it is
1394         * quiesced.
1395         */
1396        hctx_lock(hctx, &srcu_idx);
1397        need_run = !blk_queue_quiesced(hctx->queue) &&
1398                blk_mq_hctx_has_pending(hctx);
1399        hctx_unlock(hctx, srcu_idx);
1400
1401        if (need_run) {
1402                __blk_mq_delay_run_hw_queue(hctx, async, 0);
1403                return true;
1404        }
1405
1406        return false;
1407}
1408EXPORT_SYMBOL(blk_mq_run_hw_queue);
1409
1410void blk_mq_run_hw_queues(struct request_queue *q, bool async)
1411{
1412        struct blk_mq_hw_ctx *hctx;
1413        int i;
1414
1415        queue_for_each_hw_ctx(q, hctx, i) {
1416                if (blk_mq_hctx_stopped(hctx))
1417                        continue;
1418
1419                blk_mq_run_hw_queue(hctx, async);
1420        }
1421}
1422EXPORT_SYMBOL(blk_mq_run_hw_queues);
1423
1424/**
1425 * blk_mq_queue_stopped() - check whether one or more hctxs have been stopped
1426 * @q: request queue.
1427 *
1428 * The caller is responsible for serializing this function against
1429 * blk_mq_{start,stop}_hw_queue().
1430 */
1431bool blk_mq_queue_stopped(struct request_queue *q)
1432{
1433        struct blk_mq_hw_ctx *hctx;
1434        int i;
1435
1436        queue_for_each_hw_ctx(q, hctx, i)
1437                if (blk_mq_hctx_stopped(hctx))
1438                        return true;
1439
1440        return false;
1441}
1442EXPORT_SYMBOL(blk_mq_queue_stopped);
1443
1444/*
1445 * This function is often used for pausing .queue_rq() by driver when
1446 * there isn't enough resource or some conditions aren't satisfied, and
1447 * BLK_STS_RESOURCE is usually returned.
1448 *
1449 * We do not guarantee that dispatch can be drained or blocked
1450 * after blk_mq_stop_hw_queue() returns. Please use
1451 * blk_mq_quiesce_queue() for that requirement.
1452 */
1453void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx)
1454{
1455        cancel_delayed_work(&hctx->run_work);
1456
1457        set_bit(BLK_MQ_S_STOPPED, &hctx->state);
1458}
1459EXPORT_SYMBOL(blk_mq_stop_hw_queue);
1460
1461/*
1462 * This function is often used for pausing .queue_rq() by driver when
1463 * there isn't enough resource or some conditions aren't satisfied, and
1464 * BLK_STS_RESOURCE is usually returned.
1465 *
1466 * We do not guarantee that dispatch can be drained or blocked
1467 * after blk_mq_stop_hw_queues() returns. Please use
1468 * blk_mq_quiesce_queue() for that requirement.
1469 */
1470void blk_mq_stop_hw_queues(struct request_queue *q)
1471{
1472        struct blk_mq_hw_ctx *hctx;
1473        int i;
1474
1475        queue_for_each_hw_ctx(q, hctx, i)
1476                blk_mq_stop_hw_queue(hctx);
1477}
1478EXPORT_SYMBOL(blk_mq_stop_hw_queues);
1479
1480void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx)
1481{
1482        clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
1483
1484        blk_mq_run_hw_queue(hctx, false);
1485}
1486EXPORT_SYMBOL(blk_mq_start_hw_queue);
1487
1488void blk_mq_start_hw_queues(struct request_queue *q)
1489{
1490        struct blk_mq_hw_ctx *hctx;
1491        int i;
1492
1493        queue_for_each_hw_ctx(q, hctx, i)
1494                blk_mq_start_hw_queue(hctx);
1495}
1496EXPORT_SYMBOL(blk_mq_start_hw_queues);
1497
1498void blk_mq_start_stopped_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
1499{
1500        if (!blk_mq_hctx_stopped(hctx))
1501                return;
1502
1503        clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
1504        blk_mq_run_hw_queue(hctx, async);
1505}
1506EXPORT_SYMBOL_GPL(blk_mq_start_stopped_hw_queue);
1507
1508void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async)
1509{
1510        struct blk_mq_hw_ctx *hctx;
1511        int i;
1512
1513        queue_for_each_hw_ctx(q, hctx, i)
1514                blk_mq_start_stopped_hw_queue(hctx, async);
1515}
1516EXPORT_SYMBOL(blk_mq_start_stopped_hw_queues);
1517
1518static void blk_mq_run_work_fn(struct work_struct *work)
1519{
1520        struct blk_mq_hw_ctx *hctx;
1521
1522        hctx = container_of(work, struct blk_mq_hw_ctx, run_work.work);
1523
1524        /*
1525         * If we are stopped, don't run the queue.
1526         */
1527        if (test_bit(BLK_MQ_S_STOPPED, &hctx->state))
1528                return;
1529
1530        __blk_mq_run_hw_queue(hctx);
1531}
1532
1533static inline void __blk_mq_insert_req_list(struct blk_mq_hw_ctx *hctx,
1534                                            struct request *rq,
1535                                            bool at_head)
1536{
1537        struct blk_mq_ctx *ctx = rq->mq_ctx;
1538
1539        lockdep_assert_held(&ctx->lock);
1540
1541        trace_block_rq_insert(hctx->queue, rq);
1542
1543        if (at_head)
1544                list_add(&rq->queuelist, &ctx->rq_list);
1545        else
1546                list_add_tail(&rq->queuelist, &ctx->rq_list);
1547}
1548
1549void __blk_mq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
1550                             bool at_head)
1551{
1552        struct blk_mq_ctx *ctx = rq->mq_ctx;
1553
1554        lockdep_assert_held(&ctx->lock);
1555
1556        __blk_mq_insert_req_list(hctx, rq, at_head);
1557        blk_mq_hctx_mark_pending(hctx, ctx);
1558}
1559
1560/*
1561 * Should only be used carefully, when the caller knows we want to
1562 * bypass a potential IO scheduler on the target device.
1563 */
1564void blk_mq_request_bypass_insert(struct request *rq, bool run_queue)
1565{
1566        struct blk_mq_ctx *ctx = rq->mq_ctx;
1567        struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(rq->q, ctx->cpu);
1568
1569        spin_lock(&hctx->lock);
1570        list_add_tail(&rq->queuelist, &hctx->dispatch);
1571        spin_unlock(&hctx->lock);
1572
1573        if (run_queue)
1574                blk_mq_run_hw_queue(hctx, false);
1575}
1576
1577void blk_mq_insert_requests(struct blk_mq_hw_ctx *hctx, struct blk_mq_ctx *ctx,
1578                            struct list_head *list)
1579
1580{
1581        struct request *rq;
1582
1583        /*
1584         * preemption doesn't flush plug list, so it's possible ctx->cpu is
1585         * offline now
1586         */
1587        list_for_each_entry(rq, list, queuelist) {
1588                BUG_ON(rq->mq_ctx != ctx);
1589                trace_block_rq_insert(hctx->queue, rq);
1590        }
1591
1592        spin_lock(&ctx->lock);
1593        list_splice_tail_init(list, &ctx->rq_list);
1594        blk_mq_hctx_mark_pending(hctx, ctx);
1595        spin_unlock(&ctx->lock);
1596}
1597
1598static int plug_ctx_cmp(void *priv, struct list_head *a, struct list_head *b)
1599{
1600        struct request *rqa = container_of(a, struct request, queuelist);
1601        struct request *rqb = container_of(b, struct request, queuelist);
1602
1603        return !(rqa->mq_ctx < rqb->mq_ctx ||
1604                 (rqa->mq_ctx == rqb->mq_ctx &&
1605                  blk_rq_pos(rqa) < blk_rq_pos(rqb)));
1606}
1607
1608void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
1609{
1610        struct blk_mq_ctx *this_ctx;
1611        struct request_queue *this_q;
1612        struct request *rq;
1613        LIST_HEAD(list);
1614        LIST_HEAD(ctx_list);
1615        unsigned int depth;
1616
1617        list_splice_init(&plug->mq_list, &list);
1618
1619        list_sort(NULL, &list, plug_ctx_cmp);
1620
1621        this_q = NULL;
1622        this_ctx = NULL;
1623        depth = 0;
1624
1625        while (!list_empty(&list)) {
1626                rq = list_entry_rq(list.next);
1627                list_del_init(&rq->queuelist);
1628                BUG_ON(!rq->q);
1629                if (rq->mq_ctx != this_ctx) {
1630                        if (this_ctx) {
1631                                trace_block_unplug(this_q, depth, !from_schedule);
1632                                blk_mq_sched_insert_requests(this_q, this_ctx,
1633                                                                &ctx_list,
1634                                                                from_schedule);
1635                        }
1636
1637                        this_ctx = rq->mq_ctx;
1638                        this_q = rq->q;
1639                        depth = 0;
1640                }
1641
1642                depth++;
1643                list_add_tail(&rq->queuelist, &ctx_list);
1644        }
1645
1646        /*
1647         * If 'this_ctx' is set, we know we have entries to complete
1648         * on 'ctx_list'. Do those.
1649         */
1650        if (this_ctx) {
1651                trace_block_unplug(this_q, depth, !from_schedule);
1652                blk_mq_sched_insert_requests(this_q, this_ctx, &ctx_list,
1653                                                from_schedule);
1654        }
1655}
1656
1657static void blk_mq_bio_to_request(struct request *rq, struct bio *bio)
1658{
1659        blk_init_request_from_bio(rq, bio);
1660
1661        blk_rq_set_rl(rq, blk_get_rl(rq->q, bio));
1662
1663        blk_account_io_start(rq, true);
1664}
1665
1666static blk_qc_t request_to_qc_t(struct blk_mq_hw_ctx *hctx, struct request *rq)
1667{
1668        if (rq->tag != -1)
1669                return blk_tag_to_qc_t(rq->tag, hctx->queue_num, false);
1670
1671        return blk_tag_to_qc_t(rq->internal_tag, hctx->queue_num, true);
1672}
1673
1674static blk_status_t __blk_mq_issue_directly(struct blk_mq_hw_ctx *hctx,
1675                                            struct request *rq,
1676                                            blk_qc_t *cookie)
1677{
1678        struct request_queue *q = rq->q;
1679        struct blk_mq_queue_data bd = {
1680                .rq = rq,
1681                .last = true,
1682        };
1683        blk_qc_t new_cookie;
1684        blk_status_t ret;
1685
1686        new_cookie = request_to_qc_t(hctx, rq);
1687
1688        /*
1689         * For OK queue, we are done. For error, caller may kill it.
1690         * Any other error (busy), just add it to our list as we
1691         * previously would have done.
1692         */
1693        ret = q->mq_ops->queue_rq(hctx, &bd);
1694        switch (ret) {
1695        case BLK_STS_OK:
1696                blk_mq_update_dispatch_busy(hctx, false);
1697                *cookie = new_cookie;
1698                break;
1699        case BLK_STS_RESOURCE:
1700        case BLK_STS_DEV_RESOURCE:
1701                blk_mq_update_dispatch_busy(hctx, true);
1702                __blk_mq_requeue_request(rq);
1703                break;
1704        default:
1705                blk_mq_update_dispatch_busy(hctx, false);
1706                *cookie = BLK_QC_T_NONE;
1707                break;
1708        }
1709
1710        return ret;
1711}
1712
1713static blk_status_t __blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx,
1714                                                struct request *rq,
1715                                                blk_qc_t *cookie,
1716                                                bool bypass_insert)
1717{
1718        struct request_queue *q = rq->q;
1719        bool run_queue = true;
1720
1721        /*
1722         * RCU or SRCU read lock is needed before checking quiesced flag.
1723         *
1724         * When queue is stopped or quiesced, ignore 'bypass_insert' from
1725         * blk_mq_request_issue_directly(), and return BLK_STS_OK to caller,
1726         * and avoid driver to try to dispatch again.
1727         */
1728        if (blk_mq_hctx_stopped(hctx) || blk_queue_quiesced(q)) {
1729                run_queue = false;
1730                bypass_insert = false;
1731                goto insert;
1732        }
1733
1734        if (q->elevator && !bypass_insert)
1735                goto insert;
1736
1737        if (!blk_mq_get_dispatch_budget(hctx))
1738                goto insert;
1739
1740        if (!blk_mq_get_driver_tag(rq)) {
1741                blk_mq_put_dispatch_budget(hctx);
1742                goto insert;
1743        }
1744
1745        return __blk_mq_issue_directly(hctx, rq, cookie);
1746insert:
1747        if (bypass_insert)
1748                return BLK_STS_RESOURCE;
1749
1750        blk_mq_sched_insert_request(rq, false, run_queue, false);
1751        return BLK_STS_OK;
1752}
1753
1754static void blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx,
1755                struct request *rq, blk_qc_t *cookie)
1756{
1757        blk_status_t ret;
1758        int srcu_idx;
1759
1760        might_sleep_if(hctx->flags & BLK_MQ_F_BLOCKING);
1761
1762        hctx_lock(hctx, &srcu_idx);
1763
1764        ret = __blk_mq_try_issue_directly(hctx, rq, cookie, false);
1765        if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE)
1766                blk_mq_sched_insert_request(rq, false, true, false);
1767        else if (ret != BLK_STS_OK)
1768                blk_mq_end_request(rq, ret);
1769
1770        hctx_unlock(hctx, srcu_idx);
1771}
1772
1773blk_status_t blk_mq_request_issue_directly(struct request *rq)
1774{
1775        blk_status_t ret;
1776        int srcu_idx;
1777        blk_qc_t unused_cookie;
1778        struct blk_mq_ctx *ctx = rq->mq_ctx;
1779        struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(rq->q, ctx->cpu);
1780
1781        hctx_lock(hctx, &srcu_idx);
1782        ret = __blk_mq_try_issue_directly(hctx, rq, &unused_cookie, true);
1783        hctx_unlock(hctx, srcu_idx);
1784
1785        return ret;
1786}
1787
1788void blk_mq_try_issue_list_directly(struct blk_mq_hw_ctx *hctx,
1789                struct list_head *list)
1790{
1791        while (!list_empty(list)) {
1792                blk_status_t ret;
1793                struct request *rq = list_first_entry(list, struct request,
1794                                queuelist);
1795
1796                list_del_init(&rq->queuelist);
1797                ret = blk_mq_request_issue_directly(rq);
1798                if (ret != BLK_STS_OK) {
1799                        if (ret == BLK_STS_RESOURCE ||
1800                                        ret == BLK_STS_DEV_RESOURCE) {
1801                                list_add(&rq->queuelist, list);
1802                                break;
1803                        }
1804                        blk_mq_end_request(rq, ret);
1805                }
1806        }
1807}
1808
1809static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio)
1810{
1811        const int is_sync = op_is_sync(bio->bi_opf);
1812        const int is_flush_fua = op_is_flush(bio->bi_opf);
1813        struct blk_mq_alloc_data data = { .flags = 0 };
1814        struct request *rq;
1815        unsigned int request_count = 0;
1816        struct blk_plug *plug;
1817        struct request *same_queue_rq = NULL;
1818        blk_qc_t cookie;
1819
1820        blk_queue_bounce(q, &bio);
1821
1822        blk_queue_split(q, &bio);
1823
1824        if (!bio_integrity_prep(bio))
1825                return BLK_QC_T_NONE;
1826
1827        if (!is_flush_fua && !blk_queue_nomerges(q) &&
1828            blk_attempt_plug_merge(q, bio, &request_count, &same_queue_rq))
1829                return BLK_QC_T_NONE;
1830
1831        if (blk_mq_sched_bio_merge(q, bio))
1832                return BLK_QC_T_NONE;
1833
1834        rq_qos_throttle(q, bio, NULL);
1835
1836        trace_block_getrq(q, bio, bio->bi_opf);
1837
1838        rq = blk_mq_get_request(q, bio, bio->bi_opf, &data);
1839        if (unlikely(!rq)) {
1840                rq_qos_cleanup(q, bio);
1841                if (bio->bi_opf & REQ_NOWAIT)
1842                        bio_wouldblock_error(bio);
1843                return BLK_QC_T_NONE;
1844        }
1845
1846        rq_qos_track(q, rq, bio);
1847
1848        cookie = request_to_qc_t(data.hctx, rq);
1849
1850        plug = current->plug;
1851        if (unlikely(is_flush_fua)) {
1852                blk_mq_put_ctx(data.ctx);
1853                blk_mq_bio_to_request(rq, bio);
1854
1855                /* bypass scheduler for flush rq */
1856                blk_insert_flush(rq);
1857                blk_mq_run_hw_queue(data.hctx, true);
1858        } else if (plug && q->nr_hw_queues == 1) {
1859                struct request *last = NULL;
1860
1861                blk_mq_put_ctx(data.ctx);
1862                blk_mq_bio_to_request(rq, bio);
1863
1864                /*
1865                 * @request_count may become stale because of schedule
1866                 * out, so check the list again.
1867                 */
1868                if (list_empty(&plug->mq_list))
1869                        request_count = 0;
1870                else if (blk_queue_nomerges(q))
1871                        request_count = blk_plug_queued_count(q);
1872
1873                if (!request_count)
1874                        trace_block_plug(q);
1875                else
1876                        last = list_entry_rq(plug->mq_list.prev);
1877
1878                if (request_count >= BLK_MAX_REQUEST_COUNT || (last &&
1879                    blk_rq_bytes(last) >= BLK_PLUG_FLUSH_SIZE)) {
1880                        blk_flush_plug_list(plug, false);
1881                        trace_block_plug(q);
1882                }
1883
1884                list_add_tail(&rq->queuelist, &plug->mq_list);
1885        } else if (plug && !blk_queue_nomerges(q)) {
1886                blk_mq_bio_to_request(rq, bio);
1887
1888                /*
1889                 * We do limited plugging. If the bio can be merged, do that.
1890                 * Otherwise the existing request in the plug list will be
1891                 * issued. So the plug list will have one request at most
1892                 * The plug list might get flushed before this. If that happens,
1893                 * the plug list is empty, and same_queue_rq is invalid.
1894                 */
1895                if (list_empty(&plug->mq_list))
1896                        same_queue_rq = NULL;
1897                if (same_queue_rq)
1898                        list_del_init(&same_queue_rq->queuelist);
1899                list_add_tail(&rq->queuelist, &plug->mq_list);
1900
1901                blk_mq_put_ctx(data.ctx);
1902
1903                if (same_queue_rq) {
1904                        data.hctx = blk_mq_map_queue(q,
1905                                        same_queue_rq->mq_ctx->cpu);
1906                        blk_mq_try_issue_directly(data.hctx, same_queue_rq,
1907                                        &cookie);
1908                }
1909        } else if ((q->nr_hw_queues > 1 && is_sync) || (!q->elevator &&
1910                        !data.hctx->dispatch_busy)) {
1911                blk_mq_put_ctx(data.ctx);
1912                blk_mq_bio_to_request(rq, bio);
1913                blk_mq_try_issue_directly(data.hctx, rq, &cookie);
1914        } else {
1915                blk_mq_put_ctx(data.ctx);
1916                blk_mq_bio_to_request(rq, bio);
1917                blk_mq_sched_insert_request(rq, false, true, true);
1918        }
1919
1920        return cookie;
1921}
1922
1923void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
1924                     unsigned int hctx_idx)
1925{
1926        struct page *page;
1927
1928        if (tags->rqs && set->ops->exit_request) {
1929                int i;
1930
1931                for (i = 0; i < tags->nr_tags; i++) {
1932                        struct request *rq = tags->static_rqs[i];
1933
1934                        if (!rq)
1935                                continue;
1936                        set->ops->exit_request(set, rq, hctx_idx);
1937                        tags->static_rqs[i] = NULL;
1938                }
1939        }
1940
1941        while (!list_empty(&tags->page_list)) {
1942                page = list_first_entry(&tags->page_list, struct page, lru);
1943                list_del_init(&page->lru);
1944                /*
1945                 * Remove kmemleak object previously allocated in
1946                 * blk_mq_init_rq_map().
1947                 */
1948                kmemleak_free(page_address(page));
1949                __free_pages(page, page->private);
1950        }
1951}
1952
1953void blk_mq_free_rq_map(struct blk_mq_tags *tags)
1954{
1955        kfree(tags->rqs);
1956        tags->rqs = NULL;
1957        kfree(tags->static_rqs);
1958        tags->static_rqs = NULL;
1959
1960        blk_mq_free_tags(tags);
1961}
1962
1963struct blk_mq_tags *blk_mq_alloc_rq_map(struct blk_mq_tag_set *set,
1964                                        unsigned int hctx_idx,
1965                                        unsigned int nr_tags,
1966                                        unsigned int reserved_tags)
1967{
1968        struct blk_mq_tags *tags;
1969        int node;
1970
1971        node = blk_mq_hw_queue_to_node(set->mq_map, hctx_idx);
1972        if (node == NUMA_NO_NODE)
1973                node = set->numa_node;
1974
1975        tags = blk_mq_init_tags(nr_tags, reserved_tags, node,
1976                                BLK_MQ_FLAG_TO_ALLOC_POLICY(set->flags));
1977        if (!tags)
1978                return NULL;
1979
1980        tags->rqs = kcalloc_node(nr_tags, sizeof(struct request *),
1981                                 GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
1982                                 node);
1983        if (!tags->rqs) {
1984                blk_mq_free_tags(tags);
1985                return NULL;
1986        }
1987
1988        tags->static_rqs = kcalloc_node(nr_tags, sizeof(struct request *),
1989                                        GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
1990                                        node);
1991        if (!tags->static_rqs) {
1992                kfree(tags->rqs);
1993                blk_mq_free_tags(tags);
1994                return NULL;
1995        }
1996
1997        return tags;
1998}
1999
2000static size_t order_to_size(unsigned int order)
2001{
2002        return (size_t)PAGE_SIZE << order;
2003}
2004
2005static int blk_mq_init_request(struct blk_mq_tag_set *set, struct request *rq,
2006                               unsigned int hctx_idx, int node)
2007{
2008        int ret;
2009
2010        if (set->ops->init_request) {
2011                ret = set->ops->init_request(set, rq, hctx_idx, node);
2012                if (ret)
2013                        return ret;
2014        }
2015
2016        WRITE_ONCE(rq->state, MQ_RQ_IDLE);
2017        return 0;
2018}
2019
2020int blk_mq_alloc_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
2021                     unsigned int hctx_idx, unsigned int depth)
2022{
2023        unsigned int i, j, entries_per_page, max_order = 4;
2024        size_t rq_size, left;
2025        int node;
2026
2027        node = blk_mq_hw_queue_to_node(set->mq_map, hctx_idx);
2028        if (node == NUMA_NO_NODE)
2029                node = set->numa_node;
2030
2031        INIT_LIST_HEAD(&tags->page_list);
2032
2033        /*
2034         * rq_size is the size of the request plus driver payload, rounded
2035         * to the cacheline size
2036         */
2037        rq_size = round_up(sizeof(struct request) + set->cmd_size,
2038                                cache_line_size());
2039        left = rq_size * depth;
2040
2041        for (i = 0; i < depth; ) {
2042                int this_order = max_order;
2043                struct page *page;
2044                int to_do;
2045                void *p;
2046
2047                while (this_order && left < order_to_size(this_order - 1))
2048                        this_order--;
2049
2050                do {
2051                        page = alloc_pages_node(node,
2052                                GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY | __GFP_ZERO,
2053                                this_order);
2054                        if (page)
2055                                break;
2056                        if (!this_order--)
2057                                break;
2058                        if (order_to_size(this_order) < rq_size)
2059                                break;
2060                } while (1);
2061
2062                if (!page)
2063                        goto fail;
2064
2065                page->private = this_order;
2066                list_add_tail(&page->lru, &tags->page_list);
2067
2068                p = page_address(page);
2069                /*
2070                 * Allow kmemleak to scan these pages as they contain pointers
2071                 * to additional allocations like via ops->init_request().
2072                 */
2073                kmemleak_alloc(p, order_to_size(this_order), 1, GFP_NOIO);
2074                entries_per_page = order_to_size(this_order) / rq_size;
2075                to_do = min(entries_per_page, depth - i);
2076                left -= to_do * rq_size;
2077                for (j = 0; j < to_do; j++) {
2078                        struct request *rq = p;
2079
2080                        tags->static_rqs[i] = rq;
2081                        if (blk_mq_init_request(set, rq, hctx_idx, node)) {
2082                                tags->static_rqs[i] = NULL;
2083                                goto fail;
2084                        }
2085
2086                        p += rq_size;
2087                        i++;
2088                }
2089        }
2090        return 0;
2091
2092fail:
2093        blk_mq_free_rqs(set, tags, hctx_idx);
2094        return -ENOMEM;
2095}
2096
2097/*
2098 * 'cpu' is going away. splice any existing rq_list entries from this
2099 * software queue to the hw queue dispatch list, and ensure that it
2100 * gets run.
2101 */
2102static int blk_mq_hctx_notify_dead(unsigned int cpu, struct hlist_node *node)
2103{
2104        struct blk_mq_hw_ctx *hctx;
2105        struct blk_mq_ctx *ctx;
2106        LIST_HEAD(tmp);
2107
2108        hctx = hlist_entry_safe(node, struct blk_mq_hw_ctx, cpuhp_dead);
2109        ctx = __blk_mq_get_ctx(hctx->queue, cpu);
2110
2111        spin_lock(&ctx->lock);
2112        if (!list_empty(&ctx->rq_list)) {
2113                list_splice_init(&ctx->rq_list, &tmp);
2114                blk_mq_hctx_clear_pending(hctx, ctx);
2115        }
2116        spin_unlock(&ctx->lock);
2117
2118        if (list_empty(&tmp))
2119                return 0;
2120
2121        spin_lock(&hctx->lock);
2122        list_splice_tail_init(&tmp, &hctx->dispatch);
2123        spin_unlock(&hctx->lock);
2124
2125        blk_mq_run_hw_queue(hctx, true);
2126        return 0;
2127}
2128
2129static void blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx)
2130{
2131        cpuhp_state_remove_instance_nocalls(CPUHP_BLK_MQ_DEAD,
2132                                            &hctx->cpuhp_dead);
2133}
2134
2135/* hctx->ctxs will be freed in queue's release handler */
2136static void blk_mq_exit_hctx(struct request_queue *q,
2137                struct blk_mq_tag_set *set,
2138                struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx)
2139{
2140        blk_mq_debugfs_unregister_hctx(hctx);
2141
2142        if (blk_mq_hw_queue_mapped(hctx))
2143                blk_mq_tag_idle(hctx);
2144
2145        if (set->ops->exit_request)
2146                set->ops->exit_request(set, hctx->fq->flush_rq, hctx_idx);
2147
2148        if (set->ops->exit_hctx)
2149                set->ops->exit_hctx(hctx, hctx_idx);
2150
2151        if (hctx->flags & BLK_MQ_F_BLOCKING)
2152                cleanup_srcu_struct(hctx->srcu);
2153
2154        blk_mq_remove_cpuhp(hctx);
2155        blk_free_flush_queue(hctx->fq);
2156        sbitmap_free(&hctx->ctx_map);
2157}
2158
2159static void blk_mq_exit_hw_queues(struct request_queue *q,
2160                struct blk_mq_tag_set *set, int nr_queue)
2161{
2162        struct blk_mq_hw_ctx *hctx;
2163        unsigned int i;
2164
2165        queue_for_each_hw_ctx(q, hctx, i) {
2166                if (i == nr_queue)
2167                        break;
2168                blk_mq_exit_hctx(q, set, hctx, i);
2169        }
2170}
2171
2172static int blk_mq_init_hctx(struct request_queue *q,
2173                struct blk_mq_tag_set *set,
2174                struct blk_mq_hw_ctx *hctx, unsigned hctx_idx)
2175{
2176        int node;
2177
2178        node = hctx->numa_node;
2179        if (node == NUMA_NO_NODE)
2180                node = hctx->numa_node = set->numa_node;
2181
2182        INIT_DELAYED_WORK(&hctx->run_work, blk_mq_run_work_fn);
2183        spin_lock_init(&hctx->lock);
2184        INIT_LIST_HEAD(&hctx->dispatch);
2185        hctx->queue = q;
2186        hctx->flags = set->flags & ~BLK_MQ_F_TAG_SHARED;
2187
2188        cpuhp_state_add_instance_nocalls(CPUHP_BLK_MQ_DEAD, &hctx->cpuhp_dead);
2189
2190        hctx->tags = set->tags[hctx_idx];
2191
2192        /*
2193         * Allocate space for all possible cpus to avoid allocation at
2194         * runtime
2195         */
2196        hctx->ctxs = kmalloc_array_node(nr_cpu_ids, sizeof(void *),
2197                                        GFP_KERNEL, node);
2198        if (!hctx->ctxs)
2199                goto unregister_cpu_notifier;
2200
2201        if (sbitmap_init_node(&hctx->ctx_map, nr_cpu_ids, ilog2(8), GFP_KERNEL,
2202                              node))
2203                goto free_ctxs;
2204
2205        hctx->nr_ctx = 0;
2206
2207        spin_lock_init(&hctx->dispatch_wait_lock);
2208        init_waitqueue_func_entry(&hctx->dispatch_wait, blk_mq_dispatch_wake);
2209        INIT_LIST_HEAD(&hctx->dispatch_wait.entry);
2210
2211        if (set->ops->init_hctx &&
2212            set->ops->init_hctx(hctx, set->driver_data, hctx_idx))
2213                goto free_bitmap;
2214
2215        hctx->fq = blk_alloc_flush_queue(q, hctx->numa_node, set->cmd_size);
2216        if (!hctx->fq)
2217                goto exit_hctx;
2218
2219        if (blk_mq_init_request(set, hctx->fq->flush_rq, hctx_idx, node))
2220                goto free_fq;
2221
2222        if (hctx->flags & BLK_MQ_F_BLOCKING)
2223                init_srcu_struct(hctx->srcu);
2224
2225        blk_mq_debugfs_register_hctx(q, hctx);
2226
2227        return 0;
2228
2229 free_fq:
2230        kfree(hctx->fq);
2231 exit_hctx:
2232        if (set->ops->exit_hctx)
2233                set->ops->exit_hctx(hctx, hctx_idx);
2234 free_bitmap:
2235        sbitmap_free(&hctx->ctx_map);
2236 free_ctxs:
2237        kfree(hctx->ctxs);
2238 unregister_cpu_notifier:
2239        blk_mq_remove_cpuhp(hctx);
2240        return -1;
2241}
2242
2243static void blk_mq_init_cpu_queues(struct request_queue *q,
2244                                   unsigned int nr_hw_queues)
2245{
2246        unsigned int i;
2247
2248        for_each_possible_cpu(i) {
2249                struct blk_mq_ctx *__ctx = per_cpu_ptr(q->queue_ctx, i);
2250                struct blk_mq_hw_ctx *hctx;
2251
2252                __ctx->cpu = i;
2253                spin_lock_init(&__ctx->lock);
2254                INIT_LIST_HEAD(&__ctx->rq_list);
2255                __ctx->queue = q;
2256
2257                /*
2258                 * Set local node, IFF we have more than one hw queue. If
2259                 * not, we remain on the home node of the device
2260                 */
2261                hctx = blk_mq_map_queue(q, i);
2262                if (nr_hw_queues > 1 && hctx->numa_node == NUMA_NO_NODE)
2263                        hctx->numa_node = local_memory_node(cpu_to_node(i));
2264        }
2265}
2266
2267static bool __blk_mq_alloc_rq_map(struct blk_mq_tag_set *set, int hctx_idx)
2268{
2269        int ret = 0;
2270
2271        set->tags[hctx_idx] = blk_mq_alloc_rq_map(set, hctx_idx,
2272                                        set->queue_depth, set->reserved_tags);
2273        if (!set->tags[hctx_idx])
2274                return false;
2275
2276        ret = blk_mq_alloc_rqs(set, set->tags[hctx_idx], hctx_idx,
2277                                set->queue_depth);
2278        if (!ret)
2279                return true;
2280
2281        blk_mq_free_rq_map(set->tags[hctx_idx]);
2282        set->tags[hctx_idx] = NULL;
2283        return false;
2284}
2285
2286static void blk_mq_free_map_and_requests(struct blk_mq_tag_set *set,
2287                                         unsigned int hctx_idx)
2288{
2289        if (set->tags[hctx_idx]) {
2290                blk_mq_free_rqs(set, set->tags[hctx_idx], hctx_idx);
2291                blk_mq_free_rq_map(set->tags[hctx_idx]);
2292                set->tags[hctx_idx] = NULL;
2293        }
2294}
2295
2296static void blk_mq_map_swqueue(struct request_queue *q)
2297{
2298        unsigned int i, hctx_idx;
2299        struct blk_mq_hw_ctx *hctx;
2300        struct blk_mq_ctx *ctx;
2301        struct blk_mq_tag_set *set = q->tag_set;
2302
2303        /*
2304         * Avoid others reading imcomplete hctx->cpumask through sysfs
2305         */
2306        mutex_lock(&q->sysfs_lock);
2307
2308        queue_for_each_hw_ctx(q, hctx, i) {
2309                cpumask_clear(hctx->cpumask);
2310                hctx->nr_ctx = 0;
2311                hctx->dispatch_from = NULL;
2312        }
2313
2314        /*
2315         * Map software to hardware queues.
2316         *
2317         * If the cpu isn't present, the cpu is mapped to first hctx.
2318         */
2319        for_each_possible_cpu(i) {
2320                hctx_idx = q->mq_map[i];
2321                /* unmapped hw queue can be remapped after CPU topo changed */
2322                if (!set->tags[hctx_idx] &&
2323                    !__blk_mq_alloc_rq_map(set, hctx_idx)) {
2324                        /*
2325                         * If tags initialization fail for some hctx,
2326                         * that hctx won't be brought online.  In this
2327                         * case, remap the current ctx to hctx[0] which
2328                         * is guaranteed to always have tags allocated
2329                         */
2330                        q->mq_map[i] = 0;
2331                }
2332
2333                ctx = per_cpu_ptr(q->queue_ctx, i);
2334                hctx = blk_mq_map_queue(q, i);
2335
2336                cpumask_set_cpu(i, hctx->cpumask);
2337                ctx->index_hw = hctx->nr_ctx;
2338                hctx->ctxs[hctx->nr_ctx++] = ctx;
2339        }
2340
2341        mutex_unlock(&q->sysfs_lock);
2342
2343        queue_for_each_hw_ctx(q, hctx, i) {
2344                /*
2345                 * If no software queues are mapped to this hardware queue,
2346                 * disable it and free the request entries.
2347                 */
2348                if (!hctx->nr_ctx) {
2349                        /* Never unmap queue 0.  We need it as a
2350                         * fallback in case of a new remap fails
2351                         * allocation
2352                         */
2353                        if (i && set->tags[i])
2354                                blk_mq_free_map_and_requests(set, i);
2355
2356                        hctx->tags = NULL;
2357                        continue;
2358                }
2359
2360                hctx->tags = set->tags[i];
2361                WARN_ON(!hctx->tags);
2362
2363                /*
2364                 * Set the map size to the number of mapped software queues.
2365                 * This is more accurate and more efficient than looping
2366                 * over all possibly mapped software queues.
2367                 */
2368                sbitmap_resize(&hctx->ctx_map, hctx->nr_ctx);
2369
2370                /*
2371                 * Initialize batch roundrobin counts
2372                 */
2373                hctx->next_cpu = blk_mq_first_mapped_cpu(hctx);
2374                hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH;
2375        }
2376}
2377
2378/*
2379 * Caller needs to ensure that we're either frozen/quiesced, or that
2380 * the queue isn't live yet.
2381 */
2382static void queue_set_hctx_shared(struct request_queue *q, bool shared)
2383{
2384        struct blk_mq_hw_ctx *hctx;
2385        int i;
2386
2387        queue_for_each_hw_ctx(q, hctx, i) {
2388                if (shared)
2389                        hctx->flags |= BLK_MQ_F_TAG_SHARED;
2390                else
2391                        hctx->flags &= ~BLK_MQ_F_TAG_SHARED;
2392        }
2393}
2394
2395static void blk_mq_update_tag_set_depth(struct blk_mq_tag_set *set,
2396                                        bool shared)
2397{
2398        struct request_queue *q;
2399
2400        lockdep_assert_held(&set->tag_list_lock);
2401
2402        list_for_each_entry(q, &set->tag_list, tag_set_list) {
2403                blk_mq_freeze_queue(q);
2404                queue_set_hctx_shared(q, shared);
2405                blk_mq_unfreeze_queue(q);
2406        }
2407}
2408
2409static void blk_mq_del_queue_tag_set(struct request_queue *q)
2410{
2411        struct blk_mq_tag_set *set = q->tag_set;
2412
2413        mutex_lock(&set->tag_list_lock);
2414        list_del_rcu(&q->tag_set_list);
2415        if (list_is_singular(&set->tag_list)) {
2416                /* just transitioned to unshared */
2417                set->flags &= ~BLK_MQ_F_TAG_SHARED;
2418                /* update existing queue */
2419                blk_mq_update_tag_set_depth(set, false);
2420        }
2421        mutex_unlock(&set->tag_list_lock);
2422        INIT_LIST_HEAD(&q->tag_set_list);
2423}
2424
2425static void blk_mq_add_queue_tag_set(struct blk_mq_tag_set *set,
2426                                     struct request_queue *q)
2427{
2428        q->tag_set = set;
2429
2430        mutex_lock(&set->tag_list_lock);
2431
2432        /*
2433         * Check to see if we're transitioning to shared (from 1 to 2 queues).
2434         */
2435        if (!list_empty(&set->tag_list) &&
2436            !(set->flags & BLK_MQ_F_TAG_SHARED)) {
2437                set->flags |= BLK_MQ_F_TAG_SHARED;
2438                /* update existing queue */
2439                blk_mq_update_tag_set_depth(set, true);
2440        }
2441        if (set->flags & BLK_MQ_F_TAG_SHARED)
2442                queue_set_hctx_shared(q, true);
2443        list_add_tail_rcu(&q->tag_set_list, &set->tag_list);
2444
2445        mutex_unlock(&set->tag_list_lock);
2446}
2447
2448/*
2449 * It is the actual release handler for mq, but we do it from
2450 * request queue's release handler for avoiding use-after-free
2451 * and headache because q->mq_kobj shouldn't have been introduced,
2452 * but we can't group ctx/kctx kobj without it.
2453 */
2454void blk_mq_release(struct request_queue *q)
2455{
2456        struct blk_mq_hw_ctx *hctx;
2457        unsigned int i;
2458
2459        /* hctx kobj stays in hctx */
2460        queue_for_each_hw_ctx(q, hctx, i) {
2461                if (!hctx)
2462                        continue;
2463                kobject_put(&hctx->kobj);
2464        }
2465
2466        q->mq_map = NULL;
2467
2468        kfree(q->queue_hw_ctx);
2469
2470        /*
2471         * release .mq_kobj and sw queue's kobject now because
2472         * both share lifetime with request queue.
2473         */
2474        blk_mq_sysfs_deinit(q);
2475
2476        free_percpu(q->queue_ctx);
2477}
2478
2479struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
2480{
2481        struct request_queue *uninit_q, *q;
2482
2483        uninit_q = blk_alloc_queue_node(GFP_KERNEL, set->numa_node, NULL);
2484        if (!uninit_q)
2485                return ERR_PTR(-ENOMEM);
2486
2487        q = blk_mq_init_allocated_queue(set, uninit_q);
2488        if (IS_ERR(q))
2489                blk_cleanup_queue(uninit_q);
2490
2491        return q;
2492}
2493EXPORT_SYMBOL(blk_mq_init_queue);
2494
2495static int blk_mq_hw_ctx_size(struct blk_mq_tag_set *tag_set)
2496{
2497        int hw_ctx_size = sizeof(struct blk_mq_hw_ctx);
2498
2499        BUILD_BUG_ON(ALIGN(offsetof(struct blk_mq_hw_ctx, srcu),
2500                           __alignof__(struct blk_mq_hw_ctx)) !=
2501                     sizeof(struct blk_mq_hw_ctx));
2502
2503        if (tag_set->flags & BLK_MQ_F_BLOCKING)
2504                hw_ctx_size += sizeof(struct srcu_struct);
2505
2506        return hw_ctx_size;
2507}
2508
2509static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
2510                                                struct request_queue *q)
2511{
2512        int i, j;
2513        struct blk_mq_hw_ctx **hctxs = q->queue_hw_ctx;
2514
2515        blk_mq_sysfs_unregister(q);
2516
2517        /* protect against switching io scheduler  */
2518        mutex_lock(&q->sysfs_lock);
2519        for (i = 0; i < set->nr_hw_queues; i++) {
2520                int node;
2521
2522                if (hctxs[i])
2523                        continue;
2524
2525                node = blk_mq_hw_queue_to_node(q->mq_map, i);
2526                hctxs[i] = kzalloc_node(blk_mq_hw_ctx_size(set),
2527                                        GFP_KERNEL, node);
2528                if (!hctxs[i])
2529                        break;
2530
2531                if (!zalloc_cpumask_var_node(&hctxs[i]->cpumask, GFP_KERNEL,
2532                                                node)) {
2533                        kfree(hctxs[i]);
2534                        hctxs[i] = NULL;
2535                        break;
2536                }
2537
2538                atomic_set(&hctxs[i]->nr_active, 0);
2539                hctxs[i]->numa_node = node;
2540                hctxs[i]->queue_num = i;
2541
2542                if (blk_mq_init_hctx(q, set, hctxs[i], i)) {
2543                        free_cpumask_var(hctxs[i]->cpumask);
2544                        kfree(hctxs[i]);
2545                        hctxs[i] = NULL;
2546                        break;
2547                }
2548                blk_mq_hctx_kobj_init(hctxs[i]);
2549        }
2550        for (j = i; j < q->nr_hw_queues; j++) {
2551                struct blk_mq_hw_ctx *hctx = hctxs[j];
2552
2553                if (hctx) {
2554                        if (hctx->tags)
2555                                blk_mq_free_map_and_requests(set, j);
2556                        blk_mq_exit_hctx(q, set, hctx, j);
2557                        kobject_put(&hctx->kobj);
2558                        hctxs[j] = NULL;
2559
2560                }
2561        }
2562        q->nr_hw_queues = i;
2563        mutex_unlock(&q->sysfs_lock);
2564        blk_mq_sysfs_register(q);
2565}
2566
2567struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
2568                                                  struct request_queue *q)
2569{
2570        /* mark the queue as mq asap */
2571        q->mq_ops = set->ops;
2572
2573        q->poll_cb = blk_stat_alloc_callback(blk_mq_poll_stats_fn,
2574                                             blk_mq_poll_stats_bkt,
2575                                             BLK_MQ_POLL_STATS_BKTS, q);
2576        if (!q->poll_cb)
2577                goto err_exit;
2578
2579        q->queue_ctx = alloc_percpu(struct blk_mq_ctx);
2580        if (!q->queue_ctx)
2581                goto err_exit;
2582
2583        /* init q->mq_kobj and sw queues' kobjects */
2584        blk_mq_sysfs_init(q);
2585
2586        q->queue_hw_ctx = kcalloc_node(nr_cpu_ids, sizeof(*(q->queue_hw_ctx)),
2587                                                GFP_KERNEL, set->numa_node);
2588        if (!q->queue_hw_ctx)
2589                goto err_percpu;
2590
2591        q->mq_map = set->mq_map;
2592
2593        blk_mq_realloc_hw_ctxs(set, q);
2594        if (!q->nr_hw_queues)
2595                goto err_hctxs;
2596
2597        INIT_WORK(&q->timeout_work, blk_mq_timeout_work);
2598        blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ);
2599
2600        q->nr_queues = nr_cpu_ids;
2601
2602        q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT;
2603
2604        if (!(set->flags & BLK_MQ_F_SG_MERGE))
2605                queue_flag_set_unlocked(QUEUE_FLAG_NO_SG_MERGE, q);
2606
2607        q->sg_reserved_size = INT_MAX;
2608
2609        INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work);
2610        INIT_LIST_HEAD(&q->requeue_list);
2611        spin_lock_init(&q->requeue_lock);
2612
2613        blk_queue_make_request(q, blk_mq_make_request);
2614        if (q->mq_ops->poll)
2615                q->poll_fn = blk_mq_poll;
2616
2617        /*
2618         * Do this after blk_queue_make_request() overrides it...
2619         */
2620        q->nr_requests = set->queue_depth;
2621
2622        /*
2623         * Default to classic polling
2624         */
2625        q->poll_nsec = -1;
2626
2627        if (set->ops->complete)
2628                blk_queue_softirq_done(q, set->ops->complete);
2629
2630        blk_mq_init_cpu_queues(q, set->nr_hw_queues);
2631        blk_mq_add_queue_tag_set(set, q);
2632        blk_mq_map_swqueue(q);
2633
2634        if (!(set->flags & BLK_MQ_F_NO_SCHED)) {
2635                int ret;
2636
2637                ret = elevator_init_mq(q);
2638                if (ret)
2639                        return ERR_PTR(ret);
2640        }
2641
2642        return q;
2643
2644err_hctxs:
2645        kfree(q->queue_hw_ctx);
2646err_percpu:
2647        free_percpu(q->queue_ctx);
2648err_exit:
2649        q->mq_ops = NULL;
2650        return ERR_PTR(-ENOMEM);
2651}
2652EXPORT_SYMBOL(blk_mq_init_allocated_queue);
2653
2654void blk_mq_free_queue(struct request_queue *q)
2655{
2656        struct blk_mq_tag_set   *set = q->tag_set;
2657
2658        blk_mq_del_queue_tag_set(q);
2659        blk_mq_exit_hw_queues(q, set, set->nr_hw_queues);
2660}
2661
2662/* Basically redo blk_mq_init_queue with queue frozen */
2663static void blk_mq_queue_reinit(struct request_queue *q)
2664{
2665        WARN_ON_ONCE(!atomic_read(&q->mq_freeze_depth));
2666
2667        blk_mq_debugfs_unregister_hctxs(q);
2668        blk_mq_sysfs_unregister(q);
2669
2670        /*
2671         * redo blk_mq_init_cpu_queues and blk_mq_init_hw_queues. FIXME: maybe
2672         * we should change hctx numa_node according to the new topology (this
2673         * involves freeing and re-allocating memory, worth doing?)
2674         */
2675        blk_mq_map_swqueue(q);
2676
2677        blk_mq_sysfs_register(q);
2678        blk_mq_debugfs_register_hctxs(q);
2679}
2680
2681static int __blk_mq_alloc_rq_maps(struct blk_mq_tag_set *set)
2682{
2683        int i;
2684
2685        for (i = 0; i < set->nr_hw_queues; i++)
2686                if (!__blk_mq_alloc_rq_map(set, i))
2687                        goto out_unwind;
2688
2689        return 0;
2690
2691out_unwind:
2692        while (--i >= 0)
2693                blk_mq_free_rq_map(set->tags[i]);
2694
2695        return -ENOMEM;
2696}
2697
2698/*
2699 * Allocate the request maps associated with this tag_set. Note that this
2700 * may reduce the depth asked for, if memory is tight. set->queue_depth
2701 * will be updated to reflect the allocated depth.
2702 */
2703static int blk_mq_alloc_rq_maps(struct blk_mq_tag_set *set)
2704{
2705        unsigned int depth;
2706        int err;
2707
2708        depth = set->queue_depth;
2709        do {
2710                err = __blk_mq_alloc_rq_maps(set);
2711                if (!err)
2712                        break;
2713
2714                set->queue_depth >>= 1;
2715                if (set->queue_depth < set->reserved_tags + BLK_MQ_TAG_MIN) {
2716                        err = -ENOMEM;
2717                        break;
2718                }
2719        } while (set->queue_depth);
2720
2721        if (!set->queue_depth || err) {
2722                pr_err("blk-mq: failed to allocate request map\n");
2723                return -ENOMEM;
2724        }
2725
2726        if (depth != set->queue_depth)
2727                pr_info("blk-mq: reduced tag depth (%u -> %u)\n",
2728                                                depth, set->queue_depth);
2729
2730        return 0;
2731}
2732
2733static int blk_mq_update_queue_map(struct blk_mq_tag_set *set)
2734{
2735        if (set->ops->map_queues) {
2736                /*
2737                 * transport .map_queues is usually done in the following
2738                 * way:
2739                 *
2740                 * for (queue = 0; queue < set->nr_hw_queues; queue++) {
2741                 *      mask = get_cpu_mask(queue)
2742                 *      for_each_cpu(cpu, mask)
2743                 *              set->mq_map[cpu] = queue;
2744                 * }
2745                 *
2746                 * When we need to remap, the table has to be cleared for
2747                 * killing stale mapping since one CPU may not be mapped
2748                 * to any hw queue.
2749                 */
2750                blk_mq_clear_mq_map(set);
2751
2752                return set->ops->map_queues(set);
2753        } else
2754                return blk_mq_map_queues(set);
2755}
2756
2757/*
2758 * Alloc a tag set to be associated with one or more request queues.
2759 * May fail with EINVAL for various error conditions. May adjust the
2760 * requested depth down, if it's too large. In that case, the set
2761 * value will be stored in set->queue_depth.
2762 */
2763int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set)
2764{
2765        int ret;
2766
2767        BUILD_BUG_ON(BLK_MQ_MAX_DEPTH > 1 << BLK_MQ_UNIQUE_TAG_BITS);
2768
2769        if (!set->nr_hw_queues)
2770                return -EINVAL;
2771        if (!set->queue_depth)
2772                return -EINVAL;
2773        if (set->queue_depth < set->reserved_tags + BLK_MQ_TAG_MIN)
2774                return -EINVAL;
2775
2776        if (!set->ops->queue_rq)
2777                return -EINVAL;
2778
2779        if (!set->ops->get_budget ^ !set->ops->put_budget)
2780                return -EINVAL;
2781
2782        if (set->queue_depth > BLK_MQ_MAX_DEPTH) {
2783                pr_info("blk-mq: reduced tag depth to %u\n",
2784                        BLK_MQ_MAX_DEPTH);
2785                set->queue_depth = BLK_MQ_MAX_DEPTH;
2786        }
2787
2788        /*
2789         * If a crashdump is active, then we are potentially in a very
2790         * memory constrained environment. Limit us to 1 queue and
2791         * 64 tags to prevent using too much memory.
2792         */
2793        if (is_kdump_kernel()) {
2794                set->nr_hw_queues = 1;
2795                set->queue_depth = min(64U, set->queue_depth);
2796        }
2797        /*
2798         * There is no use for more h/w queues than cpus.
2799         */
2800        if (set->nr_hw_queues > nr_cpu_ids)
2801                set->nr_hw_queues = nr_cpu_ids;
2802
2803        set->tags = kcalloc_node(nr_cpu_ids, sizeof(struct blk_mq_tags *),
2804                                 GFP_KERNEL, set->numa_node);
2805        if (!set->tags)
2806                return -ENOMEM;
2807
2808        ret = -ENOMEM;
2809        set->mq_map = kcalloc_node(nr_cpu_ids, sizeof(*set->mq_map),
2810                                   GFP_KERNEL, set->numa_node);
2811        if (!set->mq_map)
2812                goto out_free_tags;
2813
2814        ret = blk_mq_update_queue_map(set);
2815        if (ret)
2816                goto out_free_mq_map;
2817
2818        ret = blk_mq_alloc_rq_maps(set);
2819        if (ret)
2820                goto out_free_mq_map;
2821
2822        mutex_init(&set->tag_list_lock);
2823        INIT_LIST_HEAD(&set->tag_list);
2824
2825        return 0;
2826
2827out_free_mq_map:
2828        kfree(set->mq_map);
2829        set->mq_map = NULL;
2830out_free_tags:
2831        kfree(set->tags);
2832        set->tags = NULL;
2833        return ret;
2834}
2835EXPORT_SYMBOL(blk_mq_alloc_tag_set);
2836
2837void blk_mq_free_tag_set(struct blk_mq_tag_set *set)
2838{
2839        int i;
2840
2841        for (i = 0; i < nr_cpu_ids; i++)
2842                blk_mq_free_map_and_requests(set, i);
2843
2844        kfree(set->mq_map);
2845        set->mq_map = NULL;
2846
2847        kfree(set->tags);
2848        set->tags = NULL;
2849}
2850EXPORT_SYMBOL(blk_mq_free_tag_set);
2851
2852int blk_mq_update_nr_requests(struct request_queue *q, unsigned int nr)
2853{
2854        struct blk_mq_tag_set *set = q->tag_set;
2855        struct blk_mq_hw_ctx *hctx;
2856        int i, ret;
2857
2858        if (!set)
2859                return -EINVAL;
2860
2861        blk_mq_freeze_queue(q);
2862        blk_mq_quiesce_queue(q);
2863
2864        ret = 0;
2865        queue_for_each_hw_ctx(q, hctx, i) {
2866                if (!hctx->tags)
2867                        continue;
2868                /*
2869                 * If we're using an MQ scheduler, just update the scheduler
2870                 * queue depth. This is similar to what the old code would do.
2871                 */
2872                if (!hctx->sched_tags) {
2873                        ret = blk_mq_tag_update_depth(hctx, &hctx->tags, nr,
2874                                                        false);
2875                } else {
2876                        ret = blk_mq_tag_update_depth(hctx, &hctx->sched_tags,
2877                                                        nr, true);
2878                }
2879                if (ret)
2880                        break;
2881        }
2882
2883        if (!ret)
2884                q->nr_requests = nr;
2885
2886        blk_mq_unquiesce_queue(q);
2887        blk_mq_unfreeze_queue(q);
2888
2889        return ret;
2890}
2891
2892/*
2893 * request_queue and elevator_type pair.
2894 * It is just used by __blk_mq_update_nr_hw_queues to cache
2895 * the elevator_type associated with a request_queue.
2896 */
2897struct blk_mq_qe_pair {
2898        struct list_head node;
2899        struct request_queue *q;
2900        struct elevator_type *type;
2901};
2902
2903/*
2904 * Cache the elevator_type in qe pair list and switch the
2905 * io scheduler to 'none'
2906 */
2907static bool blk_mq_elv_switch_none(struct list_head *head,
2908                struct request_queue *q)
2909{
2910        struct blk_mq_qe_pair *qe;
2911
2912        if (!q->elevator)
2913                return true;
2914
2915        qe = kmalloc(sizeof(*qe), GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY);
2916        if (!qe)
2917                return false;
2918
2919        INIT_LIST_HEAD(&qe->node);
2920        qe->q = q;
2921        qe->type = q->elevator->type;
2922        list_add(&qe->node, head);
2923
2924        mutex_lock(&q->sysfs_lock);
2925        /*
2926         * After elevator_switch_mq, the previous elevator_queue will be
2927         * released by elevator_release. The reference of the io scheduler
2928         * module get by elevator_get will also be put. So we need to get
2929         * a reference of the io scheduler module here to prevent it to be
2930         * removed.
2931         */
2932        __module_get(qe->type->elevator_owner);
2933        elevator_switch_mq(q, NULL);
2934        mutex_unlock(&q->sysfs_lock);
2935
2936        return true;
2937}
2938
2939static void blk_mq_elv_switch_back(struct list_head *head,
2940                struct request_queue *q)
2941{
2942        struct blk_mq_qe_pair *qe;
2943        struct elevator_type *t = NULL;
2944
2945        list_for_each_entry(qe, head, node)
2946                if (qe->q == q) {
2947                        t = qe->type;
2948                        break;
2949                }
2950
2951        if (!t)
2952                return;
2953
2954        list_del(&qe->node);
2955        kfree(qe);
2956
2957        mutex_lock(&q->sysfs_lock);
2958        elevator_switch_mq(q, t);
2959        mutex_unlock(&q->sysfs_lock);
2960}
2961
2962static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
2963                                                        int nr_hw_queues)
2964{
2965        struct request_queue *q;
2966        LIST_HEAD(head);
2967
2968        lockdep_assert_held(&set->tag_list_lock);
2969
2970        if (nr_hw_queues > nr_cpu_ids)
2971                nr_hw_queues = nr_cpu_ids;
2972        if (nr_hw_queues < 1 || nr_hw_queues == set->nr_hw_queues)
2973                return;
2974
2975        list_for_each_entry(q, &set->tag_list, tag_set_list)
2976                blk_mq_freeze_queue(q);
2977        /*
2978         * Sync with blk_mq_queue_tag_busy_iter.
2979         */
2980        synchronize_rcu();
2981        /*
2982         * Switch IO scheduler to 'none', cleaning up the data associated
2983         * with the previous scheduler. We will switch back once we are done
2984         * updating the new sw to hw queue mappings.
2985         */
2986        list_for_each_entry(q, &set->tag_list, tag_set_list)
2987                if (!blk_mq_elv_switch_none(&head, q))
2988                        goto switch_back;
2989
2990        set->nr_hw_queues = nr_hw_queues;
2991        blk_mq_update_queue_map(set);
2992        list_for_each_entry(q, &set->tag_list, tag_set_list) {
2993                blk_mq_realloc_hw_ctxs(set, q);
2994                blk_mq_queue_reinit(q);
2995        }
2996
2997switch_back:
2998        list_for_each_entry(q, &set->tag_list, tag_set_list)
2999                blk_mq_elv_switch_back(&head, q);
3000
3001        list_for_each_entry(q, &set->tag_list, tag_set_list)
3002                blk_mq_unfreeze_queue(q);
3003}
3004
3005void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues)
3006{
3007        mutex_lock(&set->tag_list_lock);
3008        __blk_mq_update_nr_hw_queues(set, nr_hw_queues);
3009        mutex_unlock(&set->tag_list_lock);
3010}
3011EXPORT_SYMBOL_GPL(blk_mq_update_nr_hw_queues);
3012
3013/* Enable polling stats and return whether they were already enabled. */
3014static bool blk_poll_stats_enable(struct request_queue *q)
3015{
3016        if (test_bit(QUEUE_FLAG_POLL_STATS, &q->queue_flags) ||
3017            blk_queue_flag_test_and_set(QUEUE_FLAG_POLL_STATS, q))
3018                return true;
3019        blk_stat_add_callback(q, q->poll_cb);
3020        return false;
3021}
3022
3023static void blk_mq_poll_stats_start(struct request_queue *q)
3024{
3025        /*
3026         * We don't arm the callback if polling stats are not enabled or the
3027         * callback is already active.
3028         */
3029        if (!test_bit(QUEUE_FLAG_POLL_STATS, &q->queue_flags) ||
3030            blk_stat_is_active(q->poll_cb))
3031                return;
3032
3033        blk_stat_activate_msecs(q->poll_cb, 100);
3034}
3035
3036static void blk_mq_poll_stats_fn(struct blk_stat_callback *cb)
3037{
3038        struct request_queue *q = cb->data;
3039        int bucket;
3040
3041        for (bucket = 0; bucket < BLK_MQ_POLL_STATS_BKTS; bucket++) {
3042                if (cb->stat[bucket].nr_samples)
3043                        q->poll_stat[bucket] = cb->stat[bucket];
3044        }
3045}
3046
3047static unsigned long blk_mq_poll_nsecs(struct request_queue *q,
3048                                       struct blk_mq_hw_ctx *hctx,
3049                                       struct request *rq)
3050{
3051        unsigned long ret = 0;
3052        int bucket;
3053
3054        /*
3055         * If stats collection isn't on, don't sleep but turn it on for
3056         * future users
3057         */
3058        if (!blk_poll_stats_enable(q))
3059                return 0;
3060
3061        /*
3062         * As an optimistic guess, use half of the mean service time
3063         * for this type of request. We can (and should) make this smarter.
3064         * For instance, if the completion latencies are tight, we can
3065         * get closer than just half the mean. This is especially
3066         * important on devices where the completion latencies are longer
3067         * than ~10 usec. We do use the stats for the relevant IO size
3068         * if available which does lead to better estimates.
3069         */
3070        bucket = blk_mq_poll_stats_bkt(rq);
3071        if (bucket < 0)
3072                return ret;
3073
3074        if (q->poll_stat[bucket].nr_samples)
3075                ret = (q->poll_stat[bucket].mean + 1) / 2;
3076
3077        return ret;
3078}
3079
3080static bool blk_mq_poll_hybrid_sleep(struct request_queue *q,
3081                                     struct blk_mq_hw_ctx *hctx,
3082                                     struct request *rq)
3083{
3084        struct hrtimer_sleeper hs;
3085        enum hrtimer_mode mode;
3086        unsigned int nsecs;
3087        ktime_t kt;
3088
3089        if (rq->rq_flags & RQF_MQ_POLL_SLEPT)
3090                return false;
3091
3092        /*
3093         * poll_nsec can be:
3094         *
3095         * -1:  don't ever hybrid sleep
3096         *  0:  use half of prev avg
3097         * >0:  use this specific value
3098         */
3099        if (q->poll_nsec == -1)
3100                return false;
3101        else if (q->poll_nsec > 0)
3102                nsecs = q->poll_nsec;
3103        else
3104                nsecs = blk_mq_poll_nsecs(q, hctx, rq);
3105
3106        if (!nsecs)
3107                return false;
3108
3109        rq->rq_flags |= RQF_MQ_POLL_SLEPT;
3110
3111        /*
3112         * This will be replaced with the stats tracking code, using
3113         * 'avg_completion_time / 2' as the pre-sleep target.
3114         */
3115        kt = nsecs;
3116
3117        mode = HRTIMER_MODE_REL;
3118        hrtimer_init_on_stack(&hs.timer, CLOCK_MONOTONIC, mode);
3119        hrtimer_set_expires(&hs.timer, kt);
3120
3121        hrtimer_init_sleeper(&hs, current);
3122        do {
3123                if (blk_mq_rq_state(rq) == MQ_RQ_COMPLETE)
3124                        break;
3125                set_current_state(TASK_UNINTERRUPTIBLE);
3126                hrtimer_start_expires(&hs.timer, mode);
3127                if (hs.task)
3128                        io_schedule();
3129                hrtimer_cancel(&hs.timer);
3130                mode = HRTIMER_MODE_ABS;
3131        } while (hs.task && !signal_pending(current));
3132
3133        __set_current_state(TASK_RUNNING);
3134        destroy_hrtimer_on_stack(&hs.timer);
3135        return true;
3136}
3137
3138static bool __blk_mq_poll(struct blk_mq_hw_ctx *hctx, struct request *rq)
3139{
3140        struct request_queue *q = hctx->queue;
3141        long state;
3142
3143        /*
3144         * If we sleep, have the caller restart the poll loop to reset
3145         * the state. Like for the other success return cases, the
3146         * caller is responsible for checking if the IO completed. If
3147         * the IO isn't complete, we'll get called again and will go
3148         * straight to the busy poll loop.
3149         */
3150        if (blk_mq_poll_hybrid_sleep(q, hctx, rq))
3151                return true;
3152
3153        hctx->poll_considered++;
3154
3155        state = current->state;
3156        while (!need_resched()) {
3157                int ret;
3158
3159                hctx->poll_invoked++;
3160
3161                ret = q->mq_ops->poll(hctx, rq->tag);
3162                if (ret > 0) {
3163                        hctx->poll_success++;
3164                        set_current_state(TASK_RUNNING);
3165                        return true;
3166                }
3167
3168                if (signal_pending_state(state, current))
3169                        set_current_state(TASK_RUNNING);
3170
3171                if (current->state == TASK_RUNNING)
3172                        return true;
3173                if (ret < 0)
3174                        break;
3175                cpu_relax();
3176        }
3177
3178        __set_current_state(TASK_RUNNING);
3179        return false;
3180}
3181
3182static bool blk_mq_poll(struct request_queue *q, blk_qc_t cookie)
3183{
3184        struct blk_mq_hw_ctx *hctx;
3185        struct request *rq;
3186
3187        if (!test_bit(QUEUE_FLAG_POLL, &q->queue_flags))
3188                return false;
3189
3190        hctx = q->queue_hw_ctx[blk_qc_t_to_queue_num(cookie)];
3191        if (!blk_qc_t_is_internal(cookie))
3192                rq = blk_mq_tag_to_rq(hctx->tags, blk_qc_t_to_tag(cookie));
3193        else {
3194                rq = blk_mq_tag_to_rq(hctx->sched_tags, blk_qc_t_to_tag(cookie));
3195                /*
3196                 * With scheduling, if the request has completed, we'll
3197                 * get a NULL return here, as we clear the sched tag when
3198                 * that happens. The request still remains valid, like always,
3199                 * so we should be safe with just the NULL check.
3200                 */
3201                if (!rq)
3202                        return false;
3203        }
3204
3205        return __blk_mq_poll(hctx, rq);
3206}
3207
3208static int __init blk_mq_init(void)
3209{
3210        cpuhp_setup_state_multi(CPUHP_BLK_MQ_DEAD, "block/mq:dead", NULL,
3211                                blk_mq_hctx_notify_dead);
3212        return 0;
3213}
3214subsys_initcall(blk_mq_init);
3215