]> git.karo-electronics.de Git - karo-tx-linux.git/blob - block/blk-mq.c
89b81254201bc7679ae992898792207c85900b9d
[karo-tx-linux.git] / block / blk-mq.c
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/delay.h>
24 #include <linux/crash_dump.h>
25 #include <linux/prefetch.h>
26
27 #include <trace/events/block.h>
28
29 #include <linux/blk-mq.h>
30 #include "blk.h"
31 #include "blk-mq.h"
32 #include "blk-mq-tag.h"
33 #include "blk-stat.h"
34 #include "blk-wbt.h"
35
36 static DEFINE_MUTEX(all_q_mutex);
37 static LIST_HEAD(all_q_list);
38
39 /*
40  * Check if any of the ctx's have pending work in this hardware queue
41  */
42 static bool blk_mq_hctx_has_pending(struct blk_mq_hw_ctx *hctx)
43 {
44         return sbitmap_any_bit_set(&hctx->ctx_map);
45 }
46
47 /*
48  * Mark this ctx as having pending work in this hardware queue
49  */
50 static void blk_mq_hctx_mark_pending(struct blk_mq_hw_ctx *hctx,
51                                      struct blk_mq_ctx *ctx)
52 {
53         if (!sbitmap_test_bit(&hctx->ctx_map, ctx->index_hw))
54                 sbitmap_set_bit(&hctx->ctx_map, ctx->index_hw);
55 }
56
57 static void blk_mq_hctx_clear_pending(struct blk_mq_hw_ctx *hctx,
58                                       struct blk_mq_ctx *ctx)
59 {
60         sbitmap_clear_bit(&hctx->ctx_map, ctx->index_hw);
61 }
62
63 void blk_mq_freeze_queue_start(struct request_queue *q)
64 {
65         int freeze_depth;
66
67         freeze_depth = atomic_inc_return(&q->mq_freeze_depth);
68         if (freeze_depth == 1) {
69                 percpu_ref_kill(&q->q_usage_counter);
70                 blk_mq_run_hw_queues(q, false);
71         }
72 }
73 EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_start);
74
75 static void blk_mq_freeze_queue_wait(struct request_queue *q)
76 {
77         wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter));
78 }
79
80 /*
81  * Guarantee no request is in use, so we can change any data structure of
82  * the queue afterward.
83  */
84 void blk_freeze_queue(struct request_queue *q)
85 {
86         /*
87          * In the !blk_mq case we are only calling this to kill the
88          * q_usage_counter, otherwise this increases the freeze depth
89          * and waits for it to return to zero.  For this reason there is
90          * no blk_unfreeze_queue(), and blk_freeze_queue() is not
91          * exported to drivers as the only user for unfreeze is blk_mq.
92          */
93         blk_mq_freeze_queue_start(q);
94         blk_mq_freeze_queue_wait(q);
95 }
96
97 void blk_mq_freeze_queue(struct request_queue *q)
98 {
99         /*
100          * ...just an alias to keep freeze and unfreeze actions balanced
101          * in the blk_mq_* namespace
102          */
103         blk_freeze_queue(q);
104 }
105 EXPORT_SYMBOL_GPL(blk_mq_freeze_queue);
106
107 void blk_mq_unfreeze_queue(struct request_queue *q)
108 {
109         int freeze_depth;
110
111         freeze_depth = atomic_dec_return(&q->mq_freeze_depth);
112         WARN_ON_ONCE(freeze_depth < 0);
113         if (!freeze_depth) {
114                 percpu_ref_reinit(&q->q_usage_counter);
115                 wake_up_all(&q->mq_freeze_wq);
116         }
117 }
118 EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue);
119
120 /**
121  * blk_mq_quiesce_queue() - wait until all ongoing queue_rq calls have finished
122  * @q: request queue.
123  *
124  * Note: this function does not prevent that the struct request end_io()
125  * callback function is invoked. Additionally, it is not prevented that
126  * new queue_rq() calls occur unless the queue has been stopped first.
127  */
128 void blk_mq_quiesce_queue(struct request_queue *q)
129 {
130         struct blk_mq_hw_ctx *hctx;
131         unsigned int i;
132         bool rcu = false;
133
134         blk_mq_stop_hw_queues(q);
135
136         queue_for_each_hw_ctx(q, hctx, i) {
137                 if (hctx->flags & BLK_MQ_F_BLOCKING)
138                         synchronize_srcu(&hctx->queue_rq_srcu);
139                 else
140                         rcu = true;
141         }
142         if (rcu)
143                 synchronize_rcu();
144 }
145 EXPORT_SYMBOL_GPL(blk_mq_quiesce_queue);
146
147 void blk_mq_wake_waiters(struct request_queue *q)
148 {
149         struct blk_mq_hw_ctx *hctx;
150         unsigned int i;
151
152         queue_for_each_hw_ctx(q, hctx, i)
153                 if (blk_mq_hw_queue_mapped(hctx))
154                         blk_mq_tag_wakeup_all(hctx->tags, true);
155
156         /*
157          * If we are called because the queue has now been marked as
158          * dying, we need to ensure that processes currently waiting on
159          * the queue are notified as well.
160          */
161         wake_up_all(&q->mq_freeze_wq);
162 }
163
164 bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx)
165 {
166         return blk_mq_has_free_tags(hctx->tags);
167 }
168 EXPORT_SYMBOL(blk_mq_can_queue);
169
170 void blk_mq_rq_ctx_init(struct request_queue *q, struct blk_mq_ctx *ctx,
171                         struct request *rq, unsigned int op)
172 {
173         INIT_LIST_HEAD(&rq->queuelist);
174         /* csd/requeue_work/fifo_time is initialized before use */
175         rq->q = q;
176         rq->mq_ctx = ctx;
177         rq->cmd_flags = op;
178         if (blk_queue_io_stat(q))
179                 rq->rq_flags |= RQF_IO_STAT;
180         /* do not touch atomic flags, it needs atomic ops against the timer */
181         rq->cpu = -1;
182         INIT_HLIST_NODE(&rq->hash);
183         RB_CLEAR_NODE(&rq->rb_node);
184         rq->rq_disk = NULL;
185         rq->part = NULL;
186         rq->start_time = jiffies;
187 #ifdef CONFIG_BLK_CGROUP
188         rq->rl = NULL;
189         set_start_time_ns(rq);
190         rq->io_start_time_ns = 0;
191 #endif
192         rq->nr_phys_segments = 0;
193 #if defined(CONFIG_BLK_DEV_INTEGRITY)
194         rq->nr_integrity_segments = 0;
195 #endif
196         rq->special = NULL;
197         /* tag was already set */
198         rq->errors = 0;
199
200         rq->cmd = rq->__cmd;
201
202         rq->extra_len = 0;
203         rq->sense_len = 0;
204         rq->resid_len = 0;
205         rq->sense = NULL;
206
207         INIT_LIST_HEAD(&rq->timeout_list);
208         rq->timeout = 0;
209
210         rq->end_io = NULL;
211         rq->end_io_data = NULL;
212         rq->next_rq = NULL;
213
214         ctx->rq_dispatched[op_is_sync(op)]++;
215 }
216 EXPORT_SYMBOL_GPL(blk_mq_rq_ctx_init);
217
218 struct request *__blk_mq_alloc_request(struct blk_mq_alloc_data *data,
219                                        unsigned int op)
220 {
221         struct request *rq;
222         unsigned int tag;
223
224         tag = blk_mq_get_tag(data);
225         if (tag != BLK_MQ_TAG_FAIL) {
226                 rq = data->hctx->tags->static_rqs[tag];
227
228                 if (blk_mq_tag_busy(data->hctx)) {
229                         rq->rq_flags = RQF_MQ_INFLIGHT;
230                         atomic_inc(&data->hctx->nr_active);
231                 }
232
233                 rq->tag = tag;
234                 data->hctx->tags->rqs[tag] = rq;
235                 blk_mq_rq_ctx_init(data->q, data->ctx, rq, op);
236                 return rq;
237         }
238
239         return NULL;
240 }
241 EXPORT_SYMBOL_GPL(__blk_mq_alloc_request);
242
243 struct request *blk_mq_alloc_request(struct request_queue *q, int rw,
244                 unsigned int flags)
245 {
246         struct blk_mq_ctx *ctx;
247         struct blk_mq_hw_ctx *hctx;
248         struct request *rq;
249         struct blk_mq_alloc_data alloc_data;
250         int ret;
251
252         ret = blk_queue_enter(q, flags & BLK_MQ_REQ_NOWAIT);
253         if (ret)
254                 return ERR_PTR(ret);
255
256         ctx = blk_mq_get_ctx(q);
257         hctx = blk_mq_map_queue(q, ctx->cpu);
258         blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx);
259         rq = __blk_mq_alloc_request(&alloc_data, rw);
260         blk_mq_put_ctx(ctx);
261
262         if (!rq) {
263                 blk_queue_exit(q);
264                 return ERR_PTR(-EWOULDBLOCK);
265         }
266
267         rq->__data_len = 0;
268         rq->__sector = (sector_t) -1;
269         rq->bio = rq->biotail = NULL;
270         return rq;
271 }
272 EXPORT_SYMBOL(blk_mq_alloc_request);
273
274 struct request *blk_mq_alloc_request_hctx(struct request_queue *q, int rw,
275                 unsigned int flags, unsigned int hctx_idx)
276 {
277         struct blk_mq_hw_ctx *hctx;
278         struct blk_mq_ctx *ctx;
279         struct request *rq;
280         struct blk_mq_alloc_data alloc_data;
281         int ret;
282
283         /*
284          * If the tag allocator sleeps we could get an allocation for a
285          * different hardware context.  No need to complicate the low level
286          * allocator for this for the rare use case of a command tied to
287          * a specific queue.
288          */
289         if (WARN_ON_ONCE(!(flags & BLK_MQ_REQ_NOWAIT)))
290                 return ERR_PTR(-EINVAL);
291
292         if (hctx_idx >= q->nr_hw_queues)
293                 return ERR_PTR(-EIO);
294
295         ret = blk_queue_enter(q, true);
296         if (ret)
297                 return ERR_PTR(ret);
298
299         /*
300          * Check if the hardware context is actually mapped to anything.
301          * If not tell the caller that it should skip this queue.
302          */
303         hctx = q->queue_hw_ctx[hctx_idx];
304         if (!blk_mq_hw_queue_mapped(hctx)) {
305                 ret = -EXDEV;
306                 goto out_queue_exit;
307         }
308         ctx = __blk_mq_get_ctx(q, cpumask_first(hctx->cpumask));
309
310         blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx);
311         rq = __blk_mq_alloc_request(&alloc_data, rw);
312         if (!rq) {
313                 ret = -EWOULDBLOCK;
314                 goto out_queue_exit;
315         }
316
317         return rq;
318
319 out_queue_exit:
320         blk_queue_exit(q);
321         return ERR_PTR(ret);
322 }
323 EXPORT_SYMBOL_GPL(blk_mq_alloc_request_hctx);
324
325 void __blk_mq_free_request(struct blk_mq_hw_ctx *hctx, struct blk_mq_ctx *ctx,
326                            struct request *rq)
327 {
328         const int tag = rq->tag;
329         struct request_queue *q = rq->q;
330
331         if (rq->rq_flags & RQF_MQ_INFLIGHT)
332                 atomic_dec(&hctx->nr_active);
333
334         wbt_done(q->rq_wb, &rq->issue_stat);
335         rq->rq_flags = 0;
336
337         clear_bit(REQ_ATOM_STARTED, &rq->atomic_flags);
338         clear_bit(REQ_ATOM_POLL_SLEPT, &rq->atomic_flags);
339         blk_mq_put_tag(hctx, hctx->tags, ctx, tag);
340         blk_queue_exit(q);
341 }
342
343 static void blk_mq_free_hctx_request(struct blk_mq_hw_ctx *hctx,
344                                      struct request *rq)
345 {
346         struct blk_mq_ctx *ctx = rq->mq_ctx;
347
348         ctx->rq_completed[rq_is_sync(rq)]++;
349         __blk_mq_free_request(hctx, ctx, rq);
350 }
351
352 void blk_mq_free_request(struct request *rq)
353 {
354         blk_mq_free_hctx_request(blk_mq_map_queue(rq->q, rq->mq_ctx->cpu), rq);
355 }
356 EXPORT_SYMBOL_GPL(blk_mq_free_request);
357
358 inline void __blk_mq_end_request(struct request *rq, int error)
359 {
360         blk_account_io_done(rq);
361
362         if (rq->end_io) {
363                 wbt_done(rq->q->rq_wb, &rq->issue_stat);
364                 rq->end_io(rq, error);
365         } else {
366                 if (unlikely(blk_bidi_rq(rq)))
367                         blk_mq_free_request(rq->next_rq);
368                 blk_mq_free_request(rq);
369         }
370 }
371 EXPORT_SYMBOL(__blk_mq_end_request);
372
373 void blk_mq_end_request(struct request *rq, int error)
374 {
375         if (blk_update_request(rq, error, blk_rq_bytes(rq)))
376                 BUG();
377         __blk_mq_end_request(rq, error);
378 }
379 EXPORT_SYMBOL(blk_mq_end_request);
380
381 static void __blk_mq_complete_request_remote(void *data)
382 {
383         struct request *rq = data;
384
385         rq->q->softirq_done_fn(rq);
386 }
387
388 static void blk_mq_ipi_complete_request(struct request *rq)
389 {
390         struct blk_mq_ctx *ctx = rq->mq_ctx;
391         bool shared = false;
392         int cpu;
393
394         if (!test_bit(QUEUE_FLAG_SAME_COMP, &rq->q->queue_flags)) {
395                 rq->q->softirq_done_fn(rq);
396                 return;
397         }
398
399         cpu = get_cpu();
400         if (!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags))
401                 shared = cpus_share_cache(cpu, ctx->cpu);
402
403         if (cpu != ctx->cpu && !shared && cpu_online(ctx->cpu)) {
404                 rq->csd.func = __blk_mq_complete_request_remote;
405                 rq->csd.info = rq;
406                 rq->csd.flags = 0;
407                 smp_call_function_single_async(ctx->cpu, &rq->csd);
408         } else {
409                 rq->q->softirq_done_fn(rq);
410         }
411         put_cpu();
412 }
413
414 static void blk_mq_stat_add(struct request *rq)
415 {
416         if (rq->rq_flags & RQF_STATS) {
417                 /*
418                  * We could rq->mq_ctx here, but there's less of a risk
419                  * of races if we have the completion event add the stats
420                  * to the local software queue.
421                  */
422                 struct blk_mq_ctx *ctx;
423
424                 ctx = __blk_mq_get_ctx(rq->q, raw_smp_processor_id());
425                 blk_stat_add(&ctx->stat[rq_data_dir(rq)], rq);
426         }
427 }
428
429 static void __blk_mq_complete_request(struct request *rq)
430 {
431         struct request_queue *q = rq->q;
432
433         blk_mq_stat_add(rq);
434
435         if (!q->softirq_done_fn)
436                 blk_mq_end_request(rq, rq->errors);
437         else
438                 blk_mq_ipi_complete_request(rq);
439 }
440
441 /**
442  * blk_mq_complete_request - end I/O on a request
443  * @rq:         the request being processed
444  *
445  * Description:
446  *      Ends all I/O on a request. It does not handle partial completions.
447  *      The actual completion happens out-of-order, through a IPI handler.
448  **/
449 void blk_mq_complete_request(struct request *rq, int error)
450 {
451         struct request_queue *q = rq->q;
452
453         if (unlikely(blk_should_fake_timeout(q)))
454                 return;
455         if (!blk_mark_rq_complete(rq)) {
456                 rq->errors = error;
457                 __blk_mq_complete_request(rq);
458         }
459 }
460 EXPORT_SYMBOL(blk_mq_complete_request);
461
462 int blk_mq_request_started(struct request *rq)
463 {
464         return test_bit(REQ_ATOM_STARTED, &rq->atomic_flags);
465 }
466 EXPORT_SYMBOL_GPL(blk_mq_request_started);
467
468 void blk_mq_start_request(struct request *rq)
469 {
470         struct request_queue *q = rq->q;
471
472         trace_block_rq_issue(q, rq);
473
474         rq->resid_len = blk_rq_bytes(rq);
475         if (unlikely(blk_bidi_rq(rq)))
476                 rq->next_rq->resid_len = blk_rq_bytes(rq->next_rq);
477
478         if (test_bit(QUEUE_FLAG_STATS, &q->queue_flags)) {
479                 blk_stat_set_issue_time(&rq->issue_stat);
480                 rq->rq_flags |= RQF_STATS;
481                 wbt_issue(q->rq_wb, &rq->issue_stat);
482         }
483
484         blk_add_timer(rq);
485
486         /*
487          * Ensure that ->deadline is visible before set the started
488          * flag and clear the completed flag.
489          */
490         smp_mb__before_atomic();
491
492         /*
493          * Mark us as started and clear complete. Complete might have been
494          * set if requeue raced with timeout, which then marked it as
495          * complete. So be sure to clear complete again when we start
496          * the request, otherwise we'll ignore the completion event.
497          */
498         if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags))
499                 set_bit(REQ_ATOM_STARTED, &rq->atomic_flags);
500         if (test_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags))
501                 clear_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags);
502
503         if (q->dma_drain_size && blk_rq_bytes(rq)) {
504                 /*
505                  * Make sure space for the drain appears.  We know we can do
506                  * this because max_hw_segments has been adjusted to be one
507                  * fewer than the device can handle.
508                  */
509                 rq->nr_phys_segments++;
510         }
511 }
512 EXPORT_SYMBOL(blk_mq_start_request);
513
514 static void __blk_mq_requeue_request(struct request *rq)
515 {
516         struct request_queue *q = rq->q;
517
518         trace_block_rq_requeue(q, rq);
519         wbt_requeue(q->rq_wb, &rq->issue_stat);
520
521         if (test_and_clear_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) {
522                 if (q->dma_drain_size && blk_rq_bytes(rq))
523                         rq->nr_phys_segments--;
524         }
525 }
526
527 void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list)
528 {
529         __blk_mq_requeue_request(rq);
530
531         BUG_ON(blk_queued_rq(rq));
532         blk_mq_add_to_requeue_list(rq, true, kick_requeue_list);
533 }
534 EXPORT_SYMBOL(blk_mq_requeue_request);
535
536 static void blk_mq_requeue_work(struct work_struct *work)
537 {
538         struct request_queue *q =
539                 container_of(work, struct request_queue, requeue_work.work);
540         LIST_HEAD(rq_list);
541         struct request *rq, *next;
542         unsigned long flags;
543
544         spin_lock_irqsave(&q->requeue_lock, flags);
545         list_splice_init(&q->requeue_list, &rq_list);
546         spin_unlock_irqrestore(&q->requeue_lock, flags);
547
548         list_for_each_entry_safe(rq, next, &rq_list, queuelist) {
549                 if (!(rq->rq_flags & RQF_SOFTBARRIER))
550                         continue;
551
552                 rq->rq_flags &= ~RQF_SOFTBARRIER;
553                 list_del_init(&rq->queuelist);
554                 blk_mq_insert_request(rq, true, false, false);
555         }
556
557         while (!list_empty(&rq_list)) {
558                 rq = list_entry(rq_list.next, struct request, queuelist);
559                 list_del_init(&rq->queuelist);
560                 blk_mq_insert_request(rq, false, false, false);
561         }
562
563         blk_mq_run_hw_queues(q, false);
564 }
565
566 void blk_mq_add_to_requeue_list(struct request *rq, bool at_head,
567                                 bool kick_requeue_list)
568 {
569         struct request_queue *q = rq->q;
570         unsigned long flags;
571
572         /*
573          * We abuse this flag that is otherwise used by the I/O scheduler to
574          * request head insertation from the workqueue.
575          */
576         BUG_ON(rq->rq_flags & RQF_SOFTBARRIER);
577
578         spin_lock_irqsave(&q->requeue_lock, flags);
579         if (at_head) {
580                 rq->rq_flags |= RQF_SOFTBARRIER;
581                 list_add(&rq->queuelist, &q->requeue_list);
582         } else {
583                 list_add_tail(&rq->queuelist, &q->requeue_list);
584         }
585         spin_unlock_irqrestore(&q->requeue_lock, flags);
586
587         if (kick_requeue_list)
588                 blk_mq_kick_requeue_list(q);
589 }
590 EXPORT_SYMBOL(blk_mq_add_to_requeue_list);
591
592 void blk_mq_kick_requeue_list(struct request_queue *q)
593 {
594         kblockd_schedule_delayed_work(&q->requeue_work, 0);
595 }
596 EXPORT_SYMBOL(blk_mq_kick_requeue_list);
597
598 void blk_mq_delay_kick_requeue_list(struct request_queue *q,
599                                     unsigned long msecs)
600 {
601         kblockd_schedule_delayed_work(&q->requeue_work,
602                                       msecs_to_jiffies(msecs));
603 }
604 EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list);
605
606 void blk_mq_abort_requeue_list(struct request_queue *q)
607 {
608         unsigned long flags;
609         LIST_HEAD(rq_list);
610
611         spin_lock_irqsave(&q->requeue_lock, flags);
612         list_splice_init(&q->requeue_list, &rq_list);
613         spin_unlock_irqrestore(&q->requeue_lock, flags);
614
615         while (!list_empty(&rq_list)) {
616                 struct request *rq;
617
618                 rq = list_first_entry(&rq_list, struct request, queuelist);
619                 list_del_init(&rq->queuelist);
620                 rq->errors = -EIO;
621                 blk_mq_end_request(rq, rq->errors);
622         }
623 }
624 EXPORT_SYMBOL(blk_mq_abort_requeue_list);
625
626 struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag)
627 {
628         if (tag < tags->nr_tags) {
629                 prefetch(tags->rqs[tag]);
630                 return tags->rqs[tag];
631         }
632
633         return NULL;
634 }
635 EXPORT_SYMBOL(blk_mq_tag_to_rq);
636
637 struct blk_mq_timeout_data {
638         unsigned long next;
639         unsigned int next_set;
640 };
641
642 void blk_mq_rq_timed_out(struct request *req, bool reserved)
643 {
644         const struct blk_mq_ops *ops = req->q->mq_ops;
645         enum blk_eh_timer_return ret = BLK_EH_RESET_TIMER;
646
647         /*
648          * We know that complete is set at this point. If STARTED isn't set
649          * anymore, then the request isn't active and the "timeout" should
650          * just be ignored. This can happen due to the bitflag ordering.
651          * Timeout first checks if STARTED is set, and if it is, assumes
652          * the request is active. But if we race with completion, then
653          * we both flags will get cleared. So check here again, and ignore
654          * a timeout event with a request that isn't active.
655          */
656         if (!test_bit(REQ_ATOM_STARTED, &req->atomic_flags))
657                 return;
658
659         if (ops->timeout)
660                 ret = ops->timeout(req, reserved);
661
662         switch (ret) {
663         case BLK_EH_HANDLED:
664                 __blk_mq_complete_request(req);
665                 break;
666         case BLK_EH_RESET_TIMER:
667                 blk_add_timer(req);
668                 blk_clear_rq_complete(req);
669                 break;
670         case BLK_EH_NOT_HANDLED:
671                 break;
672         default:
673                 printk(KERN_ERR "block: bad eh return: %d\n", ret);
674                 break;
675         }
676 }
677
678 static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx,
679                 struct request *rq, void *priv, bool reserved)
680 {
681         struct blk_mq_timeout_data *data = priv;
682
683         if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) {
684                 /*
685                  * If a request wasn't started before the queue was
686                  * marked dying, kill it here or it'll go unnoticed.
687                  */
688                 if (unlikely(blk_queue_dying(rq->q))) {
689                         rq->errors = -EIO;
690                         blk_mq_end_request(rq, rq->errors);
691                 }
692                 return;
693         }
694
695         if (time_after_eq(jiffies, rq->deadline)) {
696                 if (!blk_mark_rq_complete(rq))
697                         blk_mq_rq_timed_out(rq, reserved);
698         } else if (!data->next_set || time_after(data->next, rq->deadline)) {
699                 data->next = rq->deadline;
700                 data->next_set = 1;
701         }
702 }
703
704 static void blk_mq_timeout_work(struct work_struct *work)
705 {
706         struct request_queue *q =
707                 container_of(work, struct request_queue, timeout_work);
708         struct blk_mq_timeout_data data = {
709                 .next           = 0,
710                 .next_set       = 0,
711         };
712         int i;
713
714         /* A deadlock might occur if a request is stuck requiring a
715          * timeout at the same time a queue freeze is waiting
716          * completion, since the timeout code would not be able to
717          * acquire the queue reference here.
718          *
719          * That's why we don't use blk_queue_enter here; instead, we use
720          * percpu_ref_tryget directly, because we need to be able to
721          * obtain a reference even in the short window between the queue
722          * starting to freeze, by dropping the first reference in
723          * blk_mq_freeze_queue_start, and the moment the last request is
724          * consumed, marked by the instant q_usage_counter reaches
725          * zero.
726          */
727         if (!percpu_ref_tryget(&q->q_usage_counter))
728                 return;
729
730         blk_mq_queue_tag_busy_iter(q, blk_mq_check_expired, &data);
731
732         if (data.next_set) {
733                 data.next = blk_rq_timeout(round_jiffies_up(data.next));
734                 mod_timer(&q->timeout, data.next);
735         } else {
736                 struct blk_mq_hw_ctx *hctx;
737
738                 queue_for_each_hw_ctx(q, hctx, i) {
739                         /* the hctx may be unmapped, so check it here */
740                         if (blk_mq_hw_queue_mapped(hctx))
741                                 blk_mq_tag_idle(hctx);
742                 }
743         }
744         blk_queue_exit(q);
745 }
746
747 /*
748  * Reverse check our software queue for entries that we could potentially
749  * merge with. Currently includes a hand-wavy stop count of 8, to not spend
750  * too much time checking for merges.
751  */
752 static bool blk_mq_attempt_merge(struct request_queue *q,
753                                  struct blk_mq_ctx *ctx, struct bio *bio)
754 {
755         struct request *rq;
756         int checked = 8;
757
758         list_for_each_entry_reverse(rq, &ctx->rq_list, queuelist) {
759                 int el_ret;
760
761                 if (!checked--)
762                         break;
763
764                 if (!blk_rq_merge_ok(rq, bio))
765                         continue;
766
767                 el_ret = blk_try_merge(rq, bio);
768                 if (el_ret == ELEVATOR_BACK_MERGE) {
769                         if (bio_attempt_back_merge(q, rq, bio)) {
770                                 ctx->rq_merged++;
771                                 return true;
772                         }
773                         break;
774                 } else if (el_ret == ELEVATOR_FRONT_MERGE) {
775                         if (bio_attempt_front_merge(q, rq, bio)) {
776                                 ctx->rq_merged++;
777                                 return true;
778                         }
779                         break;
780                 }
781         }
782
783         return false;
784 }
785
786 struct flush_busy_ctx_data {
787         struct blk_mq_hw_ctx *hctx;
788         struct list_head *list;
789 };
790
791 static bool flush_busy_ctx(struct sbitmap *sb, unsigned int bitnr, void *data)
792 {
793         struct flush_busy_ctx_data *flush_data = data;
794         struct blk_mq_hw_ctx *hctx = flush_data->hctx;
795         struct blk_mq_ctx *ctx = hctx->ctxs[bitnr];
796
797         sbitmap_clear_bit(sb, bitnr);
798         spin_lock(&ctx->lock);
799         list_splice_tail_init(&ctx->rq_list, flush_data->list);
800         spin_unlock(&ctx->lock);
801         return true;
802 }
803
804 /*
805  * Process software queues that have been marked busy, splicing them
806  * to the for-dispatch
807  */
808 void blk_mq_flush_busy_ctxs(struct blk_mq_hw_ctx *hctx, struct list_head *list)
809 {
810         struct flush_busy_ctx_data data = {
811                 .hctx = hctx,
812                 .list = list,
813         };
814
815         sbitmap_for_each_set(&hctx->ctx_map, flush_busy_ctx, &data);
816 }
817 EXPORT_SYMBOL_GPL(blk_mq_flush_busy_ctxs);
818
819 static inline unsigned int queued_to_index(unsigned int queued)
820 {
821         if (!queued)
822                 return 0;
823
824         return min(BLK_MQ_MAX_DISPATCH_ORDER - 1, ilog2(queued) + 1);
825 }
826
827 bool blk_mq_dispatch_rq_list(struct blk_mq_hw_ctx *hctx, struct list_head *list)
828 {
829         struct request_queue *q = hctx->queue;
830         struct request *rq;
831         LIST_HEAD(driver_list);
832         struct list_head *dptr;
833         int queued, ret = BLK_MQ_RQ_QUEUE_OK;
834
835         /*
836          * Start off with dptr being NULL, so we start the first request
837          * immediately, even if we have more pending.
838          */
839         dptr = NULL;
840
841         /*
842          * Now process all the entries, sending them to the driver.
843          */
844         queued = 0;
845         while (!list_empty(list)) {
846                 struct blk_mq_queue_data bd;
847
848                 rq = list_first_entry(list, struct request, queuelist);
849                 list_del_init(&rq->queuelist);
850
851                 bd.rq = rq;
852                 bd.list = dptr;
853                 bd.last = list_empty(list);
854
855                 ret = q->mq_ops->queue_rq(hctx, &bd);
856                 switch (ret) {
857                 case BLK_MQ_RQ_QUEUE_OK:
858                         queued++;
859                         break;
860                 case BLK_MQ_RQ_QUEUE_BUSY:
861                         list_add(&rq->queuelist, list);
862                         __blk_mq_requeue_request(rq);
863                         break;
864                 default:
865                         pr_err("blk-mq: bad return on queue: %d\n", ret);
866                 case BLK_MQ_RQ_QUEUE_ERROR:
867                         rq->errors = -EIO;
868                         blk_mq_end_request(rq, rq->errors);
869                         break;
870                 }
871
872                 if (ret == BLK_MQ_RQ_QUEUE_BUSY)
873                         break;
874
875                 /*
876                  * We've done the first request. If we have more than 1
877                  * left in the list, set dptr to defer issue.
878                  */
879                 if (!dptr && list->next != list->prev)
880                         dptr = &driver_list;
881         }
882
883         hctx->dispatched[queued_to_index(queued)]++;
884
885         /*
886          * Any items that need requeuing? Stuff them into hctx->dispatch,
887          * that is where we will continue on next queue run.
888          */
889         if (!list_empty(list)) {
890                 spin_lock(&hctx->lock);
891                 list_splice(list, &hctx->dispatch);
892                 spin_unlock(&hctx->lock);
893
894                 /*
895                  * the queue is expected stopped with BLK_MQ_RQ_QUEUE_BUSY, but
896                  * it's possible the queue is stopped and restarted again
897                  * before this. Queue restart will dispatch requests. And since
898                  * requests in rq_list aren't added into hctx->dispatch yet,
899                  * the requests in rq_list might get lost.
900                  *
901                  * blk_mq_run_hw_queue() already checks the STOPPED bit
902                  **/
903                 blk_mq_run_hw_queue(hctx, true);
904         }
905
906         return ret != BLK_MQ_RQ_QUEUE_BUSY;
907 }
908
909 /*
910  * Run this hardware queue, pulling any software queues mapped to it in.
911  * Note that this function currently has various problems around ordering
912  * of IO. In particular, we'd like FIFO behaviour on handling existing
913  * items on the hctx->dispatch list. Ignore that for now.
914  */
915 static void blk_mq_process_rq_list(struct blk_mq_hw_ctx *hctx)
916 {
917         LIST_HEAD(rq_list);
918         LIST_HEAD(driver_list);
919
920         if (unlikely(blk_mq_hctx_stopped(hctx)))
921                 return;
922
923         hctx->run++;
924
925         /*
926          * Touch any software queue that has pending entries.
927          */
928         blk_mq_flush_busy_ctxs(hctx, &rq_list);
929
930         /*
931          * If we have previous entries on our dispatch list, grab them
932          * and stuff them at the front for more fair dispatch.
933          */
934         if (!list_empty_careful(&hctx->dispatch)) {
935                 spin_lock(&hctx->lock);
936                 if (!list_empty(&hctx->dispatch))
937                         list_splice_init(&hctx->dispatch, &rq_list);
938                 spin_unlock(&hctx->lock);
939         }
940
941         blk_mq_dispatch_rq_list(hctx, &rq_list);
942 }
943
944 static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx)
945 {
946         int srcu_idx;
947
948         WARN_ON(!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask) &&
949                 cpu_online(hctx->next_cpu));
950
951         if (!(hctx->flags & BLK_MQ_F_BLOCKING)) {
952                 rcu_read_lock();
953                 blk_mq_process_rq_list(hctx);
954                 rcu_read_unlock();
955         } else {
956                 srcu_idx = srcu_read_lock(&hctx->queue_rq_srcu);
957                 blk_mq_process_rq_list(hctx);
958                 srcu_read_unlock(&hctx->queue_rq_srcu, srcu_idx);
959         }
960 }
961
962 /*
963  * It'd be great if the workqueue API had a way to pass
964  * in a mask and had some smarts for more clever placement.
965  * For now we just round-robin here, switching for every
966  * BLK_MQ_CPU_WORK_BATCH queued items.
967  */
968 static int blk_mq_hctx_next_cpu(struct blk_mq_hw_ctx *hctx)
969 {
970         if (hctx->queue->nr_hw_queues == 1)
971                 return WORK_CPU_UNBOUND;
972
973         if (--hctx->next_cpu_batch <= 0) {
974                 int next_cpu;
975
976                 next_cpu = cpumask_next(hctx->next_cpu, hctx->cpumask);
977                 if (next_cpu >= nr_cpu_ids)
978                         next_cpu = cpumask_first(hctx->cpumask);
979
980                 hctx->next_cpu = next_cpu;
981                 hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH;
982         }
983
984         return hctx->next_cpu;
985 }
986
987 void blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
988 {
989         if (unlikely(blk_mq_hctx_stopped(hctx) ||
990                      !blk_mq_hw_queue_mapped(hctx)))
991                 return;
992
993         if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
994                 int cpu = get_cpu();
995                 if (cpumask_test_cpu(cpu, hctx->cpumask)) {
996                         __blk_mq_run_hw_queue(hctx);
997                         put_cpu();
998                         return;
999                 }
1000
1001                 put_cpu();
1002         }
1003
1004         kblockd_schedule_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work);
1005 }
1006
1007 void blk_mq_run_hw_queues(struct request_queue *q, bool async)
1008 {
1009         struct blk_mq_hw_ctx *hctx;
1010         int i;
1011
1012         queue_for_each_hw_ctx(q, hctx, i) {
1013                 if ((!blk_mq_hctx_has_pending(hctx) &&
1014                     list_empty_careful(&hctx->dispatch)) ||
1015                     blk_mq_hctx_stopped(hctx))
1016                         continue;
1017
1018                 blk_mq_run_hw_queue(hctx, async);
1019         }
1020 }
1021 EXPORT_SYMBOL(blk_mq_run_hw_queues);
1022
1023 /**
1024  * blk_mq_queue_stopped() - check whether one or more hctxs have been stopped
1025  * @q: request queue.
1026  *
1027  * The caller is responsible for serializing this function against
1028  * blk_mq_{start,stop}_hw_queue().
1029  */
1030 bool blk_mq_queue_stopped(struct request_queue *q)
1031 {
1032         struct blk_mq_hw_ctx *hctx;
1033         int i;
1034
1035         queue_for_each_hw_ctx(q, hctx, i)
1036                 if (blk_mq_hctx_stopped(hctx))
1037                         return true;
1038
1039         return false;
1040 }
1041 EXPORT_SYMBOL(blk_mq_queue_stopped);
1042
1043 void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx)
1044 {
1045         cancel_work(&hctx->run_work);
1046         cancel_delayed_work(&hctx->delay_work);
1047         set_bit(BLK_MQ_S_STOPPED, &hctx->state);
1048 }
1049 EXPORT_SYMBOL(blk_mq_stop_hw_queue);
1050
1051 void blk_mq_stop_hw_queues(struct request_queue *q)
1052 {
1053         struct blk_mq_hw_ctx *hctx;
1054         int i;
1055
1056         queue_for_each_hw_ctx(q, hctx, i)
1057                 blk_mq_stop_hw_queue(hctx);
1058 }
1059 EXPORT_SYMBOL(blk_mq_stop_hw_queues);
1060
1061 void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx)
1062 {
1063         clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
1064
1065         blk_mq_run_hw_queue(hctx, false);
1066 }
1067 EXPORT_SYMBOL(blk_mq_start_hw_queue);
1068
1069 void blk_mq_start_hw_queues(struct request_queue *q)
1070 {
1071         struct blk_mq_hw_ctx *hctx;
1072         int i;
1073
1074         queue_for_each_hw_ctx(q, hctx, i)
1075                 blk_mq_start_hw_queue(hctx);
1076 }
1077 EXPORT_SYMBOL(blk_mq_start_hw_queues);
1078
1079 void blk_mq_start_stopped_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
1080 {
1081         if (!blk_mq_hctx_stopped(hctx))
1082                 return;
1083
1084         clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
1085         blk_mq_run_hw_queue(hctx, async);
1086 }
1087 EXPORT_SYMBOL_GPL(blk_mq_start_stopped_hw_queue);
1088
1089 void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async)
1090 {
1091         struct blk_mq_hw_ctx *hctx;
1092         int i;
1093
1094         queue_for_each_hw_ctx(q, hctx, i)
1095                 blk_mq_start_stopped_hw_queue(hctx, async);
1096 }
1097 EXPORT_SYMBOL(blk_mq_start_stopped_hw_queues);
1098
1099 static void blk_mq_run_work_fn(struct work_struct *work)
1100 {
1101         struct blk_mq_hw_ctx *hctx;
1102
1103         hctx = container_of(work, struct blk_mq_hw_ctx, run_work);
1104
1105         __blk_mq_run_hw_queue(hctx);
1106 }
1107
1108 static void blk_mq_delay_work_fn(struct work_struct *work)
1109 {
1110         struct blk_mq_hw_ctx *hctx;
1111
1112         hctx = container_of(work, struct blk_mq_hw_ctx, delay_work.work);
1113
1114         if (test_and_clear_bit(BLK_MQ_S_STOPPED, &hctx->state))
1115                 __blk_mq_run_hw_queue(hctx);
1116 }
1117
1118 void blk_mq_delay_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
1119 {
1120         if (unlikely(!blk_mq_hw_queue_mapped(hctx)))
1121                 return;
1122
1123         kblockd_schedule_delayed_work_on(blk_mq_hctx_next_cpu(hctx),
1124                         &hctx->delay_work, msecs_to_jiffies(msecs));
1125 }
1126 EXPORT_SYMBOL(blk_mq_delay_queue);
1127
1128 static inline void __blk_mq_insert_req_list(struct blk_mq_hw_ctx *hctx,
1129                                             struct request *rq,
1130                                             bool at_head)
1131 {
1132         struct blk_mq_ctx *ctx = rq->mq_ctx;
1133
1134         trace_block_rq_insert(hctx->queue, rq);
1135
1136         if (at_head)
1137                 list_add(&rq->queuelist, &ctx->rq_list);
1138         else
1139                 list_add_tail(&rq->queuelist, &ctx->rq_list);
1140 }
1141
1142 void __blk_mq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
1143                              bool at_head)
1144 {
1145         struct blk_mq_ctx *ctx = rq->mq_ctx;
1146
1147         __blk_mq_insert_req_list(hctx, rq, at_head);
1148         blk_mq_hctx_mark_pending(hctx, ctx);
1149 }
1150
1151 void blk_mq_insert_request(struct request *rq, bool at_head, bool run_queue,
1152                            bool async)
1153 {
1154         struct blk_mq_ctx *ctx = rq->mq_ctx;
1155         struct request_queue *q = rq->q;
1156         struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, ctx->cpu);
1157
1158         spin_lock(&ctx->lock);
1159         __blk_mq_insert_request(hctx, rq, at_head);
1160         spin_unlock(&ctx->lock);
1161
1162         if (run_queue)
1163                 blk_mq_run_hw_queue(hctx, async);
1164 }
1165
1166 static void blk_mq_insert_requests(struct request_queue *q,
1167                                      struct blk_mq_ctx *ctx,
1168                                      struct list_head *list,
1169                                      int depth,
1170                                      bool from_schedule)
1171
1172 {
1173         struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, ctx->cpu);
1174
1175         trace_block_unplug(q, depth, !from_schedule);
1176
1177         /*
1178          * preemption doesn't flush plug list, so it's possible ctx->cpu is
1179          * offline now
1180          */
1181         spin_lock(&ctx->lock);
1182         while (!list_empty(list)) {
1183                 struct request *rq;
1184
1185                 rq = list_first_entry(list, struct request, queuelist);
1186                 BUG_ON(rq->mq_ctx != ctx);
1187                 list_del_init(&rq->queuelist);
1188                 __blk_mq_insert_req_list(hctx, rq, false);
1189         }
1190         blk_mq_hctx_mark_pending(hctx, ctx);
1191         spin_unlock(&ctx->lock);
1192
1193         blk_mq_run_hw_queue(hctx, from_schedule);
1194 }
1195
1196 static int plug_ctx_cmp(void *priv, struct list_head *a, struct list_head *b)
1197 {
1198         struct request *rqa = container_of(a, struct request, queuelist);
1199         struct request *rqb = container_of(b, struct request, queuelist);
1200
1201         return !(rqa->mq_ctx < rqb->mq_ctx ||
1202                  (rqa->mq_ctx == rqb->mq_ctx &&
1203                   blk_rq_pos(rqa) < blk_rq_pos(rqb)));
1204 }
1205
1206 void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
1207 {
1208         struct blk_mq_ctx *this_ctx;
1209         struct request_queue *this_q;
1210         struct request *rq;
1211         LIST_HEAD(list);
1212         LIST_HEAD(ctx_list);
1213         unsigned int depth;
1214
1215         list_splice_init(&plug->mq_list, &list);
1216
1217         list_sort(NULL, &list, plug_ctx_cmp);
1218
1219         this_q = NULL;
1220         this_ctx = NULL;
1221         depth = 0;
1222
1223         while (!list_empty(&list)) {
1224                 rq = list_entry_rq(list.next);
1225                 list_del_init(&rq->queuelist);
1226                 BUG_ON(!rq->q);
1227                 if (rq->mq_ctx != this_ctx) {
1228                         if (this_ctx) {
1229                                 blk_mq_insert_requests(this_q, this_ctx,
1230                                                         &ctx_list, depth,
1231                                                         from_schedule);
1232                         }
1233
1234                         this_ctx = rq->mq_ctx;
1235                         this_q = rq->q;
1236                         depth = 0;
1237                 }
1238
1239                 depth++;
1240                 list_add_tail(&rq->queuelist, &ctx_list);
1241         }
1242
1243         /*
1244          * If 'this_ctx' is set, we know we have entries to complete
1245          * on 'ctx_list'. Do those.
1246          */
1247         if (this_ctx) {
1248                 blk_mq_insert_requests(this_q, this_ctx, &ctx_list, depth,
1249                                        from_schedule);
1250         }
1251 }
1252
1253 static void blk_mq_bio_to_request(struct request *rq, struct bio *bio)
1254 {
1255         init_request_from_bio(rq, bio);
1256
1257         blk_account_io_start(rq, true);
1258 }
1259
1260 static inline bool hctx_allow_merges(struct blk_mq_hw_ctx *hctx)
1261 {
1262         return (hctx->flags & BLK_MQ_F_SHOULD_MERGE) &&
1263                 !blk_queue_nomerges(hctx->queue);
1264 }
1265
1266 static inline bool blk_mq_merge_queue_io(struct blk_mq_hw_ctx *hctx,
1267                                          struct blk_mq_ctx *ctx,
1268                                          struct request *rq, struct bio *bio)
1269 {
1270         if (!hctx_allow_merges(hctx) || !bio_mergeable(bio)) {
1271                 blk_mq_bio_to_request(rq, bio);
1272                 spin_lock(&ctx->lock);
1273 insert_rq:
1274                 __blk_mq_insert_request(hctx, rq, false);
1275                 spin_unlock(&ctx->lock);
1276                 return false;
1277         } else {
1278                 struct request_queue *q = hctx->queue;
1279
1280                 spin_lock(&ctx->lock);
1281                 if (!blk_mq_attempt_merge(q, ctx, bio)) {
1282                         blk_mq_bio_to_request(rq, bio);
1283                         goto insert_rq;
1284                 }
1285
1286                 spin_unlock(&ctx->lock);
1287                 __blk_mq_free_request(hctx, ctx, rq);
1288                 return true;
1289         }
1290 }
1291
1292 static struct request *blk_mq_map_request(struct request_queue *q,
1293                                           struct bio *bio,
1294                                           struct blk_mq_alloc_data *data)
1295 {
1296         struct blk_mq_hw_ctx *hctx;
1297         struct blk_mq_ctx *ctx;
1298         struct request *rq;
1299
1300         blk_queue_enter_live(q);
1301         ctx = blk_mq_get_ctx(q);
1302         hctx = blk_mq_map_queue(q, ctx->cpu);
1303
1304         trace_block_getrq(q, bio, bio->bi_opf);
1305         blk_mq_set_alloc_data(data, q, 0, ctx, hctx);
1306         rq = __blk_mq_alloc_request(data, bio->bi_opf);
1307
1308         data->hctx->queued++;
1309         return rq;
1310 }
1311
1312 static blk_qc_t request_to_qc_t(struct blk_mq_hw_ctx *hctx, struct request *rq)
1313 {
1314         return blk_tag_to_qc_t(rq->tag, hctx->queue_num, false);
1315 }
1316
1317 static void blk_mq_try_issue_directly(struct request *rq, blk_qc_t *cookie)
1318 {
1319         int ret;
1320         struct request_queue *q = rq->q;
1321         struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, rq->mq_ctx->cpu);
1322         struct blk_mq_queue_data bd = {
1323                 .rq = rq,
1324                 .list = NULL,
1325                 .last = 1
1326         };
1327         blk_qc_t new_cookie = request_to_qc_t(hctx, rq);
1328
1329         if (blk_mq_hctx_stopped(hctx))
1330                 goto insert;
1331
1332         /*
1333          * For OK queue, we are done. For error, kill it. Any other
1334          * error (busy), just add it to our list as we previously
1335          * would have done
1336          */
1337         ret = q->mq_ops->queue_rq(hctx, &bd);
1338         if (ret == BLK_MQ_RQ_QUEUE_OK) {
1339                 *cookie = new_cookie;
1340                 return;
1341         }
1342
1343         __blk_mq_requeue_request(rq);
1344
1345         if (ret == BLK_MQ_RQ_QUEUE_ERROR) {
1346                 *cookie = BLK_QC_T_NONE;
1347                 rq->errors = -EIO;
1348                 blk_mq_end_request(rq, rq->errors);
1349                 return;
1350         }
1351
1352 insert:
1353         blk_mq_insert_request(rq, false, true, true);
1354 }
1355
1356 /*
1357  * Multiple hardware queue variant. This will not use per-process plugs,
1358  * but will attempt to bypass the hctx queueing if we can go straight to
1359  * hardware for SYNC IO.
1360  */
1361 static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio)
1362 {
1363         const int is_sync = op_is_sync(bio->bi_opf);
1364         const int is_flush_fua = bio->bi_opf & (REQ_PREFLUSH | REQ_FUA);
1365         struct blk_mq_alloc_data data;
1366         struct request *rq;
1367         unsigned int request_count = 0, srcu_idx;
1368         struct blk_plug *plug;
1369         struct request *same_queue_rq = NULL;
1370         blk_qc_t cookie;
1371         unsigned int wb_acct;
1372
1373         blk_queue_bounce(q, &bio);
1374
1375         if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
1376                 bio_io_error(bio);
1377                 return BLK_QC_T_NONE;
1378         }
1379
1380         blk_queue_split(q, &bio, q->bio_split);
1381
1382         if (!is_flush_fua && !blk_queue_nomerges(q) &&
1383             blk_attempt_plug_merge(q, bio, &request_count, &same_queue_rq))
1384                 return BLK_QC_T_NONE;
1385
1386         wb_acct = wbt_wait(q->rq_wb, bio, NULL);
1387
1388         rq = blk_mq_map_request(q, bio, &data);
1389         if (unlikely(!rq)) {
1390                 __wbt_done(q->rq_wb, wb_acct);
1391                 return BLK_QC_T_NONE;
1392         }
1393
1394         wbt_track(&rq->issue_stat, wb_acct);
1395
1396         cookie = request_to_qc_t(data.hctx, rq);
1397
1398         if (unlikely(is_flush_fua)) {
1399                 blk_mq_bio_to_request(rq, bio);
1400                 blk_insert_flush(rq);
1401                 goto run_queue;
1402         }
1403
1404         plug = current->plug;
1405         /*
1406          * If the driver supports defer issued based on 'last', then
1407          * queue it up like normal since we can potentially save some
1408          * CPU this way.
1409          */
1410         if (((plug && !blk_queue_nomerges(q)) || is_sync) &&
1411             !(data.hctx->flags & BLK_MQ_F_DEFER_ISSUE)) {
1412                 struct request *old_rq = NULL;
1413
1414                 blk_mq_bio_to_request(rq, bio);
1415
1416                 /*
1417                  * We do limited plugging. If the bio can be merged, do that.
1418                  * Otherwise the existing request in the plug list will be
1419                  * issued. So the plug list will have one request at most
1420                  */
1421                 if (plug) {
1422                         /*
1423                          * The plug list might get flushed before this. If that
1424                          * happens, same_queue_rq is invalid and plug list is
1425                          * empty
1426                          */
1427                         if (same_queue_rq && !list_empty(&plug->mq_list)) {
1428                                 old_rq = same_queue_rq;
1429                                 list_del_init(&old_rq->queuelist);
1430                         }
1431                         list_add_tail(&rq->queuelist, &plug->mq_list);
1432                 } else /* is_sync */
1433                         old_rq = rq;
1434                 blk_mq_put_ctx(data.ctx);
1435                 if (!old_rq)
1436                         goto done;
1437
1438                 if (!(data.hctx->flags & BLK_MQ_F_BLOCKING)) {
1439                         rcu_read_lock();
1440                         blk_mq_try_issue_directly(old_rq, &cookie);
1441                         rcu_read_unlock();
1442                 } else {
1443                         srcu_idx = srcu_read_lock(&data.hctx->queue_rq_srcu);
1444                         blk_mq_try_issue_directly(old_rq, &cookie);
1445                         srcu_read_unlock(&data.hctx->queue_rq_srcu, srcu_idx);
1446                 }
1447                 goto done;
1448         }
1449
1450         if (!blk_mq_merge_queue_io(data.hctx, data.ctx, rq, bio)) {
1451                 /*
1452                  * For a SYNC request, send it to the hardware immediately. For
1453                  * an ASYNC request, just ensure that we run it later on. The
1454                  * latter allows for merging opportunities and more efficient
1455                  * dispatching.
1456                  */
1457 run_queue:
1458                 blk_mq_run_hw_queue(data.hctx, !is_sync || is_flush_fua);
1459         }
1460         blk_mq_put_ctx(data.ctx);
1461 done:
1462         return cookie;
1463 }
1464
1465 /*
1466  * Single hardware queue variant. This will attempt to use any per-process
1467  * plug for merging and IO deferral.
1468  */
1469 static blk_qc_t blk_sq_make_request(struct request_queue *q, struct bio *bio)
1470 {
1471         const int is_sync = op_is_sync(bio->bi_opf);
1472         const int is_flush_fua = bio->bi_opf & (REQ_PREFLUSH | REQ_FUA);
1473         struct blk_plug *plug;
1474         unsigned int request_count = 0;
1475         struct blk_mq_alloc_data data;
1476         struct request *rq;
1477         blk_qc_t cookie;
1478         unsigned int wb_acct;
1479
1480         blk_queue_bounce(q, &bio);
1481
1482         if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
1483                 bio_io_error(bio);
1484                 return BLK_QC_T_NONE;
1485         }
1486
1487         blk_queue_split(q, &bio, q->bio_split);
1488
1489         if (!is_flush_fua && !blk_queue_nomerges(q)) {
1490                 if (blk_attempt_plug_merge(q, bio, &request_count, NULL))
1491                         return BLK_QC_T_NONE;
1492         } else
1493                 request_count = blk_plug_queued_count(q);
1494
1495         wb_acct = wbt_wait(q->rq_wb, bio, NULL);
1496
1497         rq = blk_mq_map_request(q, bio, &data);
1498         if (unlikely(!rq)) {
1499                 __wbt_done(q->rq_wb, wb_acct);
1500                 return BLK_QC_T_NONE;
1501         }
1502
1503         wbt_track(&rq->issue_stat, wb_acct);
1504
1505         cookie = request_to_qc_t(data.hctx, rq);
1506
1507         if (unlikely(is_flush_fua)) {
1508                 blk_mq_bio_to_request(rq, bio);
1509                 blk_insert_flush(rq);
1510                 goto run_queue;
1511         }
1512
1513         /*
1514          * A task plug currently exists. Since this is completely lockless,
1515          * utilize that to temporarily store requests until the task is
1516          * either done or scheduled away.
1517          */
1518         plug = current->plug;
1519         if (plug) {
1520                 struct request *last = NULL;
1521
1522                 blk_mq_bio_to_request(rq, bio);
1523
1524                 /*
1525                  * @request_count may become stale because of schedule
1526                  * out, so check the list again.
1527                  */
1528                 if (list_empty(&plug->mq_list))
1529                         request_count = 0;
1530                 if (!request_count)
1531                         trace_block_plug(q);
1532                 else
1533                         last = list_entry_rq(plug->mq_list.prev);
1534
1535                 blk_mq_put_ctx(data.ctx);
1536
1537                 if (request_count >= BLK_MAX_REQUEST_COUNT || (last &&
1538                     blk_rq_bytes(last) >= BLK_PLUG_FLUSH_SIZE)) {
1539                         blk_flush_plug_list(plug, false);
1540                         trace_block_plug(q);
1541                 }
1542
1543                 list_add_tail(&rq->queuelist, &plug->mq_list);
1544                 return cookie;
1545         }
1546
1547         if (!blk_mq_merge_queue_io(data.hctx, data.ctx, rq, bio)) {
1548                 /*
1549                  * For a SYNC request, send it to the hardware immediately. For
1550                  * an ASYNC request, just ensure that we run it later on. The
1551                  * latter allows for merging opportunities and more efficient
1552                  * dispatching.
1553                  */
1554 run_queue:
1555                 blk_mq_run_hw_queue(data.hctx, !is_sync || is_flush_fua);
1556         }
1557
1558         blk_mq_put_ctx(data.ctx);
1559         return cookie;
1560 }
1561
1562 void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
1563                      unsigned int hctx_idx)
1564 {
1565         struct page *page;
1566
1567         if (tags->rqs && set->ops->exit_request) {
1568                 int i;
1569
1570                 for (i = 0; i < tags->nr_tags; i++) {
1571                         struct request *rq = tags->static_rqs[i];
1572
1573                         if (!rq)
1574                                 continue;
1575                         set->ops->exit_request(set->driver_data, rq,
1576                                                 hctx_idx, i);
1577                         tags->static_rqs[i] = NULL;
1578                 }
1579         }
1580
1581         while (!list_empty(&tags->page_list)) {
1582                 page = list_first_entry(&tags->page_list, struct page, lru);
1583                 list_del_init(&page->lru);
1584                 /*
1585                  * Remove kmemleak object previously allocated in
1586                  * blk_mq_init_rq_map().
1587                  */
1588                 kmemleak_free(page_address(page));
1589                 __free_pages(page, page->private);
1590         }
1591 }
1592
1593 void blk_mq_free_rq_map(struct blk_mq_tags *tags)
1594 {
1595         kfree(tags->rqs);
1596         tags->rqs = NULL;
1597         kfree(tags->static_rqs);
1598         tags->static_rqs = NULL;
1599
1600         blk_mq_free_tags(tags);
1601 }
1602
1603 struct blk_mq_tags *blk_mq_alloc_rq_map(struct blk_mq_tag_set *set,
1604                                         unsigned int hctx_idx,
1605                                         unsigned int nr_tags,
1606                                         unsigned int reserved_tags)
1607 {
1608         struct blk_mq_tags *tags;
1609
1610         tags = blk_mq_init_tags(nr_tags, reserved_tags,
1611                                 set->numa_node,
1612                                 BLK_MQ_FLAG_TO_ALLOC_POLICY(set->flags));
1613         if (!tags)
1614                 return NULL;
1615
1616         tags->rqs = kzalloc_node(nr_tags * sizeof(struct request *),
1617                                  GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
1618                                  set->numa_node);
1619         if (!tags->rqs) {
1620                 blk_mq_free_tags(tags);
1621                 return NULL;
1622         }
1623
1624         tags->static_rqs = kzalloc_node(nr_tags * sizeof(struct request *),
1625                                  GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
1626                                  set->numa_node);
1627         if (!tags->static_rqs) {
1628                 kfree(tags->rqs);
1629                 blk_mq_free_tags(tags);
1630                 return NULL;
1631         }
1632
1633         return tags;
1634 }
1635
1636 static size_t order_to_size(unsigned int order)
1637 {
1638         return (size_t)PAGE_SIZE << order;
1639 }
1640
1641 int blk_mq_alloc_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
1642                      unsigned int hctx_idx, unsigned int depth)
1643 {
1644         unsigned int i, j, entries_per_page, max_order = 4;
1645         size_t rq_size, left;
1646
1647         INIT_LIST_HEAD(&tags->page_list);
1648
1649         /*
1650          * rq_size is the size of the request plus driver payload, rounded
1651          * to the cacheline size
1652          */
1653         rq_size = round_up(sizeof(struct request) + set->cmd_size,
1654                                 cache_line_size());
1655         left = rq_size * depth;
1656
1657         for (i = 0; i < depth; ) {
1658                 int this_order = max_order;
1659                 struct page *page;
1660                 int to_do;
1661                 void *p;
1662
1663                 while (this_order && left < order_to_size(this_order - 1))
1664                         this_order--;
1665
1666                 do {
1667                         page = alloc_pages_node(set->numa_node,
1668                                 GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY | __GFP_ZERO,
1669                                 this_order);
1670                         if (page)
1671                                 break;
1672                         if (!this_order--)
1673                                 break;
1674                         if (order_to_size(this_order) < rq_size)
1675                                 break;
1676                 } while (1);
1677
1678                 if (!page)
1679                         goto fail;
1680
1681                 page->private = this_order;
1682                 list_add_tail(&page->lru, &tags->page_list);
1683
1684                 p = page_address(page);
1685                 /*
1686                  * Allow kmemleak to scan these pages as they contain pointers
1687                  * to additional allocations like via ops->init_request().
1688                  */
1689                 kmemleak_alloc(p, order_to_size(this_order), 1, GFP_NOIO);
1690                 entries_per_page = order_to_size(this_order) / rq_size;
1691                 to_do = min(entries_per_page, depth - i);
1692                 left -= to_do * rq_size;
1693                 for (j = 0; j < to_do; j++) {
1694                         struct request *rq = p;
1695
1696                         tags->static_rqs[i] = rq;
1697                         if (set->ops->init_request) {
1698                                 if (set->ops->init_request(set->driver_data,
1699                                                 rq, hctx_idx, i,
1700                                                 set->numa_node)) {
1701                                         tags->static_rqs[i] = NULL;
1702                                         goto fail;
1703                                 }
1704                         }
1705
1706                         p += rq_size;
1707                         i++;
1708                 }
1709         }
1710         return 0;
1711
1712 fail:
1713         blk_mq_free_rqs(set, tags, hctx_idx);
1714         return -ENOMEM;
1715 }
1716
1717 /*
1718  * 'cpu' is going away. splice any existing rq_list entries from this
1719  * software queue to the hw queue dispatch list, and ensure that it
1720  * gets run.
1721  */
1722 static int blk_mq_hctx_notify_dead(unsigned int cpu, struct hlist_node *node)
1723 {
1724         struct blk_mq_hw_ctx *hctx;
1725         struct blk_mq_ctx *ctx;
1726         LIST_HEAD(tmp);
1727
1728         hctx = hlist_entry_safe(node, struct blk_mq_hw_ctx, cpuhp_dead);
1729         ctx = __blk_mq_get_ctx(hctx->queue, cpu);
1730
1731         spin_lock(&ctx->lock);
1732         if (!list_empty(&ctx->rq_list)) {
1733                 list_splice_init(&ctx->rq_list, &tmp);
1734                 blk_mq_hctx_clear_pending(hctx, ctx);
1735         }
1736         spin_unlock(&ctx->lock);
1737
1738         if (list_empty(&tmp))
1739                 return 0;
1740
1741         spin_lock(&hctx->lock);
1742         list_splice_tail_init(&tmp, &hctx->dispatch);
1743         spin_unlock(&hctx->lock);
1744
1745         blk_mq_run_hw_queue(hctx, true);
1746         return 0;
1747 }
1748
1749 static void blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx)
1750 {
1751         cpuhp_state_remove_instance_nocalls(CPUHP_BLK_MQ_DEAD,
1752                                             &hctx->cpuhp_dead);
1753 }
1754
1755 /* hctx->ctxs will be freed in queue's release handler */
1756 static void blk_mq_exit_hctx(struct request_queue *q,
1757                 struct blk_mq_tag_set *set,
1758                 struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx)
1759 {
1760         unsigned flush_start_tag = set->queue_depth;
1761
1762         blk_mq_tag_idle(hctx);
1763
1764         if (set->ops->exit_request)
1765                 set->ops->exit_request(set->driver_data,
1766                                        hctx->fq->flush_rq, hctx_idx,
1767                                        flush_start_tag + hctx_idx);
1768
1769         if (set->ops->exit_hctx)
1770                 set->ops->exit_hctx(hctx, hctx_idx);
1771
1772         if (hctx->flags & BLK_MQ_F_BLOCKING)
1773                 cleanup_srcu_struct(&hctx->queue_rq_srcu);
1774
1775         blk_mq_remove_cpuhp(hctx);
1776         blk_free_flush_queue(hctx->fq);
1777         sbitmap_free(&hctx->ctx_map);
1778 }
1779
1780 static void blk_mq_exit_hw_queues(struct request_queue *q,
1781                 struct blk_mq_tag_set *set, int nr_queue)
1782 {
1783         struct blk_mq_hw_ctx *hctx;
1784         unsigned int i;
1785
1786         queue_for_each_hw_ctx(q, hctx, i) {
1787                 if (i == nr_queue)
1788                         break;
1789                 blk_mq_exit_hctx(q, set, hctx, i);
1790         }
1791 }
1792
1793 static void blk_mq_free_hw_queues(struct request_queue *q,
1794                 struct blk_mq_tag_set *set)
1795 {
1796         struct blk_mq_hw_ctx *hctx;
1797         unsigned int i;
1798
1799         queue_for_each_hw_ctx(q, hctx, i)
1800                 free_cpumask_var(hctx->cpumask);
1801 }
1802
1803 static int blk_mq_init_hctx(struct request_queue *q,
1804                 struct blk_mq_tag_set *set,
1805                 struct blk_mq_hw_ctx *hctx, unsigned hctx_idx)
1806 {
1807         int node;
1808         unsigned flush_start_tag = set->queue_depth;
1809
1810         node = hctx->numa_node;
1811         if (node == NUMA_NO_NODE)
1812                 node = hctx->numa_node = set->numa_node;
1813
1814         INIT_WORK(&hctx->run_work, blk_mq_run_work_fn);
1815         INIT_DELAYED_WORK(&hctx->delay_work, blk_mq_delay_work_fn);
1816         spin_lock_init(&hctx->lock);
1817         INIT_LIST_HEAD(&hctx->dispatch);
1818         hctx->queue = q;
1819         hctx->queue_num = hctx_idx;
1820         hctx->flags = set->flags & ~BLK_MQ_F_TAG_SHARED;
1821
1822         cpuhp_state_add_instance_nocalls(CPUHP_BLK_MQ_DEAD, &hctx->cpuhp_dead);
1823
1824         hctx->tags = set->tags[hctx_idx];
1825
1826         /*
1827          * Allocate space for all possible cpus to avoid allocation at
1828          * runtime
1829          */
1830         hctx->ctxs = kmalloc_node(nr_cpu_ids * sizeof(void *),
1831                                         GFP_KERNEL, node);
1832         if (!hctx->ctxs)
1833                 goto unregister_cpu_notifier;
1834
1835         if (sbitmap_init_node(&hctx->ctx_map, nr_cpu_ids, ilog2(8), GFP_KERNEL,
1836                               node))
1837                 goto free_ctxs;
1838
1839         hctx->nr_ctx = 0;
1840
1841         if (set->ops->init_hctx &&
1842             set->ops->init_hctx(hctx, set->driver_data, hctx_idx))
1843                 goto free_bitmap;
1844
1845         hctx->fq = blk_alloc_flush_queue(q, hctx->numa_node, set->cmd_size);
1846         if (!hctx->fq)
1847                 goto exit_hctx;
1848
1849         if (set->ops->init_request &&
1850             set->ops->init_request(set->driver_data,
1851                                    hctx->fq->flush_rq, hctx_idx,
1852                                    flush_start_tag + hctx_idx, node))
1853                 goto free_fq;
1854
1855         if (hctx->flags & BLK_MQ_F_BLOCKING)
1856                 init_srcu_struct(&hctx->queue_rq_srcu);
1857
1858         return 0;
1859
1860  free_fq:
1861         kfree(hctx->fq);
1862  exit_hctx:
1863         if (set->ops->exit_hctx)
1864                 set->ops->exit_hctx(hctx, hctx_idx);
1865  free_bitmap:
1866         sbitmap_free(&hctx->ctx_map);
1867  free_ctxs:
1868         kfree(hctx->ctxs);
1869  unregister_cpu_notifier:
1870         blk_mq_remove_cpuhp(hctx);
1871         return -1;
1872 }
1873
1874 static void blk_mq_init_cpu_queues(struct request_queue *q,
1875                                    unsigned int nr_hw_queues)
1876 {
1877         unsigned int i;
1878
1879         for_each_possible_cpu(i) {
1880                 struct blk_mq_ctx *__ctx = per_cpu_ptr(q->queue_ctx, i);
1881                 struct blk_mq_hw_ctx *hctx;
1882
1883                 memset(__ctx, 0, sizeof(*__ctx));
1884                 __ctx->cpu = i;
1885                 spin_lock_init(&__ctx->lock);
1886                 INIT_LIST_HEAD(&__ctx->rq_list);
1887                 __ctx->queue = q;
1888                 blk_stat_init(&__ctx->stat[BLK_STAT_READ]);
1889                 blk_stat_init(&__ctx->stat[BLK_STAT_WRITE]);
1890
1891                 /* If the cpu isn't online, the cpu is mapped to first hctx */
1892                 if (!cpu_online(i))
1893                         continue;
1894
1895                 hctx = blk_mq_map_queue(q, i);
1896
1897                 /*
1898                  * Set local node, IFF we have more than one hw queue. If
1899                  * not, we remain on the home node of the device
1900                  */
1901                 if (nr_hw_queues > 1 && hctx->numa_node == NUMA_NO_NODE)
1902                         hctx->numa_node = local_memory_node(cpu_to_node(i));
1903         }
1904 }
1905
1906 static bool __blk_mq_alloc_rq_map(struct blk_mq_tag_set *set, int hctx_idx)
1907 {
1908         int ret = 0;
1909
1910         set->tags[hctx_idx] = blk_mq_alloc_rq_map(set, hctx_idx,
1911                                         set->queue_depth, set->reserved_tags);
1912         if (!set->tags[hctx_idx])
1913                 return false;
1914
1915         ret = blk_mq_alloc_rqs(set, set->tags[hctx_idx], hctx_idx,
1916                                 set->queue_depth);
1917         if (!ret)
1918                 return true;
1919
1920         blk_mq_free_rq_map(set->tags[hctx_idx]);
1921         set->tags[hctx_idx] = NULL;
1922         return false;
1923 }
1924
1925 static void blk_mq_free_map_and_requests(struct blk_mq_tag_set *set,
1926                                          unsigned int hctx_idx)
1927 {
1928         blk_mq_free_rqs(set, set->tags[hctx_idx], hctx_idx);
1929         blk_mq_free_rq_map(set->tags[hctx_idx]);
1930         set->tags[hctx_idx] = NULL;
1931 }
1932
1933 static void blk_mq_map_swqueue(struct request_queue *q,
1934                                const struct cpumask *online_mask)
1935 {
1936         unsigned int i, hctx_idx;
1937         struct blk_mq_hw_ctx *hctx;
1938         struct blk_mq_ctx *ctx;
1939         struct blk_mq_tag_set *set = q->tag_set;
1940
1941         /*
1942          * Avoid others reading imcomplete hctx->cpumask through sysfs
1943          */
1944         mutex_lock(&q->sysfs_lock);
1945
1946         queue_for_each_hw_ctx(q, hctx, i) {
1947                 cpumask_clear(hctx->cpumask);
1948                 hctx->nr_ctx = 0;
1949         }
1950
1951         /*
1952          * Map software to hardware queues
1953          */
1954         for_each_possible_cpu(i) {
1955                 /* If the cpu isn't online, the cpu is mapped to first hctx */
1956                 if (!cpumask_test_cpu(i, online_mask))
1957                         continue;
1958
1959                 hctx_idx = q->mq_map[i];
1960                 /* unmapped hw queue can be remapped after CPU topo changed */
1961                 if (!set->tags[hctx_idx] &&
1962                     !__blk_mq_alloc_rq_map(set, hctx_idx)) {
1963                         /*
1964                          * If tags initialization fail for some hctx,
1965                          * that hctx won't be brought online.  In this
1966                          * case, remap the current ctx to hctx[0] which
1967                          * is guaranteed to always have tags allocated
1968                          */
1969                         q->mq_map[i] = 0;
1970                 }
1971
1972                 ctx = per_cpu_ptr(q->queue_ctx, i);
1973                 hctx = blk_mq_map_queue(q, i);
1974
1975                 cpumask_set_cpu(i, hctx->cpumask);
1976                 ctx->index_hw = hctx->nr_ctx;
1977                 hctx->ctxs[hctx->nr_ctx++] = ctx;
1978         }
1979
1980         mutex_unlock(&q->sysfs_lock);
1981
1982         queue_for_each_hw_ctx(q, hctx, i) {
1983                 /*
1984                  * If no software queues are mapped to this hardware queue,
1985                  * disable it and free the request entries.
1986                  */
1987                 if (!hctx->nr_ctx) {
1988                         /* Never unmap queue 0.  We need it as a
1989                          * fallback in case of a new remap fails
1990                          * allocation
1991                          */
1992                         if (i && set->tags[i])
1993                                 blk_mq_free_map_and_requests(set, i);
1994
1995                         hctx->tags = NULL;
1996                         continue;
1997                 }
1998
1999                 hctx->tags = set->tags[i];
2000                 WARN_ON(!hctx->tags);
2001
2002                 /*
2003                  * Set the map size to the number of mapped software queues.
2004                  * This is more accurate and more efficient than looping
2005                  * over all possibly mapped software queues.
2006                  */
2007                 sbitmap_resize(&hctx->ctx_map, hctx->nr_ctx);
2008
2009                 /*
2010                  * Initialize batch roundrobin counts
2011                  */
2012                 hctx->next_cpu = cpumask_first(hctx->cpumask);
2013                 hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH;
2014         }
2015 }
2016
2017 static void queue_set_hctx_shared(struct request_queue *q, bool shared)
2018 {
2019         struct blk_mq_hw_ctx *hctx;
2020         int i;
2021
2022         queue_for_each_hw_ctx(q, hctx, i) {
2023                 if (shared)
2024                         hctx->flags |= BLK_MQ_F_TAG_SHARED;
2025                 else
2026                         hctx->flags &= ~BLK_MQ_F_TAG_SHARED;
2027         }
2028 }
2029
2030 static void blk_mq_update_tag_set_depth(struct blk_mq_tag_set *set, bool shared)
2031 {
2032         struct request_queue *q;
2033
2034         list_for_each_entry(q, &set->tag_list, tag_set_list) {
2035                 blk_mq_freeze_queue(q);
2036                 queue_set_hctx_shared(q, shared);
2037                 blk_mq_unfreeze_queue(q);
2038         }
2039 }
2040
2041 static void blk_mq_del_queue_tag_set(struct request_queue *q)
2042 {
2043         struct blk_mq_tag_set *set = q->tag_set;
2044
2045         mutex_lock(&set->tag_list_lock);
2046         list_del_init(&q->tag_set_list);
2047         if (list_is_singular(&set->tag_list)) {
2048                 /* just transitioned to unshared */
2049                 set->flags &= ~BLK_MQ_F_TAG_SHARED;
2050                 /* update existing queue */
2051                 blk_mq_update_tag_set_depth(set, false);
2052         }
2053         mutex_unlock(&set->tag_list_lock);
2054 }
2055
2056 static void blk_mq_add_queue_tag_set(struct blk_mq_tag_set *set,
2057                                      struct request_queue *q)
2058 {
2059         q->tag_set = set;
2060
2061         mutex_lock(&set->tag_list_lock);
2062
2063         /* Check to see if we're transitioning to shared (from 1 to 2 queues). */
2064         if (!list_empty(&set->tag_list) && !(set->flags & BLK_MQ_F_TAG_SHARED)) {
2065                 set->flags |= BLK_MQ_F_TAG_SHARED;
2066                 /* update existing queue */
2067                 blk_mq_update_tag_set_depth(set, true);
2068         }
2069         if (set->flags & BLK_MQ_F_TAG_SHARED)
2070                 queue_set_hctx_shared(q, true);
2071         list_add_tail(&q->tag_set_list, &set->tag_list);
2072
2073         mutex_unlock(&set->tag_list_lock);
2074 }
2075
2076 /*
2077  * It is the actual release handler for mq, but we do it from
2078  * request queue's release handler for avoiding use-after-free
2079  * and headache because q->mq_kobj shouldn't have been introduced,
2080  * but we can't group ctx/kctx kobj without it.
2081  */
2082 void blk_mq_release(struct request_queue *q)
2083 {
2084         struct blk_mq_hw_ctx *hctx;
2085         unsigned int i;
2086
2087         /* hctx kobj stays in hctx */
2088         queue_for_each_hw_ctx(q, hctx, i) {
2089                 if (!hctx)
2090                         continue;
2091                 kfree(hctx->ctxs);
2092                 kfree(hctx);
2093         }
2094
2095         q->mq_map = NULL;
2096
2097         kfree(q->queue_hw_ctx);
2098
2099         /* ctx kobj stays in queue_ctx */
2100         free_percpu(q->queue_ctx);
2101 }
2102
2103 struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
2104 {
2105         struct request_queue *uninit_q, *q;
2106
2107         uninit_q = blk_alloc_queue_node(GFP_KERNEL, set->numa_node);
2108         if (!uninit_q)
2109                 return ERR_PTR(-ENOMEM);
2110
2111         q = blk_mq_init_allocated_queue(set, uninit_q);
2112         if (IS_ERR(q))
2113                 blk_cleanup_queue(uninit_q);
2114
2115         return q;
2116 }
2117 EXPORT_SYMBOL(blk_mq_init_queue);
2118
2119 static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
2120                                                 struct request_queue *q)
2121 {
2122         int i, j;
2123         struct blk_mq_hw_ctx **hctxs = q->queue_hw_ctx;
2124
2125         blk_mq_sysfs_unregister(q);
2126         for (i = 0; i < set->nr_hw_queues; i++) {
2127                 int node;
2128
2129                 if (hctxs[i])
2130                         continue;
2131
2132                 node = blk_mq_hw_queue_to_node(q->mq_map, i);
2133                 hctxs[i] = kzalloc_node(sizeof(struct blk_mq_hw_ctx),
2134                                         GFP_KERNEL, node);
2135                 if (!hctxs[i])
2136                         break;
2137
2138                 if (!zalloc_cpumask_var_node(&hctxs[i]->cpumask, GFP_KERNEL,
2139                                                 node)) {
2140                         kfree(hctxs[i]);
2141                         hctxs[i] = NULL;
2142                         break;
2143                 }
2144
2145                 atomic_set(&hctxs[i]->nr_active, 0);
2146                 hctxs[i]->numa_node = node;
2147                 hctxs[i]->queue_num = i;
2148
2149                 if (blk_mq_init_hctx(q, set, hctxs[i], i)) {
2150                         free_cpumask_var(hctxs[i]->cpumask);
2151                         kfree(hctxs[i]);
2152                         hctxs[i] = NULL;
2153                         break;
2154                 }
2155                 blk_mq_hctx_kobj_init(hctxs[i]);
2156         }
2157         for (j = i; j < q->nr_hw_queues; j++) {
2158                 struct blk_mq_hw_ctx *hctx = hctxs[j];
2159
2160                 if (hctx) {
2161                         if (hctx->tags)
2162                                 blk_mq_free_map_and_requests(set, j);
2163                         blk_mq_exit_hctx(q, set, hctx, j);
2164                         free_cpumask_var(hctx->cpumask);
2165                         kobject_put(&hctx->kobj);
2166                         kfree(hctx->ctxs);
2167                         kfree(hctx);
2168                         hctxs[j] = NULL;
2169
2170                 }
2171         }
2172         q->nr_hw_queues = i;
2173         blk_mq_sysfs_register(q);
2174 }
2175
2176 struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
2177                                                   struct request_queue *q)
2178 {
2179         /* mark the queue as mq asap */
2180         q->mq_ops = set->ops;
2181
2182         q->queue_ctx = alloc_percpu(struct blk_mq_ctx);
2183         if (!q->queue_ctx)
2184                 goto err_exit;
2185
2186         q->queue_hw_ctx = kzalloc_node(nr_cpu_ids * sizeof(*(q->queue_hw_ctx)),
2187                                                 GFP_KERNEL, set->numa_node);
2188         if (!q->queue_hw_ctx)
2189                 goto err_percpu;
2190
2191         q->mq_map = set->mq_map;
2192
2193         blk_mq_realloc_hw_ctxs(set, q);
2194         if (!q->nr_hw_queues)
2195                 goto err_hctxs;
2196
2197         INIT_WORK(&q->timeout_work, blk_mq_timeout_work);
2198         blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ);
2199
2200         q->nr_queues = nr_cpu_ids;
2201
2202         q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT;
2203
2204         if (!(set->flags & BLK_MQ_F_SG_MERGE))
2205                 q->queue_flags |= 1 << QUEUE_FLAG_NO_SG_MERGE;
2206
2207         q->sg_reserved_size = INT_MAX;
2208
2209         INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work);
2210         INIT_LIST_HEAD(&q->requeue_list);
2211         spin_lock_init(&q->requeue_lock);
2212
2213         if (q->nr_hw_queues > 1)
2214                 blk_queue_make_request(q, blk_mq_make_request);
2215         else
2216                 blk_queue_make_request(q, blk_sq_make_request);
2217
2218         /*
2219          * Do this after blk_queue_make_request() overrides it...
2220          */
2221         q->nr_requests = set->queue_depth;
2222
2223         /*
2224          * Default to classic polling
2225          */
2226         q->poll_nsec = -1;
2227
2228         if (set->ops->complete)
2229                 blk_queue_softirq_done(q, set->ops->complete);
2230
2231         blk_mq_init_cpu_queues(q, set->nr_hw_queues);
2232
2233         get_online_cpus();
2234         mutex_lock(&all_q_mutex);
2235
2236         list_add_tail(&q->all_q_node, &all_q_list);
2237         blk_mq_add_queue_tag_set(set, q);
2238         blk_mq_map_swqueue(q, cpu_online_mask);
2239
2240         mutex_unlock(&all_q_mutex);
2241         put_online_cpus();
2242
2243         return q;
2244
2245 err_hctxs:
2246         kfree(q->queue_hw_ctx);
2247 err_percpu:
2248         free_percpu(q->queue_ctx);
2249 err_exit:
2250         q->mq_ops = NULL;
2251         return ERR_PTR(-ENOMEM);
2252 }
2253 EXPORT_SYMBOL(blk_mq_init_allocated_queue);
2254
2255 void blk_mq_free_queue(struct request_queue *q)
2256 {
2257         struct blk_mq_tag_set   *set = q->tag_set;
2258
2259         mutex_lock(&all_q_mutex);
2260         list_del_init(&q->all_q_node);
2261         mutex_unlock(&all_q_mutex);
2262
2263         wbt_exit(q);
2264
2265         blk_mq_del_queue_tag_set(q);
2266
2267         blk_mq_exit_hw_queues(q, set, set->nr_hw_queues);
2268         blk_mq_free_hw_queues(q, set);
2269 }
2270
2271 /* Basically redo blk_mq_init_queue with queue frozen */
2272 static void blk_mq_queue_reinit(struct request_queue *q,
2273                                 const struct cpumask *online_mask)
2274 {
2275         WARN_ON_ONCE(!atomic_read(&q->mq_freeze_depth));
2276
2277         blk_mq_sysfs_unregister(q);
2278
2279         /*
2280          * redo blk_mq_init_cpu_queues and blk_mq_init_hw_queues. FIXME: maybe
2281          * we should change hctx numa_node according to new topology (this
2282          * involves free and re-allocate memory, worthy doing?)
2283          */
2284
2285         blk_mq_map_swqueue(q, online_mask);
2286
2287         blk_mq_sysfs_register(q);
2288 }
2289
2290 /*
2291  * New online cpumask which is going to be set in this hotplug event.
2292  * Declare this cpumasks as global as cpu-hotplug operation is invoked
2293  * one-by-one and dynamically allocating this could result in a failure.
2294  */
2295 static struct cpumask cpuhp_online_new;
2296
2297 static void blk_mq_queue_reinit_work(void)
2298 {
2299         struct request_queue *q;
2300
2301         mutex_lock(&all_q_mutex);
2302         /*
2303          * We need to freeze and reinit all existing queues.  Freezing
2304          * involves synchronous wait for an RCU grace period and doing it
2305          * one by one may take a long time.  Start freezing all queues in
2306          * one swoop and then wait for the completions so that freezing can
2307          * take place in parallel.
2308          */
2309         list_for_each_entry(q, &all_q_list, all_q_node)
2310                 blk_mq_freeze_queue_start(q);
2311         list_for_each_entry(q, &all_q_list, all_q_node)
2312                 blk_mq_freeze_queue_wait(q);
2313
2314         list_for_each_entry(q, &all_q_list, all_q_node)
2315                 blk_mq_queue_reinit(q, &cpuhp_online_new);
2316
2317         list_for_each_entry(q, &all_q_list, all_q_node)
2318                 blk_mq_unfreeze_queue(q);
2319
2320         mutex_unlock(&all_q_mutex);
2321 }
2322
2323 static int blk_mq_queue_reinit_dead(unsigned int cpu)
2324 {
2325         cpumask_copy(&cpuhp_online_new, cpu_online_mask);
2326         blk_mq_queue_reinit_work();
2327         return 0;
2328 }
2329
2330 /*
2331  * Before hotadded cpu starts handling requests, new mappings must be
2332  * established.  Otherwise, these requests in hw queue might never be
2333  * dispatched.
2334  *
2335  * For example, there is a single hw queue (hctx) and two CPU queues (ctx0
2336  * for CPU0, and ctx1 for CPU1).
2337  *
2338  * Now CPU1 is just onlined and a request is inserted into ctx1->rq_list
2339  * and set bit0 in pending bitmap as ctx1->index_hw is still zero.
2340  *
2341  * And then while running hw queue, blk_mq_flush_busy_ctxs() finds bit0 is set
2342  * in pending bitmap and tries to retrieve requests in hctx->ctxs[0]->rq_list.
2343  * But htx->ctxs[0] is a pointer to ctx0, so the request in ctx1->rq_list is
2344  * ignored.
2345  */
2346 static int blk_mq_queue_reinit_prepare(unsigned int cpu)
2347 {
2348         cpumask_copy(&cpuhp_online_new, cpu_online_mask);
2349         cpumask_set_cpu(cpu, &cpuhp_online_new);
2350         blk_mq_queue_reinit_work();
2351         return 0;
2352 }
2353
2354 static int __blk_mq_alloc_rq_maps(struct blk_mq_tag_set *set)
2355 {
2356         int i;
2357
2358         for (i = 0; i < set->nr_hw_queues; i++)
2359                 if (!__blk_mq_alloc_rq_map(set, i))
2360                         goto out_unwind;
2361
2362         return 0;
2363
2364 out_unwind:
2365         while (--i >= 0)
2366                 blk_mq_free_rq_map(set->tags[i]);
2367
2368         return -ENOMEM;
2369 }
2370
2371 /*
2372  * Allocate the request maps associated with this tag_set. Note that this
2373  * may reduce the depth asked for, if memory is tight. set->queue_depth
2374  * will be updated to reflect the allocated depth.
2375  */
2376 static int blk_mq_alloc_rq_maps(struct blk_mq_tag_set *set)
2377 {
2378         unsigned int depth;
2379         int err;
2380
2381         depth = set->queue_depth;
2382         do {
2383                 err = __blk_mq_alloc_rq_maps(set);
2384                 if (!err)
2385                         break;
2386
2387                 set->queue_depth >>= 1;
2388                 if (set->queue_depth < set->reserved_tags + BLK_MQ_TAG_MIN) {
2389                         err = -ENOMEM;
2390                         break;
2391                 }
2392         } while (set->queue_depth);
2393
2394         if (!set->queue_depth || err) {
2395                 pr_err("blk-mq: failed to allocate request map\n");
2396                 return -ENOMEM;
2397         }
2398
2399         if (depth != set->queue_depth)
2400                 pr_info("blk-mq: reduced tag depth (%u -> %u)\n",
2401                                                 depth, set->queue_depth);
2402
2403         return 0;
2404 }
2405
2406 /*
2407  * Alloc a tag set to be associated with one or more request queues.
2408  * May fail with EINVAL for various error conditions. May adjust the
2409  * requested depth down, if if it too large. In that case, the set
2410  * value will be stored in set->queue_depth.
2411  */
2412 int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set)
2413 {
2414         int ret;
2415
2416         BUILD_BUG_ON(BLK_MQ_MAX_DEPTH > 1 << BLK_MQ_UNIQUE_TAG_BITS);
2417
2418         if (!set->nr_hw_queues)
2419                 return -EINVAL;
2420         if (!set->queue_depth)
2421                 return -EINVAL;
2422         if (set->queue_depth < set->reserved_tags + BLK_MQ_TAG_MIN)
2423                 return -EINVAL;
2424
2425         if (!set->ops->queue_rq)
2426                 return -EINVAL;
2427
2428         if (set->queue_depth > BLK_MQ_MAX_DEPTH) {
2429                 pr_info("blk-mq: reduced tag depth to %u\n",
2430                         BLK_MQ_MAX_DEPTH);
2431                 set->queue_depth = BLK_MQ_MAX_DEPTH;
2432         }
2433
2434         /*
2435          * If a crashdump is active, then we are potentially in a very
2436          * memory constrained environment. Limit us to 1 queue and
2437          * 64 tags to prevent using too much memory.
2438          */
2439         if (is_kdump_kernel()) {
2440                 set->nr_hw_queues = 1;
2441                 set->queue_depth = min(64U, set->queue_depth);
2442         }
2443         /*
2444          * There is no use for more h/w queues than cpus.
2445          */
2446         if (set->nr_hw_queues > nr_cpu_ids)
2447                 set->nr_hw_queues = nr_cpu_ids;
2448
2449         set->tags = kzalloc_node(nr_cpu_ids * sizeof(struct blk_mq_tags *),
2450                                  GFP_KERNEL, set->numa_node);
2451         if (!set->tags)
2452                 return -ENOMEM;
2453
2454         ret = -ENOMEM;
2455         set->mq_map = kzalloc_node(sizeof(*set->mq_map) * nr_cpu_ids,
2456                         GFP_KERNEL, set->numa_node);
2457         if (!set->mq_map)
2458                 goto out_free_tags;
2459
2460         if (set->ops->map_queues)
2461                 ret = set->ops->map_queues(set);
2462         else
2463                 ret = blk_mq_map_queues(set);
2464         if (ret)
2465                 goto out_free_mq_map;
2466
2467         ret = blk_mq_alloc_rq_maps(set);
2468         if (ret)
2469                 goto out_free_mq_map;
2470
2471         mutex_init(&set->tag_list_lock);
2472         INIT_LIST_HEAD(&set->tag_list);
2473
2474         return 0;
2475
2476 out_free_mq_map:
2477         kfree(set->mq_map);
2478         set->mq_map = NULL;
2479 out_free_tags:
2480         kfree(set->tags);
2481         set->tags = NULL;
2482         return ret;
2483 }
2484 EXPORT_SYMBOL(blk_mq_alloc_tag_set);
2485
2486 void blk_mq_free_tag_set(struct blk_mq_tag_set *set)
2487 {
2488         int i;
2489
2490         for (i = 0; i < nr_cpu_ids; i++)
2491                 blk_mq_free_map_and_requests(set, i);
2492
2493         kfree(set->mq_map);
2494         set->mq_map = NULL;
2495
2496         kfree(set->tags);
2497         set->tags = NULL;
2498 }
2499 EXPORT_SYMBOL(blk_mq_free_tag_set);
2500
2501 int blk_mq_update_nr_requests(struct request_queue *q, unsigned int nr)
2502 {
2503         struct blk_mq_tag_set *set = q->tag_set;
2504         struct blk_mq_hw_ctx *hctx;
2505         int i, ret;
2506
2507         if (!set || nr > set->queue_depth)
2508                 return -EINVAL;
2509
2510         ret = 0;
2511         queue_for_each_hw_ctx(q, hctx, i) {
2512                 if (!hctx->tags)
2513                         continue;
2514                 ret = blk_mq_tag_update_depth(hctx->tags, nr);
2515                 if (ret)
2516                         break;
2517         }
2518
2519         if (!ret)
2520                 q->nr_requests = nr;
2521
2522         return ret;
2523 }
2524
2525 void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues)
2526 {
2527         struct request_queue *q;
2528
2529         if (nr_hw_queues > nr_cpu_ids)
2530                 nr_hw_queues = nr_cpu_ids;
2531         if (nr_hw_queues < 1 || nr_hw_queues == set->nr_hw_queues)
2532                 return;
2533
2534         list_for_each_entry(q, &set->tag_list, tag_set_list)
2535                 blk_mq_freeze_queue(q);
2536
2537         set->nr_hw_queues = nr_hw_queues;
2538         list_for_each_entry(q, &set->tag_list, tag_set_list) {
2539                 blk_mq_realloc_hw_ctxs(set, q);
2540
2541                 if (q->nr_hw_queues > 1)
2542                         blk_queue_make_request(q, blk_mq_make_request);
2543                 else
2544                         blk_queue_make_request(q, blk_sq_make_request);
2545
2546                 blk_mq_queue_reinit(q, cpu_online_mask);
2547         }
2548
2549         list_for_each_entry(q, &set->tag_list, tag_set_list)
2550                 blk_mq_unfreeze_queue(q);
2551 }
2552 EXPORT_SYMBOL_GPL(blk_mq_update_nr_hw_queues);
2553
2554 static unsigned long blk_mq_poll_nsecs(struct request_queue *q,
2555                                        struct blk_mq_hw_ctx *hctx,
2556                                        struct request *rq)
2557 {
2558         struct blk_rq_stat stat[2];
2559         unsigned long ret = 0;
2560
2561         /*
2562          * If stats collection isn't on, don't sleep but turn it on for
2563          * future users
2564          */
2565         if (!blk_stat_enable(q))
2566                 return 0;
2567
2568         /*
2569          * We don't have to do this once per IO, should optimize this
2570          * to just use the current window of stats until it changes
2571          */
2572         memset(&stat, 0, sizeof(stat));
2573         blk_hctx_stat_get(hctx, stat);
2574
2575         /*
2576          * As an optimistic guess, use half of the mean service time
2577          * for this type of request. We can (and should) make this smarter.
2578          * For instance, if the completion latencies are tight, we can
2579          * get closer than just half the mean. This is especially
2580          * important on devices where the completion latencies are longer
2581          * than ~10 usec.
2582          */
2583         if (req_op(rq) == REQ_OP_READ && stat[BLK_STAT_READ].nr_samples)
2584                 ret = (stat[BLK_STAT_READ].mean + 1) / 2;
2585         else if (req_op(rq) == REQ_OP_WRITE && stat[BLK_STAT_WRITE].nr_samples)
2586                 ret = (stat[BLK_STAT_WRITE].mean + 1) / 2;
2587
2588         return ret;
2589 }
2590
2591 static bool blk_mq_poll_hybrid_sleep(struct request_queue *q,
2592                                      struct blk_mq_hw_ctx *hctx,
2593                                      struct request *rq)
2594 {
2595         struct hrtimer_sleeper hs;
2596         enum hrtimer_mode mode;
2597         unsigned int nsecs;
2598         ktime_t kt;
2599
2600         if (test_bit(REQ_ATOM_POLL_SLEPT, &rq->atomic_flags))
2601                 return false;
2602
2603         /*
2604          * poll_nsec can be:
2605          *
2606          * -1:  don't ever hybrid sleep
2607          *  0:  use half of prev avg
2608          * >0:  use this specific value
2609          */
2610         if (q->poll_nsec == -1)
2611                 return false;
2612         else if (q->poll_nsec > 0)
2613                 nsecs = q->poll_nsec;
2614         else
2615                 nsecs = blk_mq_poll_nsecs(q, hctx, rq);
2616
2617         if (!nsecs)
2618                 return false;
2619
2620         set_bit(REQ_ATOM_POLL_SLEPT, &rq->atomic_flags);
2621
2622         /*
2623          * This will be replaced with the stats tracking code, using
2624          * 'avg_completion_time / 2' as the pre-sleep target.
2625          */
2626         kt = nsecs;
2627
2628         mode = HRTIMER_MODE_REL;
2629         hrtimer_init_on_stack(&hs.timer, CLOCK_MONOTONIC, mode);
2630         hrtimer_set_expires(&hs.timer, kt);
2631
2632         hrtimer_init_sleeper(&hs, current);
2633         do {
2634                 if (test_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags))
2635                         break;
2636                 set_current_state(TASK_UNINTERRUPTIBLE);
2637                 hrtimer_start_expires(&hs.timer, mode);
2638                 if (hs.task)
2639                         io_schedule();
2640                 hrtimer_cancel(&hs.timer);
2641                 mode = HRTIMER_MODE_ABS;
2642         } while (hs.task && !signal_pending(current));
2643
2644         __set_current_state(TASK_RUNNING);
2645         destroy_hrtimer_on_stack(&hs.timer);
2646         return true;
2647 }
2648
2649 static bool __blk_mq_poll(struct blk_mq_hw_ctx *hctx, struct request *rq)
2650 {
2651         struct request_queue *q = hctx->queue;
2652         long state;
2653
2654         /*
2655          * If we sleep, have the caller restart the poll loop to reset
2656          * the state. Like for the other success return cases, the
2657          * caller is responsible for checking if the IO completed. If
2658          * the IO isn't complete, we'll get called again and will go
2659          * straight to the busy poll loop.
2660          */
2661         if (blk_mq_poll_hybrid_sleep(q, hctx, rq))
2662                 return true;
2663
2664         hctx->poll_considered++;
2665
2666         state = current->state;
2667         while (!need_resched()) {
2668                 int ret;
2669
2670                 hctx->poll_invoked++;
2671
2672                 ret = q->mq_ops->poll(hctx, rq->tag);
2673                 if (ret > 0) {
2674                         hctx->poll_success++;
2675                         set_current_state(TASK_RUNNING);
2676                         return true;
2677                 }
2678
2679                 if (signal_pending_state(state, current))
2680                         set_current_state(TASK_RUNNING);
2681
2682                 if (current->state == TASK_RUNNING)
2683                         return true;
2684                 if (ret < 0)
2685                         break;
2686                 cpu_relax();
2687         }
2688
2689         return false;
2690 }
2691
2692 bool blk_mq_poll(struct request_queue *q, blk_qc_t cookie)
2693 {
2694         struct blk_mq_hw_ctx *hctx;
2695         struct blk_plug *plug;
2696         struct request *rq;
2697
2698         if (!q->mq_ops || !q->mq_ops->poll || !blk_qc_t_valid(cookie) ||
2699             !test_bit(QUEUE_FLAG_POLL, &q->queue_flags))
2700                 return false;
2701
2702         plug = current->plug;
2703         if (plug)
2704                 blk_flush_plug_list(plug, false);
2705
2706         hctx = q->queue_hw_ctx[blk_qc_t_to_queue_num(cookie)];
2707         rq = blk_mq_tag_to_rq(hctx->tags, blk_qc_t_to_tag(cookie));
2708
2709         return __blk_mq_poll(hctx, rq);
2710 }
2711 EXPORT_SYMBOL_GPL(blk_mq_poll);
2712
2713 void blk_mq_disable_hotplug(void)
2714 {
2715         mutex_lock(&all_q_mutex);
2716 }
2717
2718 void blk_mq_enable_hotplug(void)
2719 {
2720         mutex_unlock(&all_q_mutex);
2721 }
2722
2723 static int __init blk_mq_init(void)
2724 {
2725         cpuhp_setup_state_multi(CPUHP_BLK_MQ_DEAD, "block/mq:dead", NULL,
2726                                 blk_mq_hctx_notify_dead);
2727
2728         cpuhp_setup_state_nocalls(CPUHP_BLK_MQ_PREPARE, "block/mq:prepare",
2729                                   blk_mq_queue_reinit_prepare,
2730                                   blk_mq_queue_reinit_dead);
2731         return 0;
2732 }
2733 subsys_initcall(blk_mq_init);