blkcg: move io_service_bytes and io_serviced stats into blkcg_gq
[linux-2.6-block.git] / block / blk-cgroup.c
1 /*
2  * Common Block IO controller cgroup interface
3  *
4  * Based on ideas and code from CFQ, CFS and BFQ:
5  * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
6  *
7  * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
8  *                    Paolo Valente <paolo.valente@unimore.it>
9  *
10  * Copyright (C) 2009 Vivek Goyal <vgoyal@redhat.com>
11  *                    Nauman Rafique <nauman@google.com>
12  *
13  * For policy-specific per-blkcg data:
14  * Copyright (C) 2015 Paolo Valente <paolo.valente@unimore.it>
15  *                    Arianna Avanzini <avanzini.arianna@gmail.com>
16  */
17 #include <linux/ioprio.h>
18 #include <linux/kdev_t.h>
19 #include <linux/module.h>
20 #include <linux/err.h>
21 #include <linux/blkdev.h>
22 #include <linux/backing-dev.h>
23 #include <linux/slab.h>
24 #include <linux/genhd.h>
25 #include <linux/delay.h>
26 #include <linux/atomic.h>
27 #include <linux/blk-cgroup.h>
28 #include "blk.h"
29
30 #define MAX_KEY_LEN 100
31
32 /*
33  * blkcg_pol_mutex protects blkcg_policy[] and policy [de]activation.
34  * blkcg_pol_register_mutex nests outside of it and synchronizes entire
35  * policy [un]register operations including cgroup file additions /
36  * removals.  Putting cgroup file registration outside blkcg_pol_mutex
37  * allows grabbing it from cgroup callbacks.
38  */
39 static DEFINE_MUTEX(blkcg_pol_register_mutex);
40 static DEFINE_MUTEX(blkcg_pol_mutex);
41
42 struct blkcg blkcg_root;
43 EXPORT_SYMBOL_GPL(blkcg_root);
44
45 struct cgroup_subsys_state * const blkcg_root_css = &blkcg_root.css;
46
47 static struct blkcg_policy *blkcg_policy[BLKCG_MAX_POLS];
48
49 static LIST_HEAD(all_blkcgs);           /* protected by blkcg_pol_mutex */
50
51 static bool blkcg_policy_enabled(struct request_queue *q,
52                                  const struct blkcg_policy *pol)
53 {
54         return pol && test_bit(pol->plid, q->blkcg_pols);
55 }
56
57 /**
58  * blkg_free - free a blkg
59  * @blkg: blkg to free
60  *
61  * Free @blkg which may be partially allocated.
62  */
63 static void blkg_free(struct blkcg_gq *blkg)
64 {
65         int i;
66
67         if (!blkg)
68                 return;
69
70         for (i = 0; i < BLKCG_MAX_POLS; i++)
71                 if (blkg->pd[i])
72                         blkcg_policy[i]->pd_free_fn(blkg->pd[i]);
73
74         if (blkg->blkcg != &blkcg_root)
75                 blk_exit_rl(&blkg->rl);
76
77         blkg_rwstat_exit(&blkg->stat_ios);
78         blkg_rwstat_exit(&blkg->stat_bytes);
79         kfree(blkg);
80 }
81
82 /**
83  * blkg_alloc - allocate a blkg
84  * @blkcg: block cgroup the new blkg is associated with
85  * @q: request_queue the new blkg is associated with
86  * @gfp_mask: allocation mask to use
87  *
88  * Allocate a new blkg assocating @blkcg and @q.
89  */
90 static struct blkcg_gq *blkg_alloc(struct blkcg *blkcg, struct request_queue *q,
91                                    gfp_t gfp_mask)
92 {
93         struct blkcg_gq *blkg;
94         int i;
95
96         /* alloc and init base part */
97         blkg = kzalloc_node(sizeof(*blkg), gfp_mask, q->node);
98         if (!blkg)
99                 return NULL;
100
101         if (blkg_rwstat_init(&blkg->stat_bytes, gfp_mask) ||
102             blkg_rwstat_init(&blkg->stat_ios, gfp_mask))
103                 goto err_free;
104
105         blkg->q = q;
106         INIT_LIST_HEAD(&blkg->q_node);
107         blkg->blkcg = blkcg;
108         atomic_set(&blkg->refcnt, 1);
109
110         /* root blkg uses @q->root_rl, init rl only for !root blkgs */
111         if (blkcg != &blkcg_root) {
112                 if (blk_init_rl(&blkg->rl, q, gfp_mask))
113                         goto err_free;
114                 blkg->rl.blkg = blkg;
115         }
116
117         for (i = 0; i < BLKCG_MAX_POLS; i++) {
118                 struct blkcg_policy *pol = blkcg_policy[i];
119                 struct blkg_policy_data *pd;
120
121                 if (!blkcg_policy_enabled(q, pol))
122                         continue;
123
124                 /* alloc per-policy data and attach it to blkg */
125                 pd = pol->pd_alloc_fn(gfp_mask, q->node);
126                 if (!pd)
127                         goto err_free;
128
129                 blkg->pd[i] = pd;
130                 pd->blkg = blkg;
131                 pd->plid = i;
132         }
133
134         return blkg;
135
136 err_free:
137         blkg_free(blkg);
138         return NULL;
139 }
140
141 struct blkcg_gq *blkg_lookup_slowpath(struct blkcg *blkcg,
142                                       struct request_queue *q, bool update_hint)
143 {
144         struct blkcg_gq *blkg;
145
146         /*
147          * Hint didn't match.  Look up from the radix tree.  Note that the
148          * hint can only be updated under queue_lock as otherwise @blkg
149          * could have already been removed from blkg_tree.  The caller is
150          * responsible for grabbing queue_lock if @update_hint.
151          */
152         blkg = radix_tree_lookup(&blkcg->blkg_tree, q->id);
153         if (blkg && blkg->q == q) {
154                 if (update_hint) {
155                         lockdep_assert_held(q->queue_lock);
156                         rcu_assign_pointer(blkcg->blkg_hint, blkg);
157                 }
158                 return blkg;
159         }
160
161         return NULL;
162 }
163 EXPORT_SYMBOL_GPL(blkg_lookup_slowpath);
164
165 /*
166  * If @new_blkg is %NULL, this function tries to allocate a new one as
167  * necessary using %GFP_NOWAIT.  @new_blkg is always consumed on return.
168  */
169 static struct blkcg_gq *blkg_create(struct blkcg *blkcg,
170                                     struct request_queue *q,
171                                     struct blkcg_gq *new_blkg)
172 {
173         struct blkcg_gq *blkg;
174         struct bdi_writeback_congested *wb_congested;
175         int i, ret;
176
177         WARN_ON_ONCE(!rcu_read_lock_held());
178         lockdep_assert_held(q->queue_lock);
179
180         /* blkg holds a reference to blkcg */
181         if (!css_tryget_online(&blkcg->css)) {
182                 ret = -EINVAL;
183                 goto err_free_blkg;
184         }
185
186         wb_congested = wb_congested_get_create(&q->backing_dev_info,
187                                                blkcg->css.id, GFP_NOWAIT);
188         if (!wb_congested) {
189                 ret = -ENOMEM;
190                 goto err_put_css;
191         }
192
193         /* allocate */
194         if (!new_blkg) {
195                 new_blkg = blkg_alloc(blkcg, q, GFP_NOWAIT);
196                 if (unlikely(!new_blkg)) {
197                         ret = -ENOMEM;
198                         goto err_put_congested;
199                 }
200         }
201         blkg = new_blkg;
202         blkg->wb_congested = wb_congested;
203
204         /* link parent */
205         if (blkcg_parent(blkcg)) {
206                 blkg->parent = __blkg_lookup(blkcg_parent(blkcg), q, false);
207                 if (WARN_ON_ONCE(!blkg->parent)) {
208                         ret = -EINVAL;
209                         goto err_put_congested;
210                 }
211                 blkg_get(blkg->parent);
212         }
213
214         /* invoke per-policy init */
215         for (i = 0; i < BLKCG_MAX_POLS; i++) {
216                 struct blkcg_policy *pol = blkcg_policy[i];
217
218                 if (blkg->pd[i] && pol->pd_init_fn)
219                         pol->pd_init_fn(blkg->pd[i]);
220         }
221
222         /* insert */
223         spin_lock(&blkcg->lock);
224         ret = radix_tree_insert(&blkcg->blkg_tree, q->id, blkg);
225         if (likely(!ret)) {
226                 hlist_add_head_rcu(&blkg->blkcg_node, &blkcg->blkg_list);
227                 list_add(&blkg->q_node, &q->blkg_list);
228
229                 for (i = 0; i < BLKCG_MAX_POLS; i++) {
230                         struct blkcg_policy *pol = blkcg_policy[i];
231
232                         if (blkg->pd[i] && pol->pd_online_fn)
233                                 pol->pd_online_fn(blkg->pd[i]);
234                 }
235         }
236         blkg->online = true;
237         spin_unlock(&blkcg->lock);
238
239         if (!ret)
240                 return blkg;
241
242         /* @blkg failed fully initialized, use the usual release path */
243         blkg_put(blkg);
244         return ERR_PTR(ret);
245
246 err_put_congested:
247         wb_congested_put(wb_congested);
248 err_put_css:
249         css_put(&blkcg->css);
250 err_free_blkg:
251         blkg_free(new_blkg);
252         return ERR_PTR(ret);
253 }
254
255 /**
256  * blkg_lookup_create - lookup blkg, try to create one if not there
257  * @blkcg: blkcg of interest
258  * @q: request_queue of interest
259  *
260  * Lookup blkg for the @blkcg - @q pair.  If it doesn't exist, try to
261  * create one.  blkg creation is performed recursively from blkcg_root such
262  * that all non-root blkg's have access to the parent blkg.  This function
263  * should be called under RCU read lock and @q->queue_lock.
264  *
265  * Returns pointer to the looked up or created blkg on success, ERR_PTR()
266  * value on error.  If @q is dead, returns ERR_PTR(-EINVAL).  If @q is not
267  * dead and bypassing, returns ERR_PTR(-EBUSY).
268  */
269 struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg,
270                                     struct request_queue *q)
271 {
272         struct blkcg_gq *blkg;
273
274         WARN_ON_ONCE(!rcu_read_lock_held());
275         lockdep_assert_held(q->queue_lock);
276
277         /*
278          * This could be the first entry point of blkcg implementation and
279          * we shouldn't allow anything to go through for a bypassing queue.
280          */
281         if (unlikely(blk_queue_bypass(q)))
282                 return ERR_PTR(blk_queue_dying(q) ? -EINVAL : -EBUSY);
283
284         blkg = __blkg_lookup(blkcg, q, true);
285         if (blkg)
286                 return blkg;
287
288         /*
289          * Create blkgs walking down from blkcg_root to @blkcg, so that all
290          * non-root blkgs have access to their parents.
291          */
292         while (true) {
293                 struct blkcg *pos = blkcg;
294                 struct blkcg *parent = blkcg_parent(blkcg);
295
296                 while (parent && !__blkg_lookup(parent, q, false)) {
297                         pos = parent;
298                         parent = blkcg_parent(parent);
299                 }
300
301                 blkg = blkg_create(pos, q, NULL);
302                 if (pos == blkcg || IS_ERR(blkg))
303                         return blkg;
304         }
305 }
306
307 static void blkg_destroy(struct blkcg_gq *blkg)
308 {
309         struct blkcg *blkcg = blkg->blkcg;
310         struct blkcg_gq *parent = blkg->parent;
311         int i;
312
313         lockdep_assert_held(blkg->q->queue_lock);
314         lockdep_assert_held(&blkcg->lock);
315
316         /* Something wrong if we are trying to remove same group twice */
317         WARN_ON_ONCE(list_empty(&blkg->q_node));
318         WARN_ON_ONCE(hlist_unhashed(&blkg->blkcg_node));
319
320         for (i = 0; i < BLKCG_MAX_POLS; i++) {
321                 struct blkcg_policy *pol = blkcg_policy[i];
322
323                 if (blkg->pd[i] && pol->pd_offline_fn)
324                         pol->pd_offline_fn(blkg->pd[i]);
325         }
326
327         if (parent) {
328                 blkg_rwstat_add_aux(&parent->stat_bytes, &blkg->stat_bytes);
329                 blkg_rwstat_add_aux(&parent->stat_ios, &blkg->stat_ios);
330         }
331
332         blkg->online = false;
333
334         radix_tree_delete(&blkcg->blkg_tree, blkg->q->id);
335         list_del_init(&blkg->q_node);
336         hlist_del_init_rcu(&blkg->blkcg_node);
337
338         /*
339          * Both setting lookup hint to and clearing it from @blkg are done
340          * under queue_lock.  If it's not pointing to @blkg now, it never
341          * will.  Hint assignment itself can race safely.
342          */
343         if (rcu_access_pointer(blkcg->blkg_hint) == blkg)
344                 rcu_assign_pointer(blkcg->blkg_hint, NULL);
345
346         /*
347          * Put the reference taken at the time of creation so that when all
348          * queues are gone, group can be destroyed.
349          */
350         blkg_put(blkg);
351 }
352
353 /**
354  * blkg_destroy_all - destroy all blkgs associated with a request_queue
355  * @q: request_queue of interest
356  *
357  * Destroy all blkgs associated with @q.
358  */
359 static void blkg_destroy_all(struct request_queue *q)
360 {
361         struct blkcg_gq *blkg, *n;
362
363         lockdep_assert_held(q->queue_lock);
364
365         list_for_each_entry_safe(blkg, n, &q->blkg_list, q_node) {
366                 struct blkcg *blkcg = blkg->blkcg;
367
368                 spin_lock(&blkcg->lock);
369                 blkg_destroy(blkg);
370                 spin_unlock(&blkcg->lock);
371         }
372 }
373
374 /*
375  * A group is RCU protected, but having an rcu lock does not mean that one
376  * can access all the fields of blkg and assume these are valid.  For
377  * example, don't try to follow throtl_data and request queue links.
378  *
379  * Having a reference to blkg under an rcu allows accesses to only values
380  * local to groups like group stats and group rate limits.
381  */
382 void __blkg_release_rcu(struct rcu_head *rcu_head)
383 {
384         struct blkcg_gq *blkg = container_of(rcu_head, struct blkcg_gq, rcu_head);
385
386         /* release the blkcg and parent blkg refs this blkg has been holding */
387         css_put(&blkg->blkcg->css);
388         if (blkg->parent)
389                 blkg_put(blkg->parent);
390
391         wb_congested_put(blkg->wb_congested);
392
393         blkg_free(blkg);
394 }
395 EXPORT_SYMBOL_GPL(__blkg_release_rcu);
396
397 /*
398  * The next function used by blk_queue_for_each_rl().  It's a bit tricky
399  * because the root blkg uses @q->root_rl instead of its own rl.
400  */
401 struct request_list *__blk_queue_next_rl(struct request_list *rl,
402                                          struct request_queue *q)
403 {
404         struct list_head *ent;
405         struct blkcg_gq *blkg;
406
407         /*
408          * Determine the current blkg list_head.  The first entry is
409          * root_rl which is off @q->blkg_list and mapped to the head.
410          */
411         if (rl == &q->root_rl) {
412                 ent = &q->blkg_list;
413                 /* There are no more block groups, hence no request lists */
414                 if (list_empty(ent))
415                         return NULL;
416         } else {
417                 blkg = container_of(rl, struct blkcg_gq, rl);
418                 ent = &blkg->q_node;
419         }
420
421         /* walk to the next list_head, skip root blkcg */
422         ent = ent->next;
423         if (ent == &q->root_blkg->q_node)
424                 ent = ent->next;
425         if (ent == &q->blkg_list)
426                 return NULL;
427
428         blkg = container_of(ent, struct blkcg_gq, q_node);
429         return &blkg->rl;
430 }
431
432 static int blkcg_reset_stats(struct cgroup_subsys_state *css,
433                              struct cftype *cftype, u64 val)
434 {
435         struct blkcg *blkcg = css_to_blkcg(css);
436         struct blkcg_gq *blkg;
437         int i;
438
439         mutex_lock(&blkcg_pol_mutex);
440         spin_lock_irq(&blkcg->lock);
441
442         /*
443          * Note that stat reset is racy - it doesn't synchronize against
444          * stat updates.  This is a debug feature which shouldn't exist
445          * anyway.  If you get hit by a race, retry.
446          */
447         hlist_for_each_entry(blkg, &blkcg->blkg_list, blkcg_node) {
448                 blkg_rwstat_reset(&blkg->stat_bytes);
449                 blkg_rwstat_reset(&blkg->stat_ios);
450
451                 for (i = 0; i < BLKCG_MAX_POLS; i++) {
452                         struct blkcg_policy *pol = blkcg_policy[i];
453
454                         if (blkg->pd[i] && pol->pd_reset_stats_fn)
455                                 pol->pd_reset_stats_fn(blkg->pd[i]);
456                 }
457         }
458
459         spin_unlock_irq(&blkcg->lock);
460         mutex_unlock(&blkcg_pol_mutex);
461         return 0;
462 }
463
464 static const char *blkg_dev_name(struct blkcg_gq *blkg)
465 {
466         /* some drivers (floppy) instantiate a queue w/o disk registered */
467         if (blkg->q->backing_dev_info.dev)
468                 return dev_name(blkg->q->backing_dev_info.dev);
469         return NULL;
470 }
471
472 /**
473  * blkcg_print_blkgs - helper for printing per-blkg data
474  * @sf: seq_file to print to
475  * @blkcg: blkcg of interest
476  * @prfill: fill function to print out a blkg
477  * @pol: policy in question
478  * @data: data to be passed to @prfill
479  * @show_total: to print out sum of prfill return values or not
480  *
481  * This function invokes @prfill on each blkg of @blkcg if pd for the
482  * policy specified by @pol exists.  @prfill is invoked with @sf, the
483  * policy data and @data and the matching queue lock held.  If @show_total
484  * is %true, the sum of the return values from @prfill is printed with
485  * "Total" label at the end.
486  *
487  * This is to be used to construct print functions for
488  * cftype->read_seq_string method.
489  */
490 void blkcg_print_blkgs(struct seq_file *sf, struct blkcg *blkcg,
491                        u64 (*prfill)(struct seq_file *,
492                                      struct blkg_policy_data *, int),
493                        const struct blkcg_policy *pol, int data,
494                        bool show_total)
495 {
496         struct blkcg_gq *blkg;
497         u64 total = 0;
498
499         rcu_read_lock();
500         hlist_for_each_entry_rcu(blkg, &blkcg->blkg_list, blkcg_node) {
501                 spin_lock_irq(blkg->q->queue_lock);
502                 if (blkcg_policy_enabled(blkg->q, pol))
503                         total += prfill(sf, blkg->pd[pol->plid], data);
504                 spin_unlock_irq(blkg->q->queue_lock);
505         }
506         rcu_read_unlock();
507
508         if (show_total)
509                 seq_printf(sf, "Total %llu\n", (unsigned long long)total);
510 }
511 EXPORT_SYMBOL_GPL(blkcg_print_blkgs);
512
513 /**
514  * __blkg_prfill_u64 - prfill helper for a single u64 value
515  * @sf: seq_file to print to
516  * @pd: policy private data of interest
517  * @v: value to print
518  *
519  * Print @v to @sf for the device assocaited with @pd.
520  */
521 u64 __blkg_prfill_u64(struct seq_file *sf, struct blkg_policy_data *pd, u64 v)
522 {
523         const char *dname = blkg_dev_name(pd->blkg);
524
525         if (!dname)
526                 return 0;
527
528         seq_printf(sf, "%s %llu\n", dname, (unsigned long long)v);
529         return v;
530 }
531 EXPORT_SYMBOL_GPL(__blkg_prfill_u64);
532
533 /**
534  * __blkg_prfill_rwstat - prfill helper for a blkg_rwstat
535  * @sf: seq_file to print to
536  * @pd: policy private data of interest
537  * @rwstat: rwstat to print
538  *
539  * Print @rwstat to @sf for the device assocaited with @pd.
540  */
541 u64 __blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
542                          const struct blkg_rwstat *rwstat)
543 {
544         static const char *rwstr[] = {
545                 [BLKG_RWSTAT_READ]      = "Read",
546                 [BLKG_RWSTAT_WRITE]     = "Write",
547                 [BLKG_RWSTAT_SYNC]      = "Sync",
548                 [BLKG_RWSTAT_ASYNC]     = "Async",
549         };
550         const char *dname = blkg_dev_name(pd->blkg);
551         u64 v;
552         int i;
553
554         if (!dname)
555                 return 0;
556
557         for (i = 0; i < BLKG_RWSTAT_NR; i++)
558                 seq_printf(sf, "%s %s %llu\n", dname, rwstr[i],
559                            (unsigned long long)atomic64_read(&rwstat->aux_cnt[i]));
560
561         v = atomic64_read(&rwstat->aux_cnt[BLKG_RWSTAT_READ]) +
562                 atomic64_read(&rwstat->aux_cnt[BLKG_RWSTAT_WRITE]);
563         seq_printf(sf, "%s Total %llu\n", dname, (unsigned long long)v);
564         return v;
565 }
566 EXPORT_SYMBOL_GPL(__blkg_prfill_rwstat);
567
568 /**
569  * blkg_prfill_stat - prfill callback for blkg_stat
570  * @sf: seq_file to print to
571  * @pd: policy private data of interest
572  * @off: offset to the blkg_stat in @pd
573  *
574  * prfill callback for printing a blkg_stat.
575  */
576 u64 blkg_prfill_stat(struct seq_file *sf, struct blkg_policy_data *pd, int off)
577 {
578         return __blkg_prfill_u64(sf, pd, blkg_stat_read((void *)pd + off));
579 }
580 EXPORT_SYMBOL_GPL(blkg_prfill_stat);
581
582 /**
583  * blkg_prfill_rwstat - prfill callback for blkg_rwstat
584  * @sf: seq_file to print to
585  * @pd: policy private data of interest
586  * @off: offset to the blkg_rwstat in @pd
587  *
588  * prfill callback for printing a blkg_rwstat.
589  */
590 u64 blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
591                        int off)
592 {
593         struct blkg_rwstat rwstat = blkg_rwstat_read((void *)pd + off);
594
595         return __blkg_prfill_rwstat(sf, pd, &rwstat);
596 }
597 EXPORT_SYMBOL_GPL(blkg_prfill_rwstat);
598
599 static u64 blkg_prfill_rwstat_field(struct seq_file *sf,
600                                     struct blkg_policy_data *pd, int off)
601 {
602         struct blkg_rwstat rwstat = blkg_rwstat_read((void *)pd->blkg + off);
603
604         return __blkg_prfill_rwstat(sf, pd, &rwstat);
605 }
606
607 /**
608  * blkg_print_stat_bytes - seq_show callback for blkg->stat_bytes
609  * @sf: seq_file to print to
610  * @v: unused
611  *
612  * To be used as cftype->seq_show to print blkg->stat_bytes.
613  * cftype->private must be set to the blkcg_policy.
614  */
615 int blkg_print_stat_bytes(struct seq_file *sf, void *v)
616 {
617         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
618                           blkg_prfill_rwstat_field, (void *)seq_cft(sf)->private,
619                           offsetof(struct blkcg_gq, stat_bytes), true);
620         return 0;
621 }
622 EXPORT_SYMBOL_GPL(blkg_print_stat_bytes);
623
624 /**
625  * blkg_print_stat_bytes - seq_show callback for blkg->stat_ios
626  * @sf: seq_file to print to
627  * @v: unused
628  *
629  * To be used as cftype->seq_show to print blkg->stat_ios.  cftype->private
630  * must be set to the blkcg_policy.
631  */
632 int blkg_print_stat_ios(struct seq_file *sf, void *v)
633 {
634         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
635                           blkg_prfill_rwstat_field, (void *)seq_cft(sf)->private,
636                           offsetof(struct blkcg_gq, stat_ios), true);
637         return 0;
638 }
639 EXPORT_SYMBOL_GPL(blkg_print_stat_ios);
640
641 static u64 blkg_prfill_rwstat_field_recursive(struct seq_file *sf,
642                                               struct blkg_policy_data *pd,
643                                               int off)
644 {
645         struct blkg_rwstat rwstat = blkg_rwstat_recursive_sum(pd->blkg,
646                                                               NULL, off);
647         return __blkg_prfill_rwstat(sf, pd, &rwstat);
648 }
649
650 /**
651  * blkg_print_stat_bytes_recursive - recursive version of blkg_print_stat_bytes
652  * @sf: seq_file to print to
653  * @v: unused
654  */
655 int blkg_print_stat_bytes_recursive(struct seq_file *sf, void *v)
656 {
657         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
658                           blkg_prfill_rwstat_field_recursive,
659                           (void *)seq_cft(sf)->private,
660                           offsetof(struct blkcg_gq, stat_bytes), true);
661         return 0;
662 }
663 EXPORT_SYMBOL_GPL(blkg_print_stat_bytes_recursive);
664
665 /**
666  * blkg_print_stat_ios_recursive - recursive version of blkg_print_stat_ios
667  * @sf: seq_file to print to
668  * @v: unused
669  */
670 int blkg_print_stat_ios_recursive(struct seq_file *sf, void *v)
671 {
672         blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
673                           blkg_prfill_rwstat_field_recursive,
674                           (void *)seq_cft(sf)->private,
675                           offsetof(struct blkcg_gq, stat_ios), true);
676         return 0;
677 }
678 EXPORT_SYMBOL_GPL(blkg_print_stat_ios_recursive);
679
680 /**
681  * blkg_stat_recursive_sum - collect hierarchical blkg_stat
682  * @blkg: blkg of interest
683  * @pol: blkcg_policy which contains the blkg_stat
684  * @off: offset to the blkg_stat in blkg_policy_data or @blkg
685  *
686  * Collect the blkg_stat specified by @blkg, @pol and @off and all its
687  * online descendants and their aux counts.  The caller must be holding the
688  * queue lock for online tests.
689  *
690  * If @pol is NULL, blkg_stat is at @off bytes into @blkg; otherwise, it is
691  * at @off bytes into @blkg's blkg_policy_data of the policy.
692  */
693 u64 blkg_stat_recursive_sum(struct blkcg_gq *blkg,
694                             struct blkcg_policy *pol, int off)
695 {
696         struct blkcg_gq *pos_blkg;
697         struct cgroup_subsys_state *pos_css;
698         u64 sum = 0;
699
700         lockdep_assert_held(blkg->q->queue_lock);
701
702         rcu_read_lock();
703         blkg_for_each_descendant_pre(pos_blkg, pos_css, blkg) {
704                 struct blkg_stat *stat;
705
706                 if (!pos_blkg->online)
707                         continue;
708
709                 if (pol)
710                         stat = (void *)blkg_to_pd(pos_blkg, pol) + off;
711                 else
712                         stat = (void *)blkg + off;
713
714                 sum += blkg_stat_read(stat) + atomic64_read(&stat->aux_cnt);
715         }
716         rcu_read_unlock();
717
718         return sum;
719 }
720 EXPORT_SYMBOL_GPL(blkg_stat_recursive_sum);
721
722 /**
723  * blkg_rwstat_recursive_sum - collect hierarchical blkg_rwstat
724  * @blkg: blkg of interest
725  * @pol: blkcg_policy which contains the blkg_rwstat
726  * @off: offset to the blkg_rwstat in blkg_policy_data or @blkg
727  *
728  * Collect the blkg_rwstat specified by @blkg, @pol and @off and all its
729  * online descendants and their aux counts.  The caller must be holding the
730  * queue lock for online tests.
731  *
732  * If @pol is NULL, blkg_rwstat is at @off bytes into @blkg; otherwise, it
733  * is at @off bytes into @blkg's blkg_policy_data of the policy.
734  */
735 struct blkg_rwstat blkg_rwstat_recursive_sum(struct blkcg_gq *blkg,
736                                              struct blkcg_policy *pol, int off)
737 {
738         struct blkcg_gq *pos_blkg;
739         struct cgroup_subsys_state *pos_css;
740         struct blkg_rwstat sum = { };
741         int i;
742
743         lockdep_assert_held(blkg->q->queue_lock);
744
745         rcu_read_lock();
746         blkg_for_each_descendant_pre(pos_blkg, pos_css, blkg) {
747                 struct blkg_rwstat *rwstat, tmp;
748
749                 if (!pos_blkg->online)
750                         continue;
751
752                 if (pol)
753                         rwstat = (void *)blkg_to_pd(pos_blkg, pol) + off;
754                 else
755                         rwstat = (void *)pos_blkg + off;
756
757                 tmp = blkg_rwstat_read(rwstat);
758
759                 for (i = 0; i < BLKG_RWSTAT_NR; i++)
760                         atomic64_add(atomic64_read(&tmp.aux_cnt[i]) +
761                                      atomic64_read(&rwstat->aux_cnt[i]),
762                                      &sum.aux_cnt[i]);
763         }
764         rcu_read_unlock();
765
766         return sum;
767 }
768 EXPORT_SYMBOL_GPL(blkg_rwstat_recursive_sum);
769
770 /**
771  * blkg_conf_prep - parse and prepare for per-blkg config update
772  * @blkcg: target block cgroup
773  * @pol: target policy
774  * @input: input string
775  * @ctx: blkg_conf_ctx to be filled
776  *
777  * Parse per-blkg config update from @input and initialize @ctx with the
778  * result.  @ctx->blkg points to the blkg to be updated and @ctx->v the new
779  * value.  This function returns with RCU read lock and queue lock held and
780  * must be paired with blkg_conf_finish().
781  */
782 int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
783                    const char *input, struct blkg_conf_ctx *ctx)
784         __acquires(rcu) __acquires(disk->queue->queue_lock)
785 {
786         struct gendisk *disk;
787         struct blkcg_gq *blkg;
788         unsigned int major, minor;
789         unsigned long long v;
790         int part, ret;
791
792         if (sscanf(input, "%u:%u %llu", &major, &minor, &v) != 3)
793                 return -EINVAL;
794
795         disk = get_gendisk(MKDEV(major, minor), &part);
796         if (!disk)
797                 return -EINVAL;
798         if (part) {
799                 put_disk(disk);
800                 return -EINVAL;
801         }
802
803         rcu_read_lock();
804         spin_lock_irq(disk->queue->queue_lock);
805
806         if (blkcg_policy_enabled(disk->queue, pol))
807                 blkg = blkg_lookup_create(blkcg, disk->queue);
808         else
809                 blkg = ERR_PTR(-EINVAL);
810
811         if (IS_ERR(blkg)) {
812                 ret = PTR_ERR(blkg);
813                 rcu_read_unlock();
814                 spin_unlock_irq(disk->queue->queue_lock);
815                 put_disk(disk);
816                 /*
817                  * If queue was bypassing, we should retry.  Do so after a
818                  * short msleep().  It isn't strictly necessary but queue
819                  * can be bypassing for some time and it's always nice to
820                  * avoid busy looping.
821                  */
822                 if (ret == -EBUSY) {
823                         msleep(10);
824                         ret = restart_syscall();
825                 }
826                 return ret;
827         }
828
829         ctx->disk = disk;
830         ctx->blkg = blkg;
831         ctx->v = v;
832         return 0;
833 }
834 EXPORT_SYMBOL_GPL(blkg_conf_prep);
835
836 /**
837  * blkg_conf_finish - finish up per-blkg config update
838  * @ctx: blkg_conf_ctx intiailized by blkg_conf_prep()
839  *
840  * Finish up after per-blkg config update.  This function must be paired
841  * with blkg_conf_prep().
842  */
843 void blkg_conf_finish(struct blkg_conf_ctx *ctx)
844         __releases(ctx->disk->queue->queue_lock) __releases(rcu)
845 {
846         spin_unlock_irq(ctx->disk->queue->queue_lock);
847         rcu_read_unlock();
848         put_disk(ctx->disk);
849 }
850 EXPORT_SYMBOL_GPL(blkg_conf_finish);
851
852 struct cftype blkcg_files[] = {
853         {
854                 .name = "reset_stats",
855                 .write_u64 = blkcg_reset_stats,
856         },
857         { }     /* terminate */
858 };
859
860 /**
861  * blkcg_css_offline - cgroup css_offline callback
862  * @css: css of interest
863  *
864  * This function is called when @css is about to go away and responsible
865  * for shooting down all blkgs associated with @css.  blkgs should be
866  * removed while holding both q and blkcg locks.  As blkcg lock is nested
867  * inside q lock, this function performs reverse double lock dancing.
868  *
869  * This is the blkcg counterpart of ioc_release_fn().
870  */
871 static void blkcg_css_offline(struct cgroup_subsys_state *css)
872 {
873         struct blkcg *blkcg = css_to_blkcg(css);
874
875         spin_lock_irq(&blkcg->lock);
876
877         while (!hlist_empty(&blkcg->blkg_list)) {
878                 struct blkcg_gq *blkg = hlist_entry(blkcg->blkg_list.first,
879                                                 struct blkcg_gq, blkcg_node);
880                 struct request_queue *q = blkg->q;
881
882                 if (spin_trylock(q->queue_lock)) {
883                         blkg_destroy(blkg);
884                         spin_unlock(q->queue_lock);
885                 } else {
886                         spin_unlock_irq(&blkcg->lock);
887                         cpu_relax();
888                         spin_lock_irq(&blkcg->lock);
889                 }
890         }
891
892         spin_unlock_irq(&blkcg->lock);
893
894         wb_blkcg_offline(blkcg);
895 }
896
897 static void blkcg_css_free(struct cgroup_subsys_state *css)
898 {
899         struct blkcg *blkcg = css_to_blkcg(css);
900         int i;
901
902         mutex_lock(&blkcg_pol_mutex);
903
904         list_del(&blkcg->all_blkcgs_node);
905
906         for (i = 0; i < BLKCG_MAX_POLS; i++)
907                 if (blkcg->cpd[i])
908                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
909
910         mutex_unlock(&blkcg_pol_mutex);
911
912         kfree(blkcg);
913 }
914
915 static struct cgroup_subsys_state *
916 blkcg_css_alloc(struct cgroup_subsys_state *parent_css)
917 {
918         struct blkcg *blkcg;
919         struct cgroup_subsys_state *ret;
920         int i;
921
922         mutex_lock(&blkcg_pol_mutex);
923
924         if (!parent_css) {
925                 blkcg = &blkcg_root;
926         } else {
927                 blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL);
928                 if (!blkcg) {
929                         ret = ERR_PTR(-ENOMEM);
930                         goto free_blkcg;
931                 }
932         }
933
934         for (i = 0; i < BLKCG_MAX_POLS ; i++) {
935                 struct blkcg_policy *pol = blkcg_policy[i];
936                 struct blkcg_policy_data *cpd;
937
938                 /*
939                  * If the policy hasn't been attached yet, wait for it
940                  * to be attached before doing anything else. Otherwise,
941                  * check if the policy requires any specific per-cgroup
942                  * data: if it does, allocate and initialize it.
943                  */
944                 if (!pol || !pol->cpd_alloc_fn)
945                         continue;
946
947                 cpd = pol->cpd_alloc_fn(GFP_KERNEL);
948                 if (!cpd) {
949                         ret = ERR_PTR(-ENOMEM);
950                         goto free_pd_blkcg;
951                 }
952                 blkcg->cpd[i] = cpd;
953                 cpd->blkcg = blkcg;
954                 cpd->plid = i;
955                 if (pol->cpd_init_fn)
956                         pol->cpd_init_fn(cpd);
957         }
958
959         spin_lock_init(&blkcg->lock);
960         INIT_RADIX_TREE(&blkcg->blkg_tree, GFP_NOWAIT);
961         INIT_HLIST_HEAD(&blkcg->blkg_list);
962 #ifdef CONFIG_CGROUP_WRITEBACK
963         INIT_LIST_HEAD(&blkcg->cgwb_list);
964 #endif
965         list_add_tail(&blkcg->all_blkcgs_node, &all_blkcgs);
966
967         mutex_unlock(&blkcg_pol_mutex);
968         return &blkcg->css;
969
970 free_pd_blkcg:
971         for (i--; i >= 0; i--)
972                 if (blkcg->cpd[i])
973                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
974 free_blkcg:
975         kfree(blkcg);
976         mutex_unlock(&blkcg_pol_mutex);
977         return ret;
978 }
979
980 /**
981  * blkcg_init_queue - initialize blkcg part of request queue
982  * @q: request_queue to initialize
983  *
984  * Called from blk_alloc_queue_node(). Responsible for initializing blkcg
985  * part of new request_queue @q.
986  *
987  * RETURNS:
988  * 0 on success, -errno on failure.
989  */
990 int blkcg_init_queue(struct request_queue *q)
991 {
992         struct blkcg_gq *new_blkg, *blkg;
993         bool preloaded;
994         int ret;
995
996         new_blkg = blkg_alloc(&blkcg_root, q, GFP_KERNEL);
997         if (!new_blkg)
998                 return -ENOMEM;
999
1000         preloaded = !radix_tree_preload(GFP_KERNEL);
1001
1002         /*
1003          * Make sure the root blkg exists and count the existing blkgs.  As
1004          * @q is bypassing at this point, blkg_lookup_create() can't be
1005          * used.  Open code insertion.
1006          */
1007         rcu_read_lock();
1008         spin_lock_irq(q->queue_lock);
1009         blkg = blkg_create(&blkcg_root, q, new_blkg);
1010         spin_unlock_irq(q->queue_lock);
1011         rcu_read_unlock();
1012
1013         if (preloaded)
1014                 radix_tree_preload_end();
1015
1016         if (IS_ERR(blkg)) {
1017                 blkg_free(new_blkg);
1018                 return PTR_ERR(blkg);
1019         }
1020
1021         q->root_blkg = blkg;
1022         q->root_rl.blkg = blkg;
1023
1024         ret = blk_throtl_init(q);
1025         if (ret) {
1026                 spin_lock_irq(q->queue_lock);
1027                 blkg_destroy_all(q);
1028                 spin_unlock_irq(q->queue_lock);
1029         }
1030         return ret;
1031 }
1032
1033 /**
1034  * blkcg_drain_queue - drain blkcg part of request_queue
1035  * @q: request_queue to drain
1036  *
1037  * Called from blk_drain_queue().  Responsible for draining blkcg part.
1038  */
1039 void blkcg_drain_queue(struct request_queue *q)
1040 {
1041         lockdep_assert_held(q->queue_lock);
1042
1043         /*
1044          * @q could be exiting and already have destroyed all blkgs as
1045          * indicated by NULL root_blkg.  If so, don't confuse policies.
1046          */
1047         if (!q->root_blkg)
1048                 return;
1049
1050         blk_throtl_drain(q);
1051 }
1052
1053 /**
1054  * blkcg_exit_queue - exit and release blkcg part of request_queue
1055  * @q: request_queue being released
1056  *
1057  * Called from blk_release_queue().  Responsible for exiting blkcg part.
1058  */
1059 void blkcg_exit_queue(struct request_queue *q)
1060 {
1061         spin_lock_irq(q->queue_lock);
1062         blkg_destroy_all(q);
1063         spin_unlock_irq(q->queue_lock);
1064
1065         blk_throtl_exit(q);
1066 }
1067
1068 /*
1069  * We cannot support shared io contexts, as we have no mean to support
1070  * two tasks with the same ioc in two different groups without major rework
1071  * of the main cic data structures.  For now we allow a task to change
1072  * its cgroup only if it's the only owner of its ioc.
1073  */
1074 static int blkcg_can_attach(struct cgroup_subsys_state *css,
1075                             struct cgroup_taskset *tset)
1076 {
1077         struct task_struct *task;
1078         struct io_context *ioc;
1079         int ret = 0;
1080
1081         /* task_lock() is needed to avoid races with exit_io_context() */
1082         cgroup_taskset_for_each(task, tset) {
1083                 task_lock(task);
1084                 ioc = task->io_context;
1085                 if (ioc && atomic_read(&ioc->nr_tasks) > 1)
1086                         ret = -EINVAL;
1087                 task_unlock(task);
1088                 if (ret)
1089                         break;
1090         }
1091         return ret;
1092 }
1093
1094 struct cgroup_subsys blkio_cgrp_subsys = {
1095         .css_alloc = blkcg_css_alloc,
1096         .css_offline = blkcg_css_offline,
1097         .css_free = blkcg_css_free,
1098         .can_attach = blkcg_can_attach,
1099         .legacy_cftypes = blkcg_files,
1100 #ifdef CONFIG_MEMCG
1101         /*
1102          * This ensures that, if available, memcg is automatically enabled
1103          * together on the default hierarchy so that the owner cgroup can
1104          * be retrieved from writeback pages.
1105          */
1106         .depends_on = 1 << memory_cgrp_id,
1107 #endif
1108 };
1109 EXPORT_SYMBOL_GPL(blkio_cgrp_subsys);
1110
1111 /**
1112  * blkcg_activate_policy - activate a blkcg policy on a request_queue
1113  * @q: request_queue of interest
1114  * @pol: blkcg policy to activate
1115  *
1116  * Activate @pol on @q.  Requires %GFP_KERNEL context.  @q goes through
1117  * bypass mode to populate its blkgs with policy_data for @pol.
1118  *
1119  * Activation happens with @q bypassed, so nobody would be accessing blkgs
1120  * from IO path.  Update of each blkg is protected by both queue and blkcg
1121  * locks so that holding either lock and testing blkcg_policy_enabled() is
1122  * always enough for dereferencing policy data.
1123  *
1124  * The caller is responsible for synchronizing [de]activations and policy
1125  * [un]registerations.  Returns 0 on success, -errno on failure.
1126  */
1127 int blkcg_activate_policy(struct request_queue *q,
1128                           const struct blkcg_policy *pol)
1129 {
1130         struct blkg_policy_data *pd_prealloc = NULL;
1131         struct blkcg_gq *blkg;
1132         int ret;
1133
1134         if (blkcg_policy_enabled(q, pol))
1135                 return 0;
1136
1137         blk_queue_bypass_start(q);
1138 pd_prealloc:
1139         if (!pd_prealloc) {
1140                 pd_prealloc = pol->pd_alloc_fn(GFP_KERNEL, q->node);
1141                 if (!pd_prealloc) {
1142                         ret = -ENOMEM;
1143                         goto out_bypass_end;
1144                 }
1145         }
1146
1147         spin_lock_irq(q->queue_lock);
1148
1149         list_for_each_entry(blkg, &q->blkg_list, q_node) {
1150                 struct blkg_policy_data *pd;
1151
1152                 if (blkg->pd[pol->plid])
1153                         continue;
1154
1155                 pd = pol->pd_alloc_fn(GFP_NOWAIT, q->node);
1156                 if (!pd)
1157                         swap(pd, pd_prealloc);
1158                 if (!pd) {
1159                         spin_unlock_irq(q->queue_lock);
1160                         goto pd_prealloc;
1161                 }
1162
1163                 blkg->pd[pol->plid] = pd;
1164                 pd->blkg = blkg;
1165                 pd->plid = pol->plid;
1166                 if (pol->pd_init_fn)
1167                         pol->pd_init_fn(pd);
1168         }
1169
1170         __set_bit(pol->plid, q->blkcg_pols);
1171         ret = 0;
1172
1173         spin_unlock_irq(q->queue_lock);
1174 out_bypass_end:
1175         blk_queue_bypass_end(q);
1176         if (pd_prealloc)
1177                 pol->pd_free_fn(pd_prealloc);
1178         return ret;
1179 }
1180 EXPORT_SYMBOL_GPL(blkcg_activate_policy);
1181
1182 /**
1183  * blkcg_deactivate_policy - deactivate a blkcg policy on a request_queue
1184  * @q: request_queue of interest
1185  * @pol: blkcg policy to deactivate
1186  *
1187  * Deactivate @pol on @q.  Follows the same synchronization rules as
1188  * blkcg_activate_policy().
1189  */
1190 void blkcg_deactivate_policy(struct request_queue *q,
1191                              const struct blkcg_policy *pol)
1192 {
1193         struct blkcg_gq *blkg;
1194
1195         if (!blkcg_policy_enabled(q, pol))
1196                 return;
1197
1198         blk_queue_bypass_start(q);
1199         spin_lock_irq(q->queue_lock);
1200
1201         __clear_bit(pol->plid, q->blkcg_pols);
1202
1203         list_for_each_entry(blkg, &q->blkg_list, q_node) {
1204                 /* grab blkcg lock too while removing @pd from @blkg */
1205                 spin_lock(&blkg->blkcg->lock);
1206
1207                 if (blkg->pd[pol->plid]) {
1208                         if (pol->pd_offline_fn)
1209                                 pol->pd_offline_fn(blkg->pd[pol->plid]);
1210                         pol->pd_free_fn(blkg->pd[pol->plid]);
1211                         blkg->pd[pol->plid] = NULL;
1212                 }
1213
1214                 spin_unlock(&blkg->blkcg->lock);
1215         }
1216
1217         spin_unlock_irq(q->queue_lock);
1218         blk_queue_bypass_end(q);
1219 }
1220 EXPORT_SYMBOL_GPL(blkcg_deactivate_policy);
1221
1222 /**
1223  * blkcg_policy_register - register a blkcg policy
1224  * @pol: blkcg policy to register
1225  *
1226  * Register @pol with blkcg core.  Might sleep and @pol may be modified on
1227  * successful registration.  Returns 0 on success and -errno on failure.
1228  */
1229 int blkcg_policy_register(struct blkcg_policy *pol)
1230 {
1231         struct blkcg *blkcg;
1232         int i, ret;
1233
1234         mutex_lock(&blkcg_pol_register_mutex);
1235         mutex_lock(&blkcg_pol_mutex);
1236
1237         /* find an empty slot */
1238         ret = -ENOSPC;
1239         for (i = 0; i < BLKCG_MAX_POLS; i++)
1240                 if (!blkcg_policy[i])
1241                         break;
1242         if (i >= BLKCG_MAX_POLS)
1243                 goto err_unlock;
1244
1245         /* register @pol */
1246         pol->plid = i;
1247         blkcg_policy[pol->plid] = pol;
1248
1249         /* allocate and install cpd's */
1250         if (pol->cpd_alloc_fn) {
1251                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1252                         struct blkcg_policy_data *cpd;
1253
1254                         cpd = pol->cpd_alloc_fn(GFP_KERNEL);
1255                         if (!cpd) {
1256                                 mutex_unlock(&blkcg_pol_mutex);
1257                                 goto err_free_cpds;
1258                         }
1259
1260                         blkcg->cpd[pol->plid] = cpd;
1261                         cpd->blkcg = blkcg;
1262                         cpd->plid = pol->plid;
1263                         pol->cpd_init_fn(cpd);
1264                 }
1265         }
1266
1267         mutex_unlock(&blkcg_pol_mutex);
1268
1269         /* everything is in place, add intf files for the new policy */
1270         if (pol->cftypes)
1271                 WARN_ON(cgroup_add_legacy_cftypes(&blkio_cgrp_subsys,
1272                                                   pol->cftypes));
1273         mutex_unlock(&blkcg_pol_register_mutex);
1274         return 0;
1275
1276 err_free_cpds:
1277         if (pol->cpd_alloc_fn) {
1278                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1279                         if (blkcg->cpd[pol->plid]) {
1280                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1281                                 blkcg->cpd[pol->plid] = NULL;
1282                         }
1283                 }
1284         }
1285         blkcg_policy[pol->plid] = NULL;
1286 err_unlock:
1287         mutex_unlock(&blkcg_pol_mutex);
1288         mutex_unlock(&blkcg_pol_register_mutex);
1289         return ret;
1290 }
1291 EXPORT_SYMBOL_GPL(blkcg_policy_register);
1292
1293 /**
1294  * blkcg_policy_unregister - unregister a blkcg policy
1295  * @pol: blkcg policy to unregister
1296  *
1297  * Undo blkcg_policy_register(@pol).  Might sleep.
1298  */
1299 void blkcg_policy_unregister(struct blkcg_policy *pol)
1300 {
1301         struct blkcg *blkcg;
1302
1303         mutex_lock(&blkcg_pol_register_mutex);
1304
1305         if (WARN_ON(blkcg_policy[pol->plid] != pol))
1306                 goto out_unlock;
1307
1308         /* kill the intf files first */
1309         if (pol->cftypes)
1310                 cgroup_rm_cftypes(pol->cftypes);
1311
1312         /* remove cpds and unregister */
1313         mutex_lock(&blkcg_pol_mutex);
1314
1315         if (pol->cpd_alloc_fn) {
1316                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1317                         if (blkcg->cpd[pol->plid]) {
1318                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1319                                 blkcg->cpd[pol->plid] = NULL;
1320                         }
1321                 }
1322         }
1323         blkcg_policy[pol->plid] = NULL;
1324
1325         mutex_unlock(&blkcg_pol_mutex);
1326 out_unlock:
1327         mutex_unlock(&blkcg_pol_register_mutex);
1328 }
1329 EXPORT_SYMBOL_GPL(blkcg_policy_unregister);