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