]> asedeno.scripts.mit.edu Git - linux.git/blob - block/blk-cgroup.c
blk-cgroup: turn on psi memstall stuff
[linux.git] / block / blk-cgroup.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Common Block IO controller cgroup interface
4  *
5  * Based on ideas and code from CFQ, CFS and BFQ:
6  * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
7  *
8  * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
9  *                    Paolo Valente <paolo.valente@unimore.it>
10  *
11  * Copyright (C) 2009 Vivek Goyal <vgoyal@redhat.com>
12  *                    Nauman Rafique <nauman@google.com>
13  *
14  * For policy-specific per-blkcg data:
15  * Copyright (C) 2015 Paolo Valente <paolo.valente@unimore.it>
16  *                    Arianna Avanzini <avanzini.arianna@gmail.com>
17  */
18 #include <linux/ioprio.h>
19 #include <linux/kdev_t.h>
20 #include <linux/module.h>
21 #include <linux/sched/signal.h>
22 #include <linux/err.h>
23 #include <linux/blkdev.h>
24 #include <linux/backing-dev.h>
25 #include <linux/slab.h>
26 #include <linux/genhd.h>
27 #include <linux/delay.h>
28 #include <linux/atomic.h>
29 #include <linux/ctype.h>
30 #include <linux/blk-cgroup.h>
31 #include <linux/tracehook.h>
32 #include <linux/psi.h>
33 #include "blk.h"
34
35 #define MAX_KEY_LEN 100
36
37 /*
38  * blkcg_pol_mutex protects blkcg_policy[] and policy [de]activation.
39  * blkcg_pol_register_mutex nests outside of it and synchronizes entire
40  * policy [un]register operations including cgroup file additions /
41  * removals.  Putting cgroup file registration outside blkcg_pol_mutex
42  * allows grabbing it from cgroup callbacks.
43  */
44 static DEFINE_MUTEX(blkcg_pol_register_mutex);
45 static DEFINE_MUTEX(blkcg_pol_mutex);
46
47 struct blkcg blkcg_root;
48 EXPORT_SYMBOL_GPL(blkcg_root);
49
50 struct cgroup_subsys_state * const blkcg_root_css = &blkcg_root.css;
51
52 static struct blkcg_policy *blkcg_policy[BLKCG_MAX_POLS];
53
54 static LIST_HEAD(all_blkcgs);           /* protected by blkcg_pol_mutex */
55
56 static bool blkcg_debug_stats = false;
57
58 static bool blkcg_policy_enabled(struct request_queue *q,
59                                  const struct blkcg_policy *pol)
60 {
61         return pol && test_bit(pol->plid, q->blkcg_pols);
62 }
63
64 /**
65  * blkg_free - free a blkg
66  * @blkg: blkg to free
67  *
68  * Free @blkg which may be partially allocated.
69  */
70 static void blkg_free(struct blkcg_gq *blkg)
71 {
72         int i;
73
74         if (!blkg)
75                 return;
76
77         for (i = 0; i < BLKCG_MAX_POLS; i++)
78                 if (blkg->pd[i])
79                         blkcg_policy[i]->pd_free_fn(blkg->pd[i]);
80
81         blkg_rwstat_exit(&blkg->stat_ios);
82         blkg_rwstat_exit(&blkg->stat_bytes);
83         percpu_ref_exit(&blkg->refcnt);
84         kfree(blkg);
85 }
86
87 static void __blkg_release(struct rcu_head *rcu)
88 {
89         struct blkcg_gq *blkg = container_of(rcu, struct blkcg_gq, rcu_head);
90
91         /* release the blkcg and parent blkg refs this blkg has been holding */
92         css_put(&blkg->blkcg->css);
93         if (blkg->parent)
94                 blkg_put(blkg->parent);
95
96         wb_congested_put(blkg->wb_congested);
97
98         blkg_free(blkg);
99 }
100
101 /*
102  * A group is RCU protected, but having an rcu lock does not mean that one
103  * can access all the fields of blkg and assume these are valid.  For
104  * example, don't try to follow throtl_data and request queue links.
105  *
106  * Having a reference to blkg under an rcu allows accesses to only values
107  * local to groups like group stats and group rate limits.
108  */
109 static void blkg_release(struct percpu_ref *ref)
110 {
111         struct blkcg_gq *blkg = container_of(ref, struct blkcg_gq, refcnt);
112
113         call_rcu(&blkg->rcu_head, __blkg_release);
114 }
115
116 /**
117  * blkg_alloc - allocate a blkg
118  * @blkcg: block cgroup the new blkg is associated with
119  * @q: request_queue the new blkg is associated with
120  * @gfp_mask: allocation mask to use
121  *
122  * Allocate a new blkg assocating @blkcg and @q.
123  */
124 static struct blkcg_gq *blkg_alloc(struct blkcg *blkcg, struct request_queue *q,
125                                    gfp_t gfp_mask)
126 {
127         struct blkcg_gq *blkg;
128         int i;
129
130         /* alloc and init base part */
131         blkg = kzalloc_node(sizeof(*blkg), gfp_mask, q->node);
132         if (!blkg)
133                 return NULL;
134
135         if (percpu_ref_init(&blkg->refcnt, blkg_release, 0, gfp_mask))
136                 goto err_free;
137
138         if (blkg_rwstat_init(&blkg->stat_bytes, gfp_mask) ||
139             blkg_rwstat_init(&blkg->stat_ios, gfp_mask))
140                 goto err_free;
141
142         blkg->q = q;
143         INIT_LIST_HEAD(&blkg->q_node);
144         blkg->blkcg = blkcg;
145
146         for (i = 0; i < BLKCG_MAX_POLS; i++) {
147                 struct blkcg_policy *pol = blkcg_policy[i];
148                 struct blkg_policy_data *pd;
149
150                 if (!blkcg_policy_enabled(q, pol))
151                         continue;
152
153                 /* alloc per-policy data and attach it to blkg */
154                 pd = pol->pd_alloc_fn(gfp_mask, q->node);
155                 if (!pd)
156                         goto err_free;
157
158                 blkg->pd[i] = pd;
159                 pd->blkg = blkg;
160                 pd->plid = i;
161         }
162
163         return blkg;
164
165 err_free:
166         blkg_free(blkg);
167         return NULL;
168 }
169
170 struct blkcg_gq *blkg_lookup_slowpath(struct blkcg *blkcg,
171                                       struct request_queue *q, bool update_hint)
172 {
173         struct blkcg_gq *blkg;
174
175         /*
176          * Hint didn't match.  Look up from the radix tree.  Note that the
177          * hint can only be updated under queue_lock as otherwise @blkg
178          * could have already been removed from blkg_tree.  The caller is
179          * responsible for grabbing queue_lock if @update_hint.
180          */
181         blkg = radix_tree_lookup(&blkcg->blkg_tree, q->id);
182         if (blkg && blkg->q == q) {
183                 if (update_hint) {
184                         lockdep_assert_held(&q->queue_lock);
185                         rcu_assign_pointer(blkcg->blkg_hint, blkg);
186                 }
187                 return blkg;
188         }
189
190         return NULL;
191 }
192 EXPORT_SYMBOL_GPL(blkg_lookup_slowpath);
193
194 /*
195  * If @new_blkg is %NULL, this function tries to allocate a new one as
196  * necessary using %GFP_NOWAIT.  @new_blkg is always consumed on return.
197  */
198 static struct blkcg_gq *blkg_create(struct blkcg *blkcg,
199                                     struct request_queue *q,
200                                     struct blkcg_gq *new_blkg)
201 {
202         struct blkcg_gq *blkg;
203         struct bdi_writeback_congested *wb_congested;
204         int i, ret;
205
206         WARN_ON_ONCE(!rcu_read_lock_held());
207         lockdep_assert_held(&q->queue_lock);
208
209         /* request_queue is dying, do not create/recreate a blkg */
210         if (blk_queue_dying(q)) {
211                 ret = -ENODEV;
212                 goto err_free_blkg;
213         }
214
215         /* blkg holds a reference to blkcg */
216         if (!css_tryget_online(&blkcg->css)) {
217                 ret = -ENODEV;
218                 goto err_free_blkg;
219         }
220
221         wb_congested = wb_congested_get_create(q->backing_dev_info,
222                                                blkcg->css.id,
223                                                GFP_NOWAIT | __GFP_NOWARN);
224         if (!wb_congested) {
225                 ret = -ENOMEM;
226                 goto err_put_css;
227         }
228
229         /* allocate */
230         if (!new_blkg) {
231                 new_blkg = blkg_alloc(blkcg, q, GFP_NOWAIT | __GFP_NOWARN);
232                 if (unlikely(!new_blkg)) {
233                         ret = -ENOMEM;
234                         goto err_put_congested;
235                 }
236         }
237         blkg = new_blkg;
238         blkg->wb_congested = wb_congested;
239
240         /* link parent */
241         if (blkcg_parent(blkcg)) {
242                 blkg->parent = __blkg_lookup(blkcg_parent(blkcg), q, false);
243                 if (WARN_ON_ONCE(!blkg->parent)) {
244                         ret = -ENODEV;
245                         goto err_put_congested;
246                 }
247                 blkg_get(blkg->parent);
248         }
249
250         /* invoke per-policy init */
251         for (i = 0; i < BLKCG_MAX_POLS; i++) {
252                 struct blkcg_policy *pol = blkcg_policy[i];
253
254                 if (blkg->pd[i] && pol->pd_init_fn)
255                         pol->pd_init_fn(blkg->pd[i]);
256         }
257
258         /* insert */
259         spin_lock(&blkcg->lock);
260         ret = radix_tree_insert(&blkcg->blkg_tree, q->id, blkg);
261         if (likely(!ret)) {
262                 hlist_add_head_rcu(&blkg->blkcg_node, &blkcg->blkg_list);
263                 list_add(&blkg->q_node, &q->blkg_list);
264
265                 for (i = 0; i < BLKCG_MAX_POLS; i++) {
266                         struct blkcg_policy *pol = blkcg_policy[i];
267
268                         if (blkg->pd[i] && pol->pd_online_fn)
269                                 pol->pd_online_fn(blkg->pd[i]);
270                 }
271         }
272         blkg->online = true;
273         spin_unlock(&blkcg->lock);
274
275         if (!ret)
276                 return blkg;
277
278         /* @blkg failed fully initialized, use the usual release path */
279         blkg_put(blkg);
280         return ERR_PTR(ret);
281
282 err_put_congested:
283         wb_congested_put(wb_congested);
284 err_put_css:
285         css_put(&blkcg->css);
286 err_free_blkg:
287         blkg_free(new_blkg);
288         return ERR_PTR(ret);
289 }
290
291 /**
292  * __blkg_lookup_create - lookup blkg, try to create one if not there
293  * @blkcg: blkcg of interest
294  * @q: request_queue of interest
295  *
296  * Lookup blkg for the @blkcg - @q pair.  If it doesn't exist, try to
297  * create one.  blkg creation is performed recursively from blkcg_root such
298  * that all non-root blkg's have access to the parent blkg.  This function
299  * should be called under RCU read lock and @q->queue_lock.
300  *
301  * Returns the blkg or the closest blkg if blkg_create() fails as it walks
302  * down from root.
303  */
304 struct blkcg_gq *__blkg_lookup_create(struct blkcg *blkcg,
305                                       struct request_queue *q)
306 {
307         struct blkcg_gq *blkg;
308
309         WARN_ON_ONCE(!rcu_read_lock_held());
310         lockdep_assert_held(&q->queue_lock);
311
312         blkg = __blkg_lookup(blkcg, q, true);
313         if (blkg)
314                 return blkg;
315
316         /*
317          * Create blkgs walking down from blkcg_root to @blkcg, so that all
318          * non-root blkgs have access to their parents.  Returns the closest
319          * blkg to the intended blkg should blkg_create() fail.
320          */
321         while (true) {
322                 struct blkcg *pos = blkcg;
323                 struct blkcg *parent = blkcg_parent(blkcg);
324                 struct blkcg_gq *ret_blkg = q->root_blkg;
325
326                 while (parent) {
327                         blkg = __blkg_lookup(parent, q, false);
328                         if (blkg) {
329                                 /* remember closest blkg */
330                                 ret_blkg = blkg;
331                                 break;
332                         }
333                         pos = parent;
334                         parent = blkcg_parent(parent);
335                 }
336
337                 blkg = blkg_create(pos, q, NULL);
338                 if (IS_ERR(blkg))
339                         return ret_blkg;
340                 if (pos == blkcg)
341                         return blkg;
342         }
343 }
344
345 /**
346  * blkg_lookup_create - find or create a blkg
347  * @blkcg: target block cgroup
348  * @q: target request_queue
349  *
350  * This looks up or creates the blkg representing the unique pair
351  * of the blkcg and the request_queue.
352  */
353 struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg,
354                                     struct request_queue *q)
355 {
356         struct blkcg_gq *blkg = blkg_lookup(blkcg, q);
357
358         if (unlikely(!blkg)) {
359                 unsigned long flags;
360
361                 spin_lock_irqsave(&q->queue_lock, flags);
362                 blkg = __blkg_lookup_create(blkcg, q);
363                 spin_unlock_irqrestore(&q->queue_lock, flags);
364         }
365
366         return blkg;
367 }
368
369 static void blkg_destroy(struct blkcg_gq *blkg)
370 {
371         struct blkcg *blkcg = blkg->blkcg;
372         struct blkcg_gq *parent = blkg->parent;
373         int i;
374
375         lockdep_assert_held(&blkg->q->queue_lock);
376         lockdep_assert_held(&blkcg->lock);
377
378         /* Something wrong if we are trying to remove same group twice */
379         WARN_ON_ONCE(list_empty(&blkg->q_node));
380         WARN_ON_ONCE(hlist_unhashed(&blkg->blkcg_node));
381
382         for (i = 0; i < BLKCG_MAX_POLS; i++) {
383                 struct blkcg_policy *pol = blkcg_policy[i];
384
385                 if (blkg->pd[i] && pol->pd_offline_fn)
386                         pol->pd_offline_fn(blkg->pd[i]);
387         }
388
389         if (parent) {
390                 blkg_rwstat_add_aux(&parent->stat_bytes, &blkg->stat_bytes);
391                 blkg_rwstat_add_aux(&parent->stat_ios, &blkg->stat_ios);
392         }
393
394         blkg->online = false;
395
396         radix_tree_delete(&blkcg->blkg_tree, blkg->q->id);
397         list_del_init(&blkg->q_node);
398         hlist_del_init_rcu(&blkg->blkcg_node);
399
400         /*
401          * Both setting lookup hint to and clearing it from @blkg are done
402          * under queue_lock.  If it's not pointing to @blkg now, it never
403          * will.  Hint assignment itself can race safely.
404          */
405         if (rcu_access_pointer(blkcg->blkg_hint) == blkg)
406                 rcu_assign_pointer(blkcg->blkg_hint, NULL);
407
408         /*
409          * Put the reference taken at the time of creation so that when all
410          * queues are gone, group can be destroyed.
411          */
412         percpu_ref_kill(&blkg->refcnt);
413 }
414
415 /**
416  * blkg_destroy_all - destroy all blkgs associated with a request_queue
417  * @q: request_queue of interest
418  *
419  * Destroy all blkgs associated with @q.
420  */
421 static void blkg_destroy_all(struct request_queue *q)
422 {
423         struct blkcg_gq *blkg, *n;
424
425         spin_lock_irq(&q->queue_lock);
426         list_for_each_entry_safe(blkg, n, &q->blkg_list, q_node) {
427                 struct blkcg *blkcg = blkg->blkcg;
428
429                 spin_lock(&blkcg->lock);
430                 blkg_destroy(blkg);
431                 spin_unlock(&blkcg->lock);
432         }
433
434         q->root_blkg = NULL;
435         spin_unlock_irq(&q->queue_lock);
436 }
437
438 static int blkcg_reset_stats(struct cgroup_subsys_state *css,
439                              struct cftype *cftype, u64 val)
440 {
441         struct blkcg *blkcg = css_to_blkcg(css);
442         struct blkcg_gq *blkg;
443         int i;
444
445         mutex_lock(&blkcg_pol_mutex);
446         spin_lock_irq(&blkcg->lock);
447
448         /*
449          * Note that stat reset is racy - it doesn't synchronize against
450          * stat updates.  This is a debug feature which shouldn't exist
451          * anyway.  If you get hit by a race, retry.
452          */
453         hlist_for_each_entry(blkg, &blkcg->blkg_list, blkcg_node) {
454                 blkg_rwstat_reset(&blkg->stat_bytes);
455                 blkg_rwstat_reset(&blkg->stat_ios);
456
457                 for (i = 0; i < BLKCG_MAX_POLS; i++) {
458                         struct blkcg_policy *pol = blkcg_policy[i];
459
460                         if (blkg->pd[i] && pol->pd_reset_stats_fn)
461                                 pol->pd_reset_stats_fn(blkg->pd[i]);
462                 }
463         }
464
465         spin_unlock_irq(&blkcg->lock);
466         mutex_unlock(&blkcg_pol_mutex);
467         return 0;
468 }
469
470 const char *blkg_dev_name(struct blkcg_gq *blkg)
471 {
472         /* some drivers (floppy) instantiate a queue w/o disk registered */
473         if (blkg->q->backing_dev_info->dev)
474                 return dev_name(blkg->q->backing_dev_info->dev);
475         return NULL;
476 }
477
478 /**
479  * blkcg_print_blkgs - helper for printing per-blkg data
480  * @sf: seq_file to print to
481  * @blkcg: blkcg of interest
482  * @prfill: fill function to print out a blkg
483  * @pol: policy in question
484  * @data: data to be passed to @prfill
485  * @show_total: to print out sum of prfill return values or not
486  *
487  * This function invokes @prfill on each blkg of @blkcg if pd for the
488  * policy specified by @pol exists.  @prfill is invoked with @sf, the
489  * policy data and @data and the matching queue lock held.  If @show_total
490  * is %true, the sum of the return values from @prfill is printed with
491  * "Total" label at the end.
492  *
493  * This is to be used to construct print functions for
494  * cftype->read_seq_string method.
495  */
496 void blkcg_print_blkgs(struct seq_file *sf, struct blkcg *blkcg,
497                        u64 (*prfill)(struct seq_file *,
498                                      struct blkg_policy_data *, int),
499                        const struct blkcg_policy *pol, int data,
500                        bool show_total)
501 {
502         struct blkcg_gq *blkg;
503         u64 total = 0;
504
505         rcu_read_lock();
506         hlist_for_each_entry_rcu(blkg, &blkcg->blkg_list, blkcg_node) {
507                 spin_lock_irq(&blkg->q->queue_lock);
508                 if (blkcg_policy_enabled(blkg->q, pol))
509                         total += prfill(sf, blkg->pd[pol->plid], data);
510                 spin_unlock_irq(&blkg->q->queue_lock);
511         }
512         rcu_read_unlock();
513
514         if (show_total)
515                 seq_printf(sf, "Total %llu\n", (unsigned long long)total);
516 }
517 EXPORT_SYMBOL_GPL(blkcg_print_blkgs);
518
519 /**
520  * __blkg_prfill_u64 - prfill helper for a single u64 value
521  * @sf: seq_file to print to
522  * @pd: policy private data of interest
523  * @v: value to print
524  *
525  * Print @v to @sf for the device assocaited with @pd.
526  */
527 u64 __blkg_prfill_u64(struct seq_file *sf, struct blkg_policy_data *pd, u64 v)
528 {
529         const char *dname = blkg_dev_name(pd->blkg);
530
531         if (!dname)
532                 return 0;
533
534         seq_printf(sf, "%s %llu\n", dname, (unsigned long long)v);
535         return v;
536 }
537 EXPORT_SYMBOL_GPL(__blkg_prfill_u64);
538
539 /**
540  * __blkg_prfill_rwstat - prfill helper for a blkg_rwstat
541  * @sf: seq_file to print to
542  * @pd: policy private data of interest
543  * @rwstat: rwstat to print
544  *
545  * Print @rwstat to @sf for the device assocaited with @pd.
546  */
547 u64 __blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
548                          const struct blkg_rwstat_sample *rwstat)
549 {
550         static const char *rwstr[] = {
551                 [BLKG_RWSTAT_READ]      = "Read",
552                 [BLKG_RWSTAT_WRITE]     = "Write",
553                 [BLKG_RWSTAT_SYNC]      = "Sync",
554                 [BLKG_RWSTAT_ASYNC]     = "Async",
555                 [BLKG_RWSTAT_DISCARD]   = "Discard",
556         };
557         const char *dname = blkg_dev_name(pd->blkg);
558         u64 v;
559         int i;
560
561         if (!dname)
562                 return 0;
563
564         for (i = 0; i < BLKG_RWSTAT_NR; i++)
565                 seq_printf(sf, "%s %s %llu\n", dname, rwstr[i],
566                            rwstat->cnt[i]);
567
568         v = rwstat->cnt[BLKG_RWSTAT_READ] +
569                 rwstat->cnt[BLKG_RWSTAT_WRITE] +
570                 rwstat->cnt[BLKG_RWSTAT_DISCARD];
571         seq_printf(sf, "%s Total %llu\n", dname, v);
572         return v;
573 }
574 EXPORT_SYMBOL_GPL(__blkg_prfill_rwstat);
575
576 /**
577  * blkg_prfill_rwstat - prfill callback for blkg_rwstat
578  * @sf: seq_file to print to
579  * @pd: policy private data of interest
580  * @off: offset to the blkg_rwstat in @pd
581  *
582  * prfill callback for printing a blkg_rwstat.
583  */
584 u64 blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
585                        int off)
586 {
587         struct blkg_rwstat_sample rwstat = { };
588
589         blkg_rwstat_read((void *)pd + off, &rwstat);
590         return __blkg_prfill_rwstat(sf, pd, &rwstat);
591 }
592 EXPORT_SYMBOL_GPL(blkg_prfill_rwstat);
593
594 static u64 blkg_prfill_rwstat_field(struct seq_file *sf,
595                                     struct blkg_policy_data *pd, int off)
596 {
597         struct blkg_rwstat_sample rwstat = { };
598
599         blkg_rwstat_read((void *)pd->blkg + off, &rwstat);
600         return __blkg_prfill_rwstat(sf, pd, &rwstat);
601 }
602
603 /**
604  * blkg_print_stat_bytes - seq_show callback for blkg->stat_bytes
605  * @sf: seq_file to print to
606  * @v: unused
607  *
608  * To be used as cftype->seq_show to print blkg->stat_bytes.
609  * cftype->private must be set to the blkcg_policy.
610  */
611 int blkg_print_stat_bytes(struct seq_file *sf, void *v)
612 {
613         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
614                           blkg_prfill_rwstat_field, (void *)seq_cft(sf)->private,
615                           offsetof(struct blkcg_gq, stat_bytes), true);
616         return 0;
617 }
618 EXPORT_SYMBOL_GPL(blkg_print_stat_bytes);
619
620 /**
621  * blkg_print_stat_bytes - seq_show callback for blkg->stat_ios
622  * @sf: seq_file to print to
623  * @v: unused
624  *
625  * To be used as cftype->seq_show to print blkg->stat_ios.  cftype->private
626  * must be set to the blkcg_policy.
627  */
628 int blkg_print_stat_ios(struct seq_file *sf, void *v)
629 {
630         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
631                           blkg_prfill_rwstat_field, (void *)seq_cft(sf)->private,
632                           offsetof(struct blkcg_gq, stat_ios), true);
633         return 0;
634 }
635 EXPORT_SYMBOL_GPL(blkg_print_stat_ios);
636
637 static u64 blkg_prfill_rwstat_field_recursive(struct seq_file *sf,
638                                               struct blkg_policy_data *pd,
639                                               int off)
640 {
641         struct blkg_rwstat_sample rwstat;
642
643         blkg_rwstat_recursive_sum(pd->blkg, NULL, off, &rwstat);
644         return __blkg_prfill_rwstat(sf, pd, &rwstat);
645 }
646
647 /**
648  * blkg_print_stat_bytes_recursive - recursive version of blkg_print_stat_bytes
649  * @sf: seq_file to print to
650  * @v: unused
651  */
652 int blkg_print_stat_bytes_recursive(struct seq_file *sf, void *v)
653 {
654         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
655                           blkg_prfill_rwstat_field_recursive,
656                           (void *)seq_cft(sf)->private,
657                           offsetof(struct blkcg_gq, stat_bytes), true);
658         return 0;
659 }
660 EXPORT_SYMBOL_GPL(blkg_print_stat_bytes_recursive);
661
662 /**
663  * blkg_print_stat_ios_recursive - recursive version of blkg_print_stat_ios
664  * @sf: seq_file to print to
665  * @v: unused
666  */
667 int blkg_print_stat_ios_recursive(struct seq_file *sf, void *v)
668 {
669         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
670                           blkg_prfill_rwstat_field_recursive,
671                           (void *)seq_cft(sf)->private,
672                           offsetof(struct blkcg_gq, stat_ios), true);
673         return 0;
674 }
675 EXPORT_SYMBOL_GPL(blkg_print_stat_ios_recursive);
676
677 /**
678  * blkg_rwstat_recursive_sum - collect hierarchical blkg_rwstat
679  * @blkg: blkg of interest
680  * @pol: blkcg_policy which contains the blkg_rwstat
681  * @off: offset to the blkg_rwstat in blkg_policy_data or @blkg
682  * @sum: blkg_rwstat_sample structure containing the results
683  *
684  * Collect the blkg_rwstat specified by @blkg, @pol and @off and all its
685  * online descendants and their aux counts.  The caller must be holding the
686  * queue lock for online tests.
687  *
688  * If @pol is NULL, blkg_rwstat is at @off bytes into @blkg; otherwise, it
689  * is at @off bytes into @blkg's blkg_policy_data of the policy.
690  */
691 void blkg_rwstat_recursive_sum(struct blkcg_gq *blkg, struct blkcg_policy *pol,
692                 int off, struct blkg_rwstat_sample *sum)
693 {
694         struct blkcg_gq *pos_blkg;
695         struct cgroup_subsys_state *pos_css;
696         unsigned int i;
697
698         lockdep_assert_held(&blkg->q->queue_lock);
699
700         rcu_read_lock();
701         blkg_for_each_descendant_pre(pos_blkg, pos_css, blkg) {
702                 struct blkg_rwstat *rwstat;
703
704                 if (!pos_blkg->online)
705                         continue;
706
707                 if (pol)
708                         rwstat = (void *)blkg_to_pd(pos_blkg, pol) + off;
709                 else
710                         rwstat = (void *)pos_blkg + off;
711
712                 for (i = 0; i < BLKG_RWSTAT_NR; i++)
713                         sum->cnt[i] = blkg_rwstat_read_counter(rwstat, i);
714         }
715         rcu_read_unlock();
716 }
717 EXPORT_SYMBOL_GPL(blkg_rwstat_recursive_sum);
718
719 /* Performs queue bypass and policy enabled checks then looks up blkg. */
720 static struct blkcg_gq *blkg_lookup_check(struct blkcg *blkcg,
721                                           const struct blkcg_policy *pol,
722                                           struct request_queue *q)
723 {
724         WARN_ON_ONCE(!rcu_read_lock_held());
725         lockdep_assert_held(&q->queue_lock);
726
727         if (!blkcg_policy_enabled(q, pol))
728                 return ERR_PTR(-EOPNOTSUPP);
729         return __blkg_lookup(blkcg, q, true /* update_hint */);
730 }
731
732 /**
733  * blkg_conf_prep - parse and prepare for per-blkg config update
734  * @blkcg: target block cgroup
735  * @pol: target policy
736  * @input: input string
737  * @ctx: blkg_conf_ctx to be filled
738  *
739  * Parse per-blkg config update from @input and initialize @ctx with the
740  * result.  @ctx->blkg points to the blkg to be updated and @ctx->body the
741  * part of @input following MAJ:MIN.  This function returns with RCU read
742  * lock and queue lock held and must be paired with blkg_conf_finish().
743  */
744 int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
745                    char *input, struct blkg_conf_ctx *ctx)
746         __acquires(rcu) __acquires(&disk->queue->queue_lock)
747 {
748         struct gendisk *disk;
749         struct request_queue *q;
750         struct blkcg_gq *blkg;
751         unsigned int major, minor;
752         int key_len, part, ret;
753         char *body;
754
755         if (sscanf(input, "%u:%u%n", &major, &minor, &key_len) != 2)
756                 return -EINVAL;
757
758         body = input + key_len;
759         if (!isspace(*body))
760                 return -EINVAL;
761         body = skip_spaces(body);
762
763         disk = get_gendisk(MKDEV(major, minor), &part);
764         if (!disk)
765                 return -ENODEV;
766         if (part) {
767                 ret = -ENODEV;
768                 goto fail;
769         }
770
771         q = disk->queue;
772
773         rcu_read_lock();
774         spin_lock_irq(&q->queue_lock);
775
776         blkg = blkg_lookup_check(blkcg, pol, q);
777         if (IS_ERR(blkg)) {
778                 ret = PTR_ERR(blkg);
779                 goto fail_unlock;
780         }
781
782         if (blkg)
783                 goto success;
784
785         /*
786          * Create blkgs walking down from blkcg_root to @blkcg, so that all
787          * non-root blkgs have access to their parents.
788          */
789         while (true) {
790                 struct blkcg *pos = blkcg;
791                 struct blkcg *parent;
792                 struct blkcg_gq *new_blkg;
793
794                 parent = blkcg_parent(blkcg);
795                 while (parent && !__blkg_lookup(parent, q, false)) {
796                         pos = parent;
797                         parent = blkcg_parent(parent);
798                 }
799
800                 /* Drop locks to do new blkg allocation with GFP_KERNEL. */
801                 spin_unlock_irq(&q->queue_lock);
802                 rcu_read_unlock();
803
804                 new_blkg = blkg_alloc(pos, q, GFP_KERNEL);
805                 if (unlikely(!new_blkg)) {
806                         ret = -ENOMEM;
807                         goto fail;
808                 }
809
810                 rcu_read_lock();
811                 spin_lock_irq(&q->queue_lock);
812
813                 blkg = blkg_lookup_check(pos, pol, q);
814                 if (IS_ERR(blkg)) {
815                         ret = PTR_ERR(blkg);
816                         goto fail_unlock;
817                 }
818
819                 if (blkg) {
820                         blkg_free(new_blkg);
821                 } else {
822                         blkg = blkg_create(pos, q, new_blkg);
823                         if (IS_ERR(blkg)) {
824                                 ret = PTR_ERR(blkg);
825                                 goto fail_unlock;
826                         }
827                 }
828
829                 if (pos == blkcg)
830                         goto success;
831         }
832 success:
833         ctx->disk = disk;
834         ctx->blkg = blkg;
835         ctx->body = body;
836         return 0;
837
838 fail_unlock:
839         spin_unlock_irq(&q->queue_lock);
840         rcu_read_unlock();
841 fail:
842         put_disk_and_module(disk);
843         /*
844          * If queue was bypassing, we should retry.  Do so after a
845          * short msleep().  It isn't strictly necessary but queue
846          * can be bypassing for some time and it's always nice to
847          * avoid busy looping.
848          */
849         if (ret == -EBUSY) {
850                 msleep(10);
851                 ret = restart_syscall();
852         }
853         return ret;
854 }
855
856 /**
857  * blkg_conf_finish - finish up per-blkg config update
858  * @ctx: blkg_conf_ctx intiailized by blkg_conf_prep()
859  *
860  * Finish up after per-blkg config update.  This function must be paired
861  * with blkg_conf_prep().
862  */
863 void blkg_conf_finish(struct blkg_conf_ctx *ctx)
864         __releases(&ctx->disk->queue->queue_lock) __releases(rcu)
865 {
866         spin_unlock_irq(&ctx->disk->queue->queue_lock);
867         rcu_read_unlock();
868         put_disk_and_module(ctx->disk);
869 }
870
871 static int blkcg_print_stat(struct seq_file *sf, void *v)
872 {
873         struct blkcg *blkcg = css_to_blkcg(seq_css(sf));
874         struct blkcg_gq *blkg;
875
876         rcu_read_lock();
877
878         hlist_for_each_entry_rcu(blkg, &blkcg->blkg_list, blkcg_node) {
879                 const char *dname;
880                 char *buf;
881                 struct blkg_rwstat_sample rwstat;
882                 u64 rbytes, wbytes, rios, wios, dbytes, dios;
883                 size_t size = seq_get_buf(sf, &buf), off = 0;
884                 int i;
885                 bool has_stats = false;
886
887                 dname = blkg_dev_name(blkg);
888                 if (!dname)
889                         continue;
890
891                 /*
892                  * Hooray string manipulation, count is the size written NOT
893                  * INCLUDING THE \0, so size is now count+1 less than what we
894                  * had before, but we want to start writing the next bit from
895                  * the \0 so we only add count to buf.
896                  */
897                 off += scnprintf(buf+off, size-off, "%s ", dname);
898
899                 spin_lock_irq(&blkg->q->queue_lock);
900
901                 blkg_rwstat_recursive_sum(blkg, NULL,
902                                 offsetof(struct blkcg_gq, stat_bytes), &rwstat);
903                 rbytes = rwstat.cnt[BLKG_RWSTAT_READ];
904                 wbytes = rwstat.cnt[BLKG_RWSTAT_WRITE];
905                 dbytes = rwstat.cnt[BLKG_RWSTAT_DISCARD];
906
907                 blkg_rwstat_recursive_sum(blkg, NULL,
908                                         offsetof(struct blkcg_gq, stat_ios), &rwstat);
909                 rios = rwstat.cnt[BLKG_RWSTAT_READ];
910                 wios = rwstat.cnt[BLKG_RWSTAT_WRITE];
911                 dios = rwstat.cnt[BLKG_RWSTAT_DISCARD];
912
913                 spin_unlock_irq(&blkg->q->queue_lock);
914
915                 if (rbytes || wbytes || rios || wios) {
916                         has_stats = true;
917                         off += scnprintf(buf+off, size-off,
918                                          "rbytes=%llu wbytes=%llu rios=%llu wios=%llu dbytes=%llu dios=%llu",
919                                          rbytes, wbytes, rios, wios,
920                                          dbytes, dios);
921                 }
922
923                 if (!blkcg_debug_stats)
924                         goto next;
925
926                 if (atomic_read(&blkg->use_delay)) {
927                         has_stats = true;
928                         off += scnprintf(buf+off, size-off,
929                                          " use_delay=%d delay_nsec=%llu",
930                                          atomic_read(&blkg->use_delay),
931                                         (unsigned long long)atomic64_read(&blkg->delay_nsec));
932                 }
933
934                 for (i = 0; i < BLKCG_MAX_POLS; i++) {
935                         struct blkcg_policy *pol = blkcg_policy[i];
936                         size_t written;
937
938                         if (!blkg->pd[i] || !pol->pd_stat_fn)
939                                 continue;
940
941                         written = pol->pd_stat_fn(blkg->pd[i], buf+off, size-off);
942                         if (written)
943                                 has_stats = true;
944                         off += written;
945                 }
946 next:
947                 if (has_stats) {
948                         if (off < size - 1) {
949                                 off += scnprintf(buf+off, size-off, "\n");
950                                 seq_commit(sf, off);
951                         } else {
952                                 seq_commit(sf, -1);
953                         }
954                 }
955         }
956
957         rcu_read_unlock();
958         return 0;
959 }
960
961 static struct cftype blkcg_files[] = {
962         {
963                 .name = "stat",
964                 .flags = CFTYPE_NOT_ON_ROOT,
965                 .seq_show = blkcg_print_stat,
966         },
967         { }     /* terminate */
968 };
969
970 static struct cftype blkcg_legacy_files[] = {
971         {
972                 .name = "reset_stats",
973                 .write_u64 = blkcg_reset_stats,
974         },
975         { }     /* terminate */
976 };
977
978 /*
979  * blkcg destruction is a three-stage process.
980  *
981  * 1. Destruction starts.  The blkcg_css_offline() callback is invoked
982  *    which offlines writeback.  Here we tie the next stage of blkg destruction
983  *    to the completion of writeback associated with the blkcg.  This lets us
984  *    avoid punting potentially large amounts of outstanding writeback to root
985  *    while maintaining any ongoing policies.  The next stage is triggered when
986  *    the nr_cgwbs count goes to zero.
987  *
988  * 2. When the nr_cgwbs count goes to zero, blkcg_destroy_blkgs() is called
989  *    and handles the destruction of blkgs.  Here the css reference held by
990  *    the blkg is put back eventually allowing blkcg_css_free() to be called.
991  *    This work may occur in cgwb_release_workfn() on the cgwb_release
992  *    workqueue.  Any submitted ios that fail to get the blkg ref will be
993  *    punted to the root_blkg.
994  *
995  * 3. Once the blkcg ref count goes to zero, blkcg_css_free() is called.
996  *    This finally frees the blkcg.
997  */
998
999 /**
1000  * blkcg_css_offline - cgroup css_offline callback
1001  * @css: css of interest
1002  *
1003  * This function is called when @css is about to go away.  Here the cgwbs are
1004  * offlined first and only once writeback associated with the blkcg has
1005  * finished do we start step 2 (see above).
1006  */
1007 static void blkcg_css_offline(struct cgroup_subsys_state *css)
1008 {
1009         struct blkcg *blkcg = css_to_blkcg(css);
1010
1011         /* this prevents anyone from attaching or migrating to this blkcg */
1012         wb_blkcg_offline(blkcg);
1013
1014         /* put the base cgwb reference allowing step 2 to be triggered */
1015         blkcg_cgwb_put(blkcg);
1016 }
1017
1018 /**
1019  * blkcg_destroy_blkgs - responsible for shooting down blkgs
1020  * @blkcg: blkcg of interest
1021  *
1022  * blkgs should be removed while holding both q and blkcg locks.  As blkcg lock
1023  * is nested inside q lock, this function performs reverse double lock dancing.
1024  * Destroying the blkgs releases the reference held on the blkcg's css allowing
1025  * blkcg_css_free to eventually be called.
1026  *
1027  * This is the blkcg counterpart of ioc_release_fn().
1028  */
1029 void blkcg_destroy_blkgs(struct blkcg *blkcg)
1030 {
1031         spin_lock_irq(&blkcg->lock);
1032
1033         while (!hlist_empty(&blkcg->blkg_list)) {
1034                 struct blkcg_gq *blkg = hlist_entry(blkcg->blkg_list.first,
1035                                                 struct blkcg_gq, blkcg_node);
1036                 struct request_queue *q = blkg->q;
1037
1038                 if (spin_trylock(&q->queue_lock)) {
1039                         blkg_destroy(blkg);
1040                         spin_unlock(&q->queue_lock);
1041                 } else {
1042                         spin_unlock_irq(&blkcg->lock);
1043                         cpu_relax();
1044                         spin_lock_irq(&blkcg->lock);
1045                 }
1046         }
1047
1048         spin_unlock_irq(&blkcg->lock);
1049 }
1050
1051 static void blkcg_css_free(struct cgroup_subsys_state *css)
1052 {
1053         struct blkcg *blkcg = css_to_blkcg(css);
1054         int i;
1055
1056         mutex_lock(&blkcg_pol_mutex);
1057
1058         list_del(&blkcg->all_blkcgs_node);
1059
1060         for (i = 0; i < BLKCG_MAX_POLS; i++)
1061                 if (blkcg->cpd[i])
1062                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
1063
1064         mutex_unlock(&blkcg_pol_mutex);
1065
1066         kfree(blkcg);
1067 }
1068
1069 static struct cgroup_subsys_state *
1070 blkcg_css_alloc(struct cgroup_subsys_state *parent_css)
1071 {
1072         struct blkcg *blkcg;
1073         struct cgroup_subsys_state *ret;
1074         int i;
1075
1076         mutex_lock(&blkcg_pol_mutex);
1077
1078         if (!parent_css) {
1079                 blkcg = &blkcg_root;
1080         } else {
1081                 blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL);
1082                 if (!blkcg) {
1083                         ret = ERR_PTR(-ENOMEM);
1084                         goto unlock;
1085                 }
1086         }
1087
1088         for (i = 0; i < BLKCG_MAX_POLS ; i++) {
1089                 struct blkcg_policy *pol = blkcg_policy[i];
1090                 struct blkcg_policy_data *cpd;
1091
1092                 /*
1093                  * If the policy hasn't been attached yet, wait for it
1094                  * to be attached before doing anything else. Otherwise,
1095                  * check if the policy requires any specific per-cgroup
1096                  * data: if it does, allocate and initialize it.
1097                  */
1098                 if (!pol || !pol->cpd_alloc_fn)
1099                         continue;
1100
1101                 cpd = pol->cpd_alloc_fn(GFP_KERNEL);
1102                 if (!cpd) {
1103                         ret = ERR_PTR(-ENOMEM);
1104                         goto free_pd_blkcg;
1105                 }
1106                 blkcg->cpd[i] = cpd;
1107                 cpd->blkcg = blkcg;
1108                 cpd->plid = i;
1109                 if (pol->cpd_init_fn)
1110                         pol->cpd_init_fn(cpd);
1111         }
1112
1113         spin_lock_init(&blkcg->lock);
1114         INIT_RADIX_TREE(&blkcg->blkg_tree, GFP_NOWAIT | __GFP_NOWARN);
1115         INIT_HLIST_HEAD(&blkcg->blkg_list);
1116 #ifdef CONFIG_CGROUP_WRITEBACK
1117         INIT_LIST_HEAD(&blkcg->cgwb_list);
1118         refcount_set(&blkcg->cgwb_refcnt, 1);
1119 #endif
1120         list_add_tail(&blkcg->all_blkcgs_node, &all_blkcgs);
1121
1122         mutex_unlock(&blkcg_pol_mutex);
1123         return &blkcg->css;
1124
1125 free_pd_blkcg:
1126         for (i--; i >= 0; i--)
1127                 if (blkcg->cpd[i])
1128                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
1129
1130         if (blkcg != &blkcg_root)
1131                 kfree(blkcg);
1132 unlock:
1133         mutex_unlock(&blkcg_pol_mutex);
1134         return ret;
1135 }
1136
1137 /**
1138  * blkcg_init_queue - initialize blkcg part of request queue
1139  * @q: request_queue to initialize
1140  *
1141  * Called from blk_alloc_queue_node(). Responsible for initializing blkcg
1142  * part of new request_queue @q.
1143  *
1144  * RETURNS:
1145  * 0 on success, -errno on failure.
1146  */
1147 int blkcg_init_queue(struct request_queue *q)
1148 {
1149         struct blkcg_gq *new_blkg, *blkg;
1150         bool preloaded;
1151         int ret;
1152
1153         new_blkg = blkg_alloc(&blkcg_root, q, GFP_KERNEL);
1154         if (!new_blkg)
1155                 return -ENOMEM;
1156
1157         preloaded = !radix_tree_preload(GFP_KERNEL);
1158
1159         /* Make sure the root blkg exists. */
1160         rcu_read_lock();
1161         spin_lock_irq(&q->queue_lock);
1162         blkg = blkg_create(&blkcg_root, q, new_blkg);
1163         if (IS_ERR(blkg))
1164                 goto err_unlock;
1165         q->root_blkg = blkg;
1166         spin_unlock_irq(&q->queue_lock);
1167         rcu_read_unlock();
1168
1169         if (preloaded)
1170                 radix_tree_preload_end();
1171
1172         ret = blk_iolatency_init(q);
1173         if (ret)
1174                 goto err_destroy_all;
1175
1176         ret = blk_throtl_init(q);
1177         if (ret)
1178                 goto err_destroy_all;
1179         return 0;
1180
1181 err_destroy_all:
1182         blkg_destroy_all(q);
1183         return ret;
1184 err_unlock:
1185         spin_unlock_irq(&q->queue_lock);
1186         rcu_read_unlock();
1187         if (preloaded)
1188                 radix_tree_preload_end();
1189         return PTR_ERR(blkg);
1190 }
1191
1192 /**
1193  * blkcg_drain_queue - drain blkcg part of request_queue
1194  * @q: request_queue to drain
1195  *
1196  * Called from blk_drain_queue().  Responsible for draining blkcg part.
1197  */
1198 void blkcg_drain_queue(struct request_queue *q)
1199 {
1200         lockdep_assert_held(&q->queue_lock);
1201
1202         /*
1203          * @q could be exiting and already have destroyed all blkgs as
1204          * indicated by NULL root_blkg.  If so, don't confuse policies.
1205          */
1206         if (!q->root_blkg)
1207                 return;
1208
1209         blk_throtl_drain(q);
1210 }
1211
1212 /**
1213  * blkcg_exit_queue - exit and release blkcg part of request_queue
1214  * @q: request_queue being released
1215  *
1216  * Called from blk_exit_queue().  Responsible for exiting blkcg part.
1217  */
1218 void blkcg_exit_queue(struct request_queue *q)
1219 {
1220         blkg_destroy_all(q);
1221         blk_throtl_exit(q);
1222 }
1223
1224 /*
1225  * We cannot support shared io contexts, as we have no mean to support
1226  * two tasks with the same ioc in two different groups without major rework
1227  * of the main cic data structures.  For now we allow a task to change
1228  * its cgroup only if it's the only owner of its ioc.
1229  */
1230 static int blkcg_can_attach(struct cgroup_taskset *tset)
1231 {
1232         struct task_struct *task;
1233         struct cgroup_subsys_state *dst_css;
1234         struct io_context *ioc;
1235         int ret = 0;
1236
1237         /* task_lock() is needed to avoid races with exit_io_context() */
1238         cgroup_taskset_for_each(task, dst_css, tset) {
1239                 task_lock(task);
1240                 ioc = task->io_context;
1241                 if (ioc && atomic_read(&ioc->nr_tasks) > 1)
1242                         ret = -EINVAL;
1243                 task_unlock(task);
1244                 if (ret)
1245                         break;
1246         }
1247         return ret;
1248 }
1249
1250 static void blkcg_bind(struct cgroup_subsys_state *root_css)
1251 {
1252         int i;
1253
1254         mutex_lock(&blkcg_pol_mutex);
1255
1256         for (i = 0; i < BLKCG_MAX_POLS; i++) {
1257                 struct blkcg_policy *pol = blkcg_policy[i];
1258                 struct blkcg *blkcg;
1259
1260                 if (!pol || !pol->cpd_bind_fn)
1261                         continue;
1262
1263                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node)
1264                         if (blkcg->cpd[pol->plid])
1265                                 pol->cpd_bind_fn(blkcg->cpd[pol->plid]);
1266         }
1267         mutex_unlock(&blkcg_pol_mutex);
1268 }
1269
1270 static void blkcg_exit(struct task_struct *tsk)
1271 {
1272         if (tsk->throttle_queue)
1273                 blk_put_queue(tsk->throttle_queue);
1274         tsk->throttle_queue = NULL;
1275 }
1276
1277 struct cgroup_subsys io_cgrp_subsys = {
1278         .css_alloc = blkcg_css_alloc,
1279         .css_offline = blkcg_css_offline,
1280         .css_free = blkcg_css_free,
1281         .can_attach = blkcg_can_attach,
1282         .bind = blkcg_bind,
1283         .dfl_cftypes = blkcg_files,
1284         .legacy_cftypes = blkcg_legacy_files,
1285         .legacy_name = "blkio",
1286         .exit = blkcg_exit,
1287 #ifdef CONFIG_MEMCG
1288         /*
1289          * This ensures that, if available, memcg is automatically enabled
1290          * together on the default hierarchy so that the owner cgroup can
1291          * be retrieved from writeback pages.
1292          */
1293         .depends_on = 1 << memory_cgrp_id,
1294 #endif
1295 };
1296 EXPORT_SYMBOL_GPL(io_cgrp_subsys);
1297
1298 /**
1299  * blkcg_activate_policy - activate a blkcg policy on a request_queue
1300  * @q: request_queue of interest
1301  * @pol: blkcg policy to activate
1302  *
1303  * Activate @pol on @q.  Requires %GFP_KERNEL context.  @q goes through
1304  * bypass mode to populate its blkgs with policy_data for @pol.
1305  *
1306  * Activation happens with @q bypassed, so nobody would be accessing blkgs
1307  * from IO path.  Update of each blkg is protected by both queue and blkcg
1308  * locks so that holding either lock and testing blkcg_policy_enabled() is
1309  * always enough for dereferencing policy data.
1310  *
1311  * The caller is responsible for synchronizing [de]activations and policy
1312  * [un]registerations.  Returns 0 on success, -errno on failure.
1313  */
1314 int blkcg_activate_policy(struct request_queue *q,
1315                           const struct blkcg_policy *pol)
1316 {
1317         struct blkg_policy_data *pd_prealloc = NULL;
1318         struct blkcg_gq *blkg;
1319         int ret;
1320
1321         if (blkcg_policy_enabled(q, pol))
1322                 return 0;
1323
1324         if (queue_is_mq(q))
1325                 blk_mq_freeze_queue(q);
1326 pd_prealloc:
1327         if (!pd_prealloc) {
1328                 pd_prealloc = pol->pd_alloc_fn(GFP_KERNEL, q->node);
1329                 if (!pd_prealloc) {
1330                         ret = -ENOMEM;
1331                         goto out_bypass_end;
1332                 }
1333         }
1334
1335         spin_lock_irq(&q->queue_lock);
1336
1337         /* blkg_list is pushed at the head, reverse walk to init parents first */
1338         list_for_each_entry_reverse(blkg, &q->blkg_list, q_node) {
1339                 struct blkg_policy_data *pd;
1340
1341                 if (blkg->pd[pol->plid])
1342                         continue;
1343
1344                 pd = pol->pd_alloc_fn(GFP_NOWAIT | __GFP_NOWARN, q->node);
1345                 if (!pd)
1346                         swap(pd, pd_prealloc);
1347                 if (!pd) {
1348                         spin_unlock_irq(&q->queue_lock);
1349                         goto pd_prealloc;
1350                 }
1351
1352                 blkg->pd[pol->plid] = pd;
1353                 pd->blkg = blkg;
1354                 pd->plid = pol->plid;
1355                 if (pol->pd_init_fn)
1356                         pol->pd_init_fn(pd);
1357         }
1358
1359         __set_bit(pol->plid, q->blkcg_pols);
1360         ret = 0;
1361
1362         spin_unlock_irq(&q->queue_lock);
1363 out_bypass_end:
1364         if (queue_is_mq(q))
1365                 blk_mq_unfreeze_queue(q);
1366         if (pd_prealloc)
1367                 pol->pd_free_fn(pd_prealloc);
1368         return ret;
1369 }
1370 EXPORT_SYMBOL_GPL(blkcg_activate_policy);
1371
1372 /**
1373  * blkcg_deactivate_policy - deactivate a blkcg policy on a request_queue
1374  * @q: request_queue of interest
1375  * @pol: blkcg policy to deactivate
1376  *
1377  * Deactivate @pol on @q.  Follows the same synchronization rules as
1378  * blkcg_activate_policy().
1379  */
1380 void blkcg_deactivate_policy(struct request_queue *q,
1381                              const struct blkcg_policy *pol)
1382 {
1383         struct blkcg_gq *blkg;
1384
1385         if (!blkcg_policy_enabled(q, pol))
1386                 return;
1387
1388         if (queue_is_mq(q))
1389                 blk_mq_freeze_queue(q);
1390
1391         spin_lock_irq(&q->queue_lock);
1392
1393         __clear_bit(pol->plid, q->blkcg_pols);
1394
1395         list_for_each_entry(blkg, &q->blkg_list, q_node) {
1396                 if (blkg->pd[pol->plid]) {
1397                         if (pol->pd_offline_fn)
1398                                 pol->pd_offline_fn(blkg->pd[pol->plid]);
1399                         pol->pd_free_fn(blkg->pd[pol->plid]);
1400                         blkg->pd[pol->plid] = NULL;
1401                 }
1402         }
1403
1404         spin_unlock_irq(&q->queue_lock);
1405
1406         if (queue_is_mq(q))
1407                 blk_mq_unfreeze_queue(q);
1408 }
1409 EXPORT_SYMBOL_GPL(blkcg_deactivate_policy);
1410
1411 /**
1412  * blkcg_policy_register - register a blkcg policy
1413  * @pol: blkcg policy to register
1414  *
1415  * Register @pol with blkcg core.  Might sleep and @pol may be modified on
1416  * successful registration.  Returns 0 on success and -errno on failure.
1417  */
1418 int blkcg_policy_register(struct blkcg_policy *pol)
1419 {
1420         struct blkcg *blkcg;
1421         int i, ret;
1422
1423         mutex_lock(&blkcg_pol_register_mutex);
1424         mutex_lock(&blkcg_pol_mutex);
1425
1426         /* find an empty slot */
1427         ret = -ENOSPC;
1428         for (i = 0; i < BLKCG_MAX_POLS; i++)
1429                 if (!blkcg_policy[i])
1430                         break;
1431         if (i >= BLKCG_MAX_POLS) {
1432                 pr_warn("blkcg_policy_register: BLKCG_MAX_POLS too small\n");
1433                 goto err_unlock;
1434         }
1435
1436         /* Make sure cpd/pd_alloc_fn and cpd/pd_free_fn in pairs */
1437         if ((!pol->cpd_alloc_fn ^ !pol->cpd_free_fn) ||
1438                 (!pol->pd_alloc_fn ^ !pol->pd_free_fn))
1439                 goto err_unlock;
1440
1441         /* register @pol */
1442         pol->plid = i;
1443         blkcg_policy[pol->plid] = pol;
1444
1445         /* allocate and install cpd's */
1446         if (pol->cpd_alloc_fn) {
1447                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1448                         struct blkcg_policy_data *cpd;
1449
1450                         cpd = pol->cpd_alloc_fn(GFP_KERNEL);
1451                         if (!cpd)
1452                                 goto err_free_cpds;
1453
1454                         blkcg->cpd[pol->plid] = cpd;
1455                         cpd->blkcg = blkcg;
1456                         cpd->plid = pol->plid;
1457                         pol->cpd_init_fn(cpd);
1458                 }
1459         }
1460
1461         mutex_unlock(&blkcg_pol_mutex);
1462
1463         /* everything is in place, add intf files for the new policy */
1464         if (pol->dfl_cftypes)
1465                 WARN_ON(cgroup_add_dfl_cftypes(&io_cgrp_subsys,
1466                                                pol->dfl_cftypes));
1467         if (pol->legacy_cftypes)
1468                 WARN_ON(cgroup_add_legacy_cftypes(&io_cgrp_subsys,
1469                                                   pol->legacy_cftypes));
1470         mutex_unlock(&blkcg_pol_register_mutex);
1471         return 0;
1472
1473 err_free_cpds:
1474         if (pol->cpd_free_fn) {
1475                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1476                         if (blkcg->cpd[pol->plid]) {
1477                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1478                                 blkcg->cpd[pol->plid] = NULL;
1479                         }
1480                 }
1481         }
1482         blkcg_policy[pol->plid] = NULL;
1483 err_unlock:
1484         mutex_unlock(&blkcg_pol_mutex);
1485         mutex_unlock(&blkcg_pol_register_mutex);
1486         return ret;
1487 }
1488 EXPORT_SYMBOL_GPL(blkcg_policy_register);
1489
1490 /**
1491  * blkcg_policy_unregister - unregister a blkcg policy
1492  * @pol: blkcg policy to unregister
1493  *
1494  * Undo blkcg_policy_register(@pol).  Might sleep.
1495  */
1496 void blkcg_policy_unregister(struct blkcg_policy *pol)
1497 {
1498         struct blkcg *blkcg;
1499
1500         mutex_lock(&blkcg_pol_register_mutex);
1501
1502         if (WARN_ON(blkcg_policy[pol->plid] != pol))
1503                 goto out_unlock;
1504
1505         /* kill the intf files first */
1506         if (pol->dfl_cftypes)
1507                 cgroup_rm_cftypes(pol->dfl_cftypes);
1508         if (pol->legacy_cftypes)
1509                 cgroup_rm_cftypes(pol->legacy_cftypes);
1510
1511         /* remove cpds and unregister */
1512         mutex_lock(&blkcg_pol_mutex);
1513
1514         if (pol->cpd_free_fn) {
1515                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1516                         if (blkcg->cpd[pol->plid]) {
1517                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1518                                 blkcg->cpd[pol->plid] = NULL;
1519                         }
1520                 }
1521         }
1522         blkcg_policy[pol->plid] = NULL;
1523
1524         mutex_unlock(&blkcg_pol_mutex);
1525 out_unlock:
1526         mutex_unlock(&blkcg_pol_register_mutex);
1527 }
1528 EXPORT_SYMBOL_GPL(blkcg_policy_unregister);
1529
1530 /*
1531  * Scale the accumulated delay based on how long it has been since we updated
1532  * the delay.  We only call this when we are adding delay, in case it's been a
1533  * while since we added delay, and when we are checking to see if we need to
1534  * delay a task, to account for any delays that may have occurred.
1535  */
1536 static void blkcg_scale_delay(struct blkcg_gq *blkg, u64 now)
1537 {
1538         u64 old = atomic64_read(&blkg->delay_start);
1539
1540         /*
1541          * We only want to scale down every second.  The idea here is that we
1542          * want to delay people for min(delay_nsec, NSEC_PER_SEC) in a certain
1543          * time window.  We only want to throttle tasks for recent delay that
1544          * has occurred, in 1 second time windows since that's the maximum
1545          * things can be throttled.  We save the current delay window in
1546          * blkg->last_delay so we know what amount is still left to be charged
1547          * to the blkg from this point onward.  blkg->last_use keeps track of
1548          * the use_delay counter.  The idea is if we're unthrottling the blkg we
1549          * are ok with whatever is happening now, and we can take away more of
1550          * the accumulated delay as we've already throttled enough that
1551          * everybody is happy with their IO latencies.
1552          */
1553         if (time_before64(old + NSEC_PER_SEC, now) &&
1554             atomic64_cmpxchg(&blkg->delay_start, old, now) == old) {
1555                 u64 cur = atomic64_read(&blkg->delay_nsec);
1556                 u64 sub = min_t(u64, blkg->last_delay, now - old);
1557                 int cur_use = atomic_read(&blkg->use_delay);
1558
1559                 /*
1560                  * We've been unthrottled, subtract a larger chunk of our
1561                  * accumulated delay.
1562                  */
1563                 if (cur_use < blkg->last_use)
1564                         sub = max_t(u64, sub, blkg->last_delay >> 1);
1565
1566                 /*
1567                  * This shouldn't happen, but handle it anyway.  Our delay_nsec
1568                  * should only ever be growing except here where we subtract out
1569                  * min(last_delay, 1 second), but lord knows bugs happen and I'd
1570                  * rather not end up with negative numbers.
1571                  */
1572                 if (unlikely(cur < sub)) {
1573                         atomic64_set(&blkg->delay_nsec, 0);
1574                         blkg->last_delay = 0;
1575                 } else {
1576                         atomic64_sub(sub, &blkg->delay_nsec);
1577                         blkg->last_delay = cur - sub;
1578                 }
1579                 blkg->last_use = cur_use;
1580         }
1581 }
1582
1583 /*
1584  * This is called when we want to actually walk up the hierarchy and check to
1585  * see if we need to throttle, and then actually throttle if there is some
1586  * accumulated delay.  This should only be called upon return to user space so
1587  * we're not holding some lock that would induce a priority inversion.
1588  */
1589 static void blkcg_maybe_throttle_blkg(struct blkcg_gq *blkg, bool use_memdelay)
1590 {
1591         unsigned long pflags;
1592         u64 now = ktime_to_ns(ktime_get());
1593         u64 exp;
1594         u64 delay_nsec = 0;
1595         int tok;
1596
1597         while (blkg->parent) {
1598                 if (atomic_read(&blkg->use_delay)) {
1599                         blkcg_scale_delay(blkg, now);
1600                         delay_nsec = max_t(u64, delay_nsec,
1601                                            atomic64_read(&blkg->delay_nsec));
1602                 }
1603                 blkg = blkg->parent;
1604         }
1605
1606         if (!delay_nsec)
1607                 return;
1608
1609         /*
1610          * Let's not sleep for all eternity if we've amassed a huge delay.
1611          * Swapping or metadata IO can accumulate 10's of seconds worth of
1612          * delay, and we want userspace to be able to do _something_ so cap the
1613          * delays at 1 second.  If there's 10's of seconds worth of delay then
1614          * the tasks will be delayed for 1 second for every syscall.
1615          */
1616         delay_nsec = min_t(u64, delay_nsec, 250 * NSEC_PER_MSEC);
1617
1618         if (use_memdelay)
1619                 psi_memstall_enter(&pflags);
1620
1621         exp = ktime_add_ns(now, delay_nsec);
1622         tok = io_schedule_prepare();
1623         do {
1624                 __set_current_state(TASK_KILLABLE);
1625                 if (!schedule_hrtimeout(&exp, HRTIMER_MODE_ABS))
1626                         break;
1627         } while (!fatal_signal_pending(current));
1628         io_schedule_finish(tok);
1629
1630         if (use_memdelay)
1631                 psi_memstall_leave(&pflags);
1632 }
1633
1634 /**
1635  * blkcg_maybe_throttle_current - throttle the current task if it has been marked
1636  *
1637  * This is only called if we've been marked with set_notify_resume().  Obviously
1638  * we can be set_notify_resume() for reasons other than blkcg throttling, so we
1639  * check to see if current->throttle_queue is set and if not this doesn't do
1640  * anything.  This should only ever be called by the resume code, it's not meant
1641  * to be called by people willy-nilly as it will actually do the work to
1642  * throttle the task if it is setup for throttling.
1643  */
1644 void blkcg_maybe_throttle_current(void)
1645 {
1646         struct request_queue *q = current->throttle_queue;
1647         struct cgroup_subsys_state *css;
1648         struct blkcg *blkcg;
1649         struct blkcg_gq *blkg;
1650         bool use_memdelay = current->use_memdelay;
1651
1652         if (!q)
1653                 return;
1654
1655         current->throttle_queue = NULL;
1656         current->use_memdelay = false;
1657
1658         rcu_read_lock();
1659         css = kthread_blkcg();
1660         if (css)
1661                 blkcg = css_to_blkcg(css);
1662         else
1663                 blkcg = css_to_blkcg(task_css(current, io_cgrp_id));
1664
1665         if (!blkcg)
1666                 goto out;
1667         blkg = blkg_lookup(blkcg, q);
1668         if (!blkg)
1669                 goto out;
1670         if (!blkg_tryget(blkg))
1671                 goto out;
1672         rcu_read_unlock();
1673
1674         blkcg_maybe_throttle_blkg(blkg, use_memdelay);
1675         blkg_put(blkg);
1676         blk_put_queue(q);
1677         return;
1678 out:
1679         rcu_read_unlock();
1680         blk_put_queue(q);
1681 }
1682
1683 /**
1684  * blkcg_schedule_throttle - this task needs to check for throttling
1685  * @q: the request queue IO was submitted on
1686  * @use_memdelay: do we charge this to memory delay for PSI
1687  *
1688  * This is called by the IO controller when we know there's delay accumulated
1689  * for the blkg for this task.  We do not pass the blkg because there are places
1690  * we call this that may not have that information, the swapping code for
1691  * instance will only have a request_queue at that point.  This set's the
1692  * notify_resume for the task to check and see if it requires throttling before
1693  * returning to user space.
1694  *
1695  * We will only schedule once per syscall.  You can call this over and over
1696  * again and it will only do the check once upon return to user space, and only
1697  * throttle once.  If the task needs to be throttled again it'll need to be
1698  * re-set at the next time we see the task.
1699  */
1700 void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay)
1701 {
1702         if (unlikely(current->flags & PF_KTHREAD))
1703                 return;
1704
1705         if (!blk_get_queue(q))
1706                 return;
1707
1708         if (current->throttle_queue)
1709                 blk_put_queue(current->throttle_queue);
1710         current->throttle_queue = q;
1711         if (use_memdelay)
1712                 current->use_memdelay = use_memdelay;
1713         set_notify_resume(current);
1714 }
1715
1716 /**
1717  * blkcg_add_delay - add delay to this blkg
1718  * @blkg: blkg of interest
1719  * @now: the current time in nanoseconds
1720  * @delta: how many nanoseconds of delay to add
1721  *
1722  * Charge @delta to the blkg's current delay accumulation.  This is used to
1723  * throttle tasks if an IO controller thinks we need more throttling.
1724  */
1725 void blkcg_add_delay(struct blkcg_gq *blkg, u64 now, u64 delta)
1726 {
1727         blkcg_scale_delay(blkg, now);
1728         atomic64_add(delta, &blkg->delay_nsec);
1729 }
1730
1731 module_param(blkcg_debug_stats, bool, 0644);
1732 MODULE_PARM_DESC(blkcg_debug_stats, "True if you want debug stats, false if not");