Lines Matching refs:root
277 if (!(cgrp->root->subsys_mask & (1 << ss->id))) in cgroup_e_css()
413 #define for_each_root(root) \ argument
414 list_for_each_entry((root), &cgroup_roots, root_list)
633 BUG_ON(cgrp1->root != cgrp2->root); in compare_css_sets()
642 if (cgrp1->root == new_cgrp->root) { in compare_css_sets()
663 struct cgroup_root *root = cgrp->root; in find_existing_css_set() local
675 if (root->subsys_mask & (1UL << i)) { in find_existing_css_set()
829 if (c->root == cgrp->root) in find_css_set()
855 return root_cgrp->root; in cgroup_root_from_kf()
858 static int cgroup_init_root_id(struct cgroup_root *root) in cgroup_init_root_id() argument
864 id = idr_alloc_cyclic(&cgroup_hierarchy_idr, root, 0, 0, GFP_KERNEL); in cgroup_init_root_id()
868 root->hierarchy_id = id; in cgroup_init_root_id()
872 static void cgroup_exit_root_id(struct cgroup_root *root) in cgroup_exit_root_id() argument
876 if (root->hierarchy_id) { in cgroup_exit_root_id()
877 idr_remove(&cgroup_hierarchy_idr, root->hierarchy_id); in cgroup_exit_root_id()
878 root->hierarchy_id = 0; in cgroup_exit_root_id()
882 static void cgroup_free_root(struct cgroup_root *root) in cgroup_free_root() argument
884 if (root) { in cgroup_free_root()
886 WARN_ON_ONCE(root->hierarchy_id); in cgroup_free_root()
888 idr_destroy(&root->cgroup_idr); in cgroup_free_root()
889 kfree(root); in cgroup_free_root()
893 static void cgroup_destroy_root(struct cgroup_root *root) in cgroup_destroy_root() argument
895 struct cgroup *cgrp = &root->cgrp; in cgroup_destroy_root()
900 BUG_ON(atomic_read(&root->nr_cgrps)); in cgroup_destroy_root()
904 rebind_subsystems(&cgrp_dfl_root, root->subsys_mask); in cgroup_destroy_root()
919 if (!list_empty(&root->root_list)) { in cgroup_destroy_root()
920 list_del(&root->root_list); in cgroup_destroy_root()
924 cgroup_exit_root_id(root); in cgroup_destroy_root()
928 kernfs_destroy_root(root->kf_root); in cgroup_destroy_root()
929 cgroup_free_root(root); in cgroup_destroy_root()
934 struct cgroup_root *root) in cset_cgroup_from_root() argument
942 res = &root->cgrp; in cset_cgroup_from_root()
949 if (c->root == root) { in cset_cgroup_from_root()
965 struct cgroup_root *root) in task_cgroup_from_root() argument
972 return cset_cgroup_from_root(task_css_set(task), root); in task_cgroup_from_root()
1009 !(cgrp->root->flags & CGRP_ROOT_NOPREFIX)) in cgroup_file_name()
1099 new_ss_mask &= cgrp->root->subsys_mask; in cgroup_calc_child_subsys_mask()
1231 if (css_next_child(NULL, cgroup_css(&ss->root->cgrp, ss))) in rebind_subsystems()
1235 if (ss->root != &cgrp_dfl_root && dst_root != &cgrp_dfl_root) in rebind_subsystems()
1268 cgroup_clear_dir(&ss->root->cgrp, 1 << ssid); in rebind_subsystems()
1278 src_root = ss->root; in rebind_subsystems()
1285 ss->root = dst_root; in rebind_subsystems()
1316 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_show_options() local
1321 if (root->subsys_mask & (1 << ssid)) in cgroup_show_options()
1323 if (root->flags & CGRP_ROOT_NOPREFIX) in cgroup_show_options()
1325 if (root->flags & CGRP_ROOT_XATTR) in cgroup_show_options()
1329 if (strlen(root->release_agent_path)) in cgroup_show_options()
1331 root->release_agent_path); in cgroup_show_options()
1334 if (test_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags)) in cgroup_show_options()
1336 if (strlen(root->name)) in cgroup_show_options()
1337 seq_show_option(seq, "name", root->name); in cgroup_show_options()
1497 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_remount() local
1501 if (root == &cgrp_dfl_root) { in cgroup_remount()
1513 if (opts.subsys_mask != root->subsys_mask || opts.release_agent) in cgroup_remount()
1517 added_mask = opts.subsys_mask & ~root->subsys_mask; in cgroup_remount()
1518 removed_mask = root->subsys_mask & ~opts.subsys_mask; in cgroup_remount()
1521 if ((opts.flags ^ root->flags) || in cgroup_remount()
1522 (opts.name && strcmp(opts.name, root->name))) { in cgroup_remount()
1524 opts.flags, opts.name ?: "", root->flags, root->name); in cgroup_remount()
1530 if (!list_empty(&root->cgrp.self.children)) { in cgroup_remount()
1535 ret = rebind_subsystems(root, added_mask); in cgroup_remount()
1543 strcpy(root->release_agent_path, opts.release_agent); in cgroup_remount()
1625 static void init_cgroup_root(struct cgroup_root *root, in init_cgroup_root() argument
1628 struct cgroup *cgrp = &root->cgrp; in init_cgroup_root()
1630 INIT_LIST_HEAD(&root->root_list); in init_cgroup_root()
1631 atomic_set(&root->nr_cgrps, 1); in init_cgroup_root()
1632 cgrp->root = root; in init_cgroup_root()
1634 idr_init(&root->cgroup_idr); in init_cgroup_root()
1636 root->flags = opts->flags; in init_cgroup_root()
1638 strcpy(root->release_agent_path, opts->release_agent); in init_cgroup_root()
1640 strcpy(root->name, opts->name); in init_cgroup_root()
1642 set_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags); in init_cgroup_root()
1645 static int cgroup_setup_root(struct cgroup_root *root, unsigned int ss_mask) in cgroup_setup_root() argument
1648 struct cgroup *root_cgrp = &root->cgrp; in cgroup_setup_root()
1655 ret = cgroup_idr_alloc(&root->cgroup_idr, root_cgrp, 1, 2, GFP_NOWAIT); in cgroup_setup_root()
1675 ret = cgroup_init_root_id(root); in cgroup_setup_root()
1679 root->kf_root = kernfs_create_root(&cgroup_kf_syscall_ops, in cgroup_setup_root()
1682 if (IS_ERR(root->kf_root)) { in cgroup_setup_root()
1683 ret = PTR_ERR(root->kf_root); in cgroup_setup_root()
1686 root_cgrp->kn = root->kf_root->kn; in cgroup_setup_root()
1688 if (root == &cgrp_dfl_root) in cgroup_setup_root()
1697 ret = rebind_subsystems(root, ss_mask); in cgroup_setup_root()
1706 list_add(&root->root_list, &cgroup_roots); in cgroup_setup_root()
1719 BUG_ON(atomic_read(&root->nr_cgrps) != 1); in cgroup_setup_root()
1726 kernfs_destroy_root(root->kf_root); in cgroup_setup_root()
1727 root->kf_root = NULL; in cgroup_setup_root()
1729 cgroup_exit_root_id(root); in cgroup_setup_root()
1743 struct cgroup_root *root; in cgroup_mount() local
1767 root = &cgrp_dfl_root; in cgroup_mount()
1768 cgroup_get(&root->cgrp); in cgroup_mount()
1782 ss->root == &cgrp_dfl_root) in cgroup_mount()
1785 if (!percpu_ref_tryget_live(&ss->root->cgrp.self.refcnt)) { in cgroup_mount()
1791 cgroup_put(&ss->root->cgrp); in cgroup_mount()
1794 for_each_root(root) { in cgroup_mount()
1797 if (root == &cgrp_dfl_root) in cgroup_mount()
1806 if (strcmp(opts.name, root->name)) in cgroup_mount()
1816 (opts.subsys_mask != root->subsys_mask)) { in cgroup_mount()
1823 if (root->flags ^ opts.flags) in cgroup_mount()
1838 pinned_sb = kernfs_pin_sb(root->kf_root, NULL); in cgroup_mount()
1840 !percpu_ref_tryget_live(&root->cgrp.self.refcnt)) { in cgroup_mount()
1863 root = kzalloc(sizeof(*root), GFP_KERNEL); in cgroup_mount()
1864 if (!root) { in cgroup_mount()
1869 init_cgroup_root(root, &opts); in cgroup_mount()
1871 ret = cgroup_setup_root(root, opts.subsys_mask); in cgroup_mount()
1873 cgroup_free_root(root); in cgroup_mount()
1884 dentry = kernfs_mount(fs_type, flags, root->kf_root, in cgroup_mount()
1887 cgroup_put(&root->cgrp); in cgroup_mount()
1904 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_kill_sb() local
1913 if (!list_empty(&root->cgrp.self.children) || in cgroup_kill_sb()
1914 root == &cgrp_dfl_root) in cgroup_kill_sb()
1915 cgroup_put(&root->cgrp); in cgroup_kill_sb()
1917 percpu_ref_kill(&root->cgrp.self.refcnt); in cgroup_kill_sb()
1943 struct cgroup_root *root; in task_cgroup_path() local
1951 root = idr_get_next(&cgroup_hierarchy_idr, &hierarchy_id); in task_cgroup_path()
1953 if (root) { in task_cgroup_path()
1954 cgrp = task_cgroup_from_root(task, root); in task_cgroup_path()
2127 src_cgrp = cset_cgroup_from_root(src_cset, dst_cgrp->root); in cgroup_migrate_add_src()
2473 struct cgroup_root *root; in cgroup_attach_task_all() local
2477 for_each_root(root) { in cgroup_attach_task_all()
2480 if (root == &cgrp_dfl_root) in cgroup_attach_task_all()
2484 from_cgrp = task_cgroup_from_root(from, root); in cgroup_attach_task_all()
2514 BUILD_BUG_ON(sizeof(cgrp->root->release_agent_path) < PATH_MAX); in cgroup_release_agent_write()
2520 strlcpy(cgrp->root->release_agent_path, strstrip(buf), in cgroup_release_agent_write()
2521 sizeof(cgrp->root->release_agent_path)); in cgroup_release_agent_write()
2532 seq_puts(seq, cgrp->root->release_agent_path); in cgroup_release_agent_show()
2567 cgroup_print_ss_mask(seq, cgrp->root->subsys_mask & in cgroup_root_controllers_show()
3142 struct cgroup *root = &ss->root->cgrp; in cgroup_apply_cftypes() local
3149 css_for_each_descendant_pre(css, cgroup_css(root, ss)) { in cgroup_apply_cftypes()
3161 kernfs_activate(root->kn); in cgroup_apply_cftypes()
3435 struct cgroup_subsys_state *root) in css_next_descendant_pre() argument
3443 return root; in css_next_descendant_pre()
3451 while (pos != root) { in css_next_descendant_pre()
3529 struct cgroup_subsys_state *root) in css_next_descendant_post() argument
3537 return css_leftmost_descendant(root); in css_next_descendant_post()
3540 if (pos == root) in css_next_descendant_post()
4391 atomic_dec(&cgrp->root->nr_cgrps); in css_free_work_fn()
4411 cgroup_destroy_root(cgrp->root); in css_free_work_fn()
4444 cgroup_idr_remove(&cgrp->root->cgroup_idr, cgrp->id); in css_release_work_fn()
4610 struct cgroup_root *root; in cgroup_mkdir() local
4624 root = parent->root; in cgroup_mkdir()
4641 cgrp->id = cgroup_idr_alloc(&root->cgroup_idr, NULL, 2, 0, GFP_NOWAIT); in cgroup_mkdir()
4650 cgrp->root = root; in cgroup_mkdir()
4676 atomic_inc(&root->nr_cgrps); in cgroup_mkdir()
4683 cgroup_idr_replace(&root->cgroup_idr, cgrp, cgrp->id); in cgroup_mkdir()
4723 cgroup_idr_remove(&root->cgroup_idr, cgrp->id); in cgroup_mkdir()
4919 ss->root = &cgrp_dfl_root; in cgroup_init_subsys()
5107 struct cgroup_root *root; in proc_cgroup_show() local
5117 for_each_root(root) { in proc_cgroup_show()
5122 if (root == &cgrp_dfl_root && !cgrp_dfl_root_visible) in proc_cgroup_show()
5125 seq_printf(m, "%d:", root->hierarchy_id); in proc_cgroup_show()
5127 if (root->subsys_mask & (1 << ssid)) in proc_cgroup_show()
5129 if (strlen(root->name)) in proc_cgroup_show()
5131 root->name); in proc_cgroup_show()
5133 cgrp = task_cgroup_from_root(tsk, root); in proc_cgroup_show()
5168 ss->name, ss->root->hierarchy_id, in proc_cgroupstats_show()
5169 atomic_read(&ss->root->nr_cgrps), !ss->disabled); in proc_cgroupstats_show()
5359 agentbuf = kstrdup(cgrp->root->release_agent_path, GFP_KERNEL); in cgroup_release_agent()
5528 c->root->hierarchy_id, name_buf); in current_css_set_cg_links_read()