blkcg: reduce stack usage of blkg_rwstat_recursive_sum()
[firefly-linux-kernel-4.4.55.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;
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                 for (i = 0; i < BLKG_RWSTAT_NR; i++)
758                         atomic64_add(atomic64_read(&rwstat->aux_cnt[i]) +
759                                 percpu_counter_sum_positive(&rwstat->cpu_cnt[i]),
760                                 &sum.aux_cnt[i]);
761         }
762         rcu_read_unlock();
763
764         return sum;
765 }
766 EXPORT_SYMBOL_GPL(blkg_rwstat_recursive_sum);
767
768 /**
769  * blkg_conf_prep - parse and prepare for per-blkg config update
770  * @blkcg: target block cgroup
771  * @pol: target policy
772  * @input: input string
773  * @ctx: blkg_conf_ctx to be filled
774  *
775  * Parse per-blkg config update from @input and initialize @ctx with the
776  * result.  @ctx->blkg points to the blkg to be updated and @ctx->v the new
777  * value.  This function returns with RCU read lock and queue lock held and
778  * must be paired with blkg_conf_finish().
779  */
780 int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
781                    const char *input, struct blkg_conf_ctx *ctx)
782         __acquires(rcu) __acquires(disk->queue->queue_lock)
783 {
784         struct gendisk *disk;
785         struct blkcg_gq *blkg;
786         unsigned int major, minor;
787         unsigned long long v;
788         int part, ret;
789
790         if (sscanf(input, "%u:%u %llu", &major, &minor, &v) != 3)
791                 return -EINVAL;
792
793         disk = get_gendisk(MKDEV(major, minor), &part);
794         if (!disk)
795                 return -EINVAL;
796         if (part) {
797                 put_disk(disk);
798                 return -EINVAL;
799         }
800
801         rcu_read_lock();
802         spin_lock_irq(disk->queue->queue_lock);
803
804         if (blkcg_policy_enabled(disk->queue, pol))
805                 blkg = blkg_lookup_create(blkcg, disk->queue);
806         else
807                 blkg = ERR_PTR(-EINVAL);
808
809         if (IS_ERR(blkg)) {
810                 ret = PTR_ERR(blkg);
811                 rcu_read_unlock();
812                 spin_unlock_irq(disk->queue->queue_lock);
813                 put_disk(disk);
814                 /*
815                  * If queue was bypassing, we should retry.  Do so after a
816                  * short msleep().  It isn't strictly necessary but queue
817                  * can be bypassing for some time and it's always nice to
818                  * avoid busy looping.
819                  */
820                 if (ret == -EBUSY) {
821                         msleep(10);
822                         ret = restart_syscall();
823                 }
824                 return ret;
825         }
826
827         ctx->disk = disk;
828         ctx->blkg = blkg;
829         ctx->v = v;
830         return 0;
831 }
832 EXPORT_SYMBOL_GPL(blkg_conf_prep);
833
834 /**
835  * blkg_conf_finish - finish up per-blkg config update
836  * @ctx: blkg_conf_ctx intiailized by blkg_conf_prep()
837  *
838  * Finish up after per-blkg config update.  This function must be paired
839  * with blkg_conf_prep().
840  */
841 void blkg_conf_finish(struct blkg_conf_ctx *ctx)
842         __releases(ctx->disk->queue->queue_lock) __releases(rcu)
843 {
844         spin_unlock_irq(ctx->disk->queue->queue_lock);
845         rcu_read_unlock();
846         put_disk(ctx->disk);
847 }
848 EXPORT_SYMBOL_GPL(blkg_conf_finish);
849
850 struct cftype blkcg_files[] = {
851         {
852                 .name = "reset_stats",
853                 .write_u64 = blkcg_reset_stats,
854         },
855         { }     /* terminate */
856 };
857
858 /**
859  * blkcg_css_offline - cgroup css_offline callback
860  * @css: css of interest
861  *
862  * This function is called when @css is about to go away and responsible
863  * for shooting down all blkgs associated with @css.  blkgs should be
864  * removed while holding both q and blkcg locks.  As blkcg lock is nested
865  * inside q lock, this function performs reverse double lock dancing.
866  *
867  * This is the blkcg counterpart of ioc_release_fn().
868  */
869 static void blkcg_css_offline(struct cgroup_subsys_state *css)
870 {
871         struct blkcg *blkcg = css_to_blkcg(css);
872
873         spin_lock_irq(&blkcg->lock);
874
875         while (!hlist_empty(&blkcg->blkg_list)) {
876                 struct blkcg_gq *blkg = hlist_entry(blkcg->blkg_list.first,
877                                                 struct blkcg_gq, blkcg_node);
878                 struct request_queue *q = blkg->q;
879
880                 if (spin_trylock(q->queue_lock)) {
881                         blkg_destroy(blkg);
882                         spin_unlock(q->queue_lock);
883                 } else {
884                         spin_unlock_irq(&blkcg->lock);
885                         cpu_relax();
886                         spin_lock_irq(&blkcg->lock);
887                 }
888         }
889
890         spin_unlock_irq(&blkcg->lock);
891
892         wb_blkcg_offline(blkcg);
893 }
894
895 static void blkcg_css_free(struct cgroup_subsys_state *css)
896 {
897         struct blkcg *blkcg = css_to_blkcg(css);
898         int i;
899
900         mutex_lock(&blkcg_pol_mutex);
901
902         list_del(&blkcg->all_blkcgs_node);
903
904         for (i = 0; i < BLKCG_MAX_POLS; i++)
905                 if (blkcg->cpd[i])
906                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
907
908         mutex_unlock(&blkcg_pol_mutex);
909
910         kfree(blkcg);
911 }
912
913 static struct cgroup_subsys_state *
914 blkcg_css_alloc(struct cgroup_subsys_state *parent_css)
915 {
916         struct blkcg *blkcg;
917         struct cgroup_subsys_state *ret;
918         int i;
919
920         mutex_lock(&blkcg_pol_mutex);
921
922         if (!parent_css) {
923                 blkcg = &blkcg_root;
924         } else {
925                 blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL);
926                 if (!blkcg) {
927                         ret = ERR_PTR(-ENOMEM);
928                         goto free_blkcg;
929                 }
930         }
931
932         for (i = 0; i < BLKCG_MAX_POLS ; i++) {
933                 struct blkcg_policy *pol = blkcg_policy[i];
934                 struct blkcg_policy_data *cpd;
935
936                 /*
937                  * If the policy hasn't been attached yet, wait for it
938                  * to be attached before doing anything else. Otherwise,
939                  * check if the policy requires any specific per-cgroup
940                  * data: if it does, allocate and initialize it.
941                  */
942                 if (!pol || !pol->cpd_alloc_fn)
943                         continue;
944
945                 cpd = pol->cpd_alloc_fn(GFP_KERNEL);
946                 if (!cpd) {
947                         ret = ERR_PTR(-ENOMEM);
948                         goto free_pd_blkcg;
949                 }
950                 blkcg->cpd[i] = cpd;
951                 cpd->blkcg = blkcg;
952                 cpd->plid = i;
953                 if (pol->cpd_init_fn)
954                         pol->cpd_init_fn(cpd);
955         }
956
957         spin_lock_init(&blkcg->lock);
958         INIT_RADIX_TREE(&blkcg->blkg_tree, GFP_NOWAIT);
959         INIT_HLIST_HEAD(&blkcg->blkg_list);
960 #ifdef CONFIG_CGROUP_WRITEBACK
961         INIT_LIST_HEAD(&blkcg->cgwb_list);
962 #endif
963         list_add_tail(&blkcg->all_blkcgs_node, &all_blkcgs);
964
965         mutex_unlock(&blkcg_pol_mutex);
966         return &blkcg->css;
967
968 free_pd_blkcg:
969         for (i--; i >= 0; i--)
970                 if (blkcg->cpd[i])
971                         blkcg_policy[i]->cpd_free_fn(blkcg->cpd[i]);
972 free_blkcg:
973         kfree(blkcg);
974         mutex_unlock(&blkcg_pol_mutex);
975         return ret;
976 }
977
978 /**
979  * blkcg_init_queue - initialize blkcg part of request queue
980  * @q: request_queue to initialize
981  *
982  * Called from blk_alloc_queue_node(). Responsible for initializing blkcg
983  * part of new request_queue @q.
984  *
985  * RETURNS:
986  * 0 on success, -errno on failure.
987  */
988 int blkcg_init_queue(struct request_queue *q)
989 {
990         struct blkcg_gq *new_blkg, *blkg;
991         bool preloaded;
992         int ret;
993
994         new_blkg = blkg_alloc(&blkcg_root, q, GFP_KERNEL);
995         if (!new_blkg)
996                 return -ENOMEM;
997
998         preloaded = !radix_tree_preload(GFP_KERNEL);
999
1000         /*
1001          * Make sure the root blkg exists and count the existing blkgs.  As
1002          * @q is bypassing at this point, blkg_lookup_create() can't be
1003          * used.  Open code insertion.
1004          */
1005         rcu_read_lock();
1006         spin_lock_irq(q->queue_lock);
1007         blkg = blkg_create(&blkcg_root, q, new_blkg);
1008         spin_unlock_irq(q->queue_lock);
1009         rcu_read_unlock();
1010
1011         if (preloaded)
1012                 radix_tree_preload_end();
1013
1014         if (IS_ERR(blkg)) {
1015                 blkg_free(new_blkg);
1016                 return PTR_ERR(blkg);
1017         }
1018
1019         q->root_blkg = blkg;
1020         q->root_rl.blkg = blkg;
1021
1022         ret = blk_throtl_init(q);
1023         if (ret) {
1024                 spin_lock_irq(q->queue_lock);
1025                 blkg_destroy_all(q);
1026                 spin_unlock_irq(q->queue_lock);
1027         }
1028         return ret;
1029 }
1030
1031 /**
1032  * blkcg_drain_queue - drain blkcg part of request_queue
1033  * @q: request_queue to drain
1034  *
1035  * Called from blk_drain_queue().  Responsible for draining blkcg part.
1036  */
1037 void blkcg_drain_queue(struct request_queue *q)
1038 {
1039         lockdep_assert_held(q->queue_lock);
1040
1041         /*
1042          * @q could be exiting and already have destroyed all blkgs as
1043          * indicated by NULL root_blkg.  If so, don't confuse policies.
1044          */
1045         if (!q->root_blkg)
1046                 return;
1047
1048         blk_throtl_drain(q);
1049 }
1050
1051 /**
1052  * blkcg_exit_queue - exit and release blkcg part of request_queue
1053  * @q: request_queue being released
1054  *
1055  * Called from blk_release_queue().  Responsible for exiting blkcg part.
1056  */
1057 void blkcg_exit_queue(struct request_queue *q)
1058 {
1059         spin_lock_irq(q->queue_lock);
1060         blkg_destroy_all(q);
1061         spin_unlock_irq(q->queue_lock);
1062
1063         blk_throtl_exit(q);
1064 }
1065
1066 /*
1067  * We cannot support shared io contexts, as we have no mean to support
1068  * two tasks with the same ioc in two different groups without major rework
1069  * of the main cic data structures.  For now we allow a task to change
1070  * its cgroup only if it's the only owner of its ioc.
1071  */
1072 static int blkcg_can_attach(struct cgroup_subsys_state *css,
1073                             struct cgroup_taskset *tset)
1074 {
1075         struct task_struct *task;
1076         struct io_context *ioc;
1077         int ret = 0;
1078
1079         /* task_lock() is needed to avoid races with exit_io_context() */
1080         cgroup_taskset_for_each(task, tset) {
1081                 task_lock(task);
1082                 ioc = task->io_context;
1083                 if (ioc && atomic_read(&ioc->nr_tasks) > 1)
1084                         ret = -EINVAL;
1085                 task_unlock(task);
1086                 if (ret)
1087                         break;
1088         }
1089         return ret;
1090 }
1091
1092 struct cgroup_subsys blkio_cgrp_subsys = {
1093         .css_alloc = blkcg_css_alloc,
1094         .css_offline = blkcg_css_offline,
1095         .css_free = blkcg_css_free,
1096         .can_attach = blkcg_can_attach,
1097         .legacy_cftypes = blkcg_files,
1098 #ifdef CONFIG_MEMCG
1099         /*
1100          * This ensures that, if available, memcg is automatically enabled
1101          * together on the default hierarchy so that the owner cgroup can
1102          * be retrieved from writeback pages.
1103          */
1104         .depends_on = 1 << memory_cgrp_id,
1105 #endif
1106 };
1107 EXPORT_SYMBOL_GPL(blkio_cgrp_subsys);
1108
1109 /**
1110  * blkcg_activate_policy - activate a blkcg policy on a request_queue
1111  * @q: request_queue of interest
1112  * @pol: blkcg policy to activate
1113  *
1114  * Activate @pol on @q.  Requires %GFP_KERNEL context.  @q goes through
1115  * bypass mode to populate its blkgs with policy_data for @pol.
1116  *
1117  * Activation happens with @q bypassed, so nobody would be accessing blkgs
1118  * from IO path.  Update of each blkg is protected by both queue and blkcg
1119  * locks so that holding either lock and testing blkcg_policy_enabled() is
1120  * always enough for dereferencing policy data.
1121  *
1122  * The caller is responsible for synchronizing [de]activations and policy
1123  * [un]registerations.  Returns 0 on success, -errno on failure.
1124  */
1125 int blkcg_activate_policy(struct request_queue *q,
1126                           const struct blkcg_policy *pol)
1127 {
1128         struct blkg_policy_data *pd_prealloc = NULL;
1129         struct blkcg_gq *blkg;
1130         int ret;
1131
1132         if (blkcg_policy_enabled(q, pol))
1133                 return 0;
1134
1135         blk_queue_bypass_start(q);
1136 pd_prealloc:
1137         if (!pd_prealloc) {
1138                 pd_prealloc = pol->pd_alloc_fn(GFP_KERNEL, q->node);
1139                 if (!pd_prealloc) {
1140                         ret = -ENOMEM;
1141                         goto out_bypass_end;
1142                 }
1143         }
1144
1145         spin_lock_irq(q->queue_lock);
1146
1147         list_for_each_entry(blkg, &q->blkg_list, q_node) {
1148                 struct blkg_policy_data *pd;
1149
1150                 if (blkg->pd[pol->plid])
1151                         continue;
1152
1153                 pd = pol->pd_alloc_fn(GFP_NOWAIT, q->node);
1154                 if (!pd)
1155                         swap(pd, pd_prealloc);
1156                 if (!pd) {
1157                         spin_unlock_irq(q->queue_lock);
1158                         goto pd_prealloc;
1159                 }
1160
1161                 blkg->pd[pol->plid] = pd;
1162                 pd->blkg = blkg;
1163                 pd->plid = pol->plid;
1164                 if (pol->pd_init_fn)
1165                         pol->pd_init_fn(pd);
1166         }
1167
1168         __set_bit(pol->plid, q->blkcg_pols);
1169         ret = 0;
1170
1171         spin_unlock_irq(q->queue_lock);
1172 out_bypass_end:
1173         blk_queue_bypass_end(q);
1174         if (pd_prealloc)
1175                 pol->pd_free_fn(pd_prealloc);
1176         return ret;
1177 }
1178 EXPORT_SYMBOL_GPL(blkcg_activate_policy);
1179
1180 /**
1181  * blkcg_deactivate_policy - deactivate a blkcg policy on a request_queue
1182  * @q: request_queue of interest
1183  * @pol: blkcg policy to deactivate
1184  *
1185  * Deactivate @pol on @q.  Follows the same synchronization rules as
1186  * blkcg_activate_policy().
1187  */
1188 void blkcg_deactivate_policy(struct request_queue *q,
1189                              const struct blkcg_policy *pol)
1190 {
1191         struct blkcg_gq *blkg;
1192
1193         if (!blkcg_policy_enabled(q, pol))
1194                 return;
1195
1196         blk_queue_bypass_start(q);
1197         spin_lock_irq(q->queue_lock);
1198
1199         __clear_bit(pol->plid, q->blkcg_pols);
1200
1201         list_for_each_entry(blkg, &q->blkg_list, q_node) {
1202                 /* grab blkcg lock too while removing @pd from @blkg */
1203                 spin_lock(&blkg->blkcg->lock);
1204
1205                 if (blkg->pd[pol->plid]) {
1206                         if (pol->pd_offline_fn)
1207                                 pol->pd_offline_fn(blkg->pd[pol->plid]);
1208                         pol->pd_free_fn(blkg->pd[pol->plid]);
1209                         blkg->pd[pol->plid] = NULL;
1210                 }
1211
1212                 spin_unlock(&blkg->blkcg->lock);
1213         }
1214
1215         spin_unlock_irq(q->queue_lock);
1216         blk_queue_bypass_end(q);
1217 }
1218 EXPORT_SYMBOL_GPL(blkcg_deactivate_policy);
1219
1220 /**
1221  * blkcg_policy_register - register a blkcg policy
1222  * @pol: blkcg policy to register
1223  *
1224  * Register @pol with blkcg core.  Might sleep and @pol may be modified on
1225  * successful registration.  Returns 0 on success and -errno on failure.
1226  */
1227 int blkcg_policy_register(struct blkcg_policy *pol)
1228 {
1229         struct blkcg *blkcg;
1230         int i, ret;
1231
1232         mutex_lock(&blkcg_pol_register_mutex);
1233         mutex_lock(&blkcg_pol_mutex);
1234
1235         /* find an empty slot */
1236         ret = -ENOSPC;
1237         for (i = 0; i < BLKCG_MAX_POLS; i++)
1238                 if (!blkcg_policy[i])
1239                         break;
1240         if (i >= BLKCG_MAX_POLS)
1241                 goto err_unlock;
1242
1243         /* register @pol */
1244         pol->plid = i;
1245         blkcg_policy[pol->plid] = pol;
1246
1247         /* allocate and install cpd's */
1248         if (pol->cpd_alloc_fn) {
1249                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1250                         struct blkcg_policy_data *cpd;
1251
1252                         cpd = pol->cpd_alloc_fn(GFP_KERNEL);
1253                         if (!cpd) {
1254                                 mutex_unlock(&blkcg_pol_mutex);
1255                                 goto err_free_cpds;
1256                         }
1257
1258                         blkcg->cpd[pol->plid] = cpd;
1259                         cpd->blkcg = blkcg;
1260                         cpd->plid = pol->plid;
1261                         pol->cpd_init_fn(cpd);
1262                 }
1263         }
1264
1265         mutex_unlock(&blkcg_pol_mutex);
1266
1267         /* everything is in place, add intf files for the new policy */
1268         if (pol->cftypes)
1269                 WARN_ON(cgroup_add_legacy_cftypes(&blkio_cgrp_subsys,
1270                                                   pol->cftypes));
1271         mutex_unlock(&blkcg_pol_register_mutex);
1272         return 0;
1273
1274 err_free_cpds:
1275         if (pol->cpd_alloc_fn) {
1276                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1277                         if (blkcg->cpd[pol->plid]) {
1278                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1279                                 blkcg->cpd[pol->plid] = NULL;
1280                         }
1281                 }
1282         }
1283         blkcg_policy[pol->plid] = NULL;
1284 err_unlock:
1285         mutex_unlock(&blkcg_pol_mutex);
1286         mutex_unlock(&blkcg_pol_register_mutex);
1287         return ret;
1288 }
1289 EXPORT_SYMBOL_GPL(blkcg_policy_register);
1290
1291 /**
1292  * blkcg_policy_unregister - unregister a blkcg policy
1293  * @pol: blkcg policy to unregister
1294  *
1295  * Undo blkcg_policy_register(@pol).  Might sleep.
1296  */
1297 void blkcg_policy_unregister(struct blkcg_policy *pol)
1298 {
1299         struct blkcg *blkcg;
1300
1301         mutex_lock(&blkcg_pol_register_mutex);
1302
1303         if (WARN_ON(blkcg_policy[pol->plid] != pol))
1304                 goto out_unlock;
1305
1306         /* kill the intf files first */
1307         if (pol->cftypes)
1308                 cgroup_rm_cftypes(pol->cftypes);
1309
1310         /* remove cpds and unregister */
1311         mutex_lock(&blkcg_pol_mutex);
1312
1313         if (pol->cpd_alloc_fn) {
1314                 list_for_each_entry(blkcg, &all_blkcgs, all_blkcgs_node) {
1315                         if (blkcg->cpd[pol->plid]) {
1316                                 pol->cpd_free_fn(blkcg->cpd[pol->plid]);
1317                                 blkcg->cpd[pol->plid] = NULL;
1318                         }
1319                 }
1320         }
1321         blkcg_policy[pol->plid] = NULL;
1322
1323         mutex_unlock(&blkcg_pol_mutex);
1324 out_unlock:
1325         mutex_unlock(&blkcg_pol_register_mutex);
1326 }
1327 EXPORT_SYMBOL_GPL(blkcg_policy_unregister);