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