Lines Matching refs:root

297 	return cgrp->root == &cgrp_dfl_root;  in cgroup_on_dfl()
379 if (!(cgrp->root->subsys_mask & (1 << ss->id))) in cgroup_e_css()
549 #define for_each_root(root) \ argument
550 list_for_each_entry((root), &cgroup_roots, root_list)
857 BUG_ON(cgrp1->root != cgrp2->root); in compare_css_sets()
866 if (cgrp1->root == new_cgrp->root) { in compare_css_sets()
887 struct cgroup_root *root = cgrp->root; in find_existing_css_set() local
899 if (root->subsys_mask & (1UL << i)) { in find_existing_css_set()
1054 if (c->root == cgrp->root) in find_css_set()
1084 return root_cgrp->root; in cgroup_root_from_kf()
1087 static int cgroup_init_root_id(struct cgroup_root *root) in cgroup_init_root_id() argument
1093 id = idr_alloc_cyclic(&cgroup_hierarchy_idr, root, 0, 0, GFP_KERNEL); in cgroup_init_root_id()
1097 root->hierarchy_id = id; in cgroup_init_root_id()
1101 static void cgroup_exit_root_id(struct cgroup_root *root) in cgroup_exit_root_id() argument
1105 if (root->hierarchy_id) { in cgroup_exit_root_id()
1106 idr_remove(&cgroup_hierarchy_idr, root->hierarchy_id); in cgroup_exit_root_id()
1107 root->hierarchy_id = 0; in cgroup_exit_root_id()
1111 static void cgroup_free_root(struct cgroup_root *root) in cgroup_free_root() argument
1113 if (root) { in cgroup_free_root()
1115 WARN_ON_ONCE(root->hierarchy_id); in cgroup_free_root()
1117 idr_destroy(&root->cgroup_idr); in cgroup_free_root()
1118 kfree(root); in cgroup_free_root()
1122 static void cgroup_destroy_root(struct cgroup_root *root) in cgroup_destroy_root() argument
1124 struct cgroup *cgrp = &root->cgrp; in cgroup_destroy_root()
1129 BUG_ON(atomic_read(&root->nr_cgrps)); in cgroup_destroy_root()
1133 rebind_subsystems(&cgrp_dfl_root, root->subsys_mask); in cgroup_destroy_root()
1149 if (!list_empty(&root->root_list)) { in cgroup_destroy_root()
1150 list_del(&root->root_list); in cgroup_destroy_root()
1154 cgroup_exit_root_id(root); in cgroup_destroy_root()
1158 kernfs_destroy_root(root->kf_root); in cgroup_destroy_root()
1159 cgroup_free_root(root); in cgroup_destroy_root()
1164 struct cgroup_root *root) in cset_cgroup_from_root() argument
1172 res = &root->cgrp; in cset_cgroup_from_root()
1179 if (c->root == root) { in cset_cgroup_from_root()
1195 struct cgroup_root *root) in task_cgroup_from_root() argument
1202 return cset_cgroup_from_root(task_css_set(task), root); in task_cgroup_from_root()
1240 !(cgrp->root->flags & CGRP_ROOT_NOPREFIX)) in cgroup_file_name()
1312 new_ss_mask &= cgrp->root->subsys_mask; in cgroup_calc_child_subsys_mask()
1488 if (css_next_child(NULL, cgroup_css(&ss->root->cgrp, ss))) in rebind_subsystems()
1492 if (ss->root != &cgrp_dfl_root && dst_root != &cgrp_dfl_root) in rebind_subsystems()
1502 struct cgroup *scgrp = &ss->root->cgrp; in rebind_subsystems()
1537 struct cgroup_root *src_root = ss->root; in rebind_subsystems()
1548 ss->root = dst_root; in rebind_subsystems()
1582 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_show_options() local
1586 if (root != &cgrp_dfl_root) in cgroup_show_options()
1588 if (root->subsys_mask & (1 << ssid)) in cgroup_show_options()
1590 if (root->flags & CGRP_ROOT_NOPREFIX) in cgroup_show_options()
1592 if (root->flags & CGRP_ROOT_XATTR) in cgroup_show_options()
1596 if (strlen(root->release_agent_path)) in cgroup_show_options()
1598 root->release_agent_path); in cgroup_show_options()
1601 if (test_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags)) in cgroup_show_options()
1603 if (strlen(root->name)) in cgroup_show_options()
1604 seq_show_option(seq, "name", root->name); in cgroup_show_options()
1764 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_remount() local
1768 if (root == &cgrp_dfl_root) { in cgroup_remount()
1780 if (opts.subsys_mask != root->subsys_mask || opts.release_agent) in cgroup_remount()
1784 added_mask = opts.subsys_mask & ~root->subsys_mask; in cgroup_remount()
1785 removed_mask = root->subsys_mask & ~opts.subsys_mask; in cgroup_remount()
1788 if ((opts.flags ^ root->flags) || in cgroup_remount()
1789 (opts.name && strcmp(opts.name, root->name))) { in cgroup_remount()
1791 opts.flags, opts.name ?: "", root->flags, root->name); in cgroup_remount()
1797 if (!list_empty(&root->cgrp.self.children)) { in cgroup_remount()
1802 ret = rebind_subsystems(root, added_mask); in cgroup_remount()
1810 strcpy(root->release_agent_path, opts.release_agent); in cgroup_remount()
1894 static void init_cgroup_root(struct cgroup_root *root, in init_cgroup_root() argument
1897 struct cgroup *cgrp = &root->cgrp; in init_cgroup_root()
1899 INIT_LIST_HEAD(&root->root_list); in init_cgroup_root()
1900 atomic_set(&root->nr_cgrps, 1); in init_cgroup_root()
1901 cgrp->root = root; in init_cgroup_root()
1903 idr_init(&root->cgroup_idr); in init_cgroup_root()
1905 root->flags = opts->flags; in init_cgroup_root()
1907 strcpy(root->release_agent_path, opts->release_agent); in init_cgroup_root()
1909 strcpy(root->name, opts->name); in init_cgroup_root()
1911 set_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags); in init_cgroup_root()
1914 static int cgroup_setup_root(struct cgroup_root *root, unsigned long ss_mask) in cgroup_setup_root() argument
1917 struct cgroup *root_cgrp = &root->cgrp; in cgroup_setup_root()
1923 ret = cgroup_idr_alloc(&root->cgroup_idr, root_cgrp, 1, 2, GFP_KERNEL); in cgroup_setup_root()
1943 ret = cgroup_init_root_id(root); in cgroup_setup_root()
1947 root->kf_root = kernfs_create_root(&cgroup_kf_syscall_ops, in cgroup_setup_root()
1950 if (IS_ERR(root->kf_root)) { in cgroup_setup_root()
1951 ret = PTR_ERR(root->kf_root); in cgroup_setup_root()
1954 root_cgrp->kn = root->kf_root->kn; in cgroup_setup_root()
1960 ret = rebind_subsystems(root, ss_mask); in cgroup_setup_root()
1969 list_add(&root->root_list, &cgroup_roots); in cgroup_setup_root()
1985 BUG_ON(atomic_read(&root->nr_cgrps) != 1); in cgroup_setup_root()
1992 kernfs_destroy_root(root->kf_root); in cgroup_setup_root()
1993 root->kf_root = NULL; in cgroup_setup_root()
1995 cgroup_exit_root_id(root); in cgroup_setup_root()
2009 struct cgroup_root *root; in cgroup_mount() local
2033 root = &cgrp_dfl_root; in cgroup_mount()
2034 cgroup_get(&root->cgrp); in cgroup_mount()
2048 ss->root == &cgrp_dfl_root) in cgroup_mount()
2051 if (!percpu_ref_tryget_live(&ss->root->cgrp.self.refcnt)) { in cgroup_mount()
2057 cgroup_put(&ss->root->cgrp); in cgroup_mount()
2060 for_each_root(root) { in cgroup_mount()
2063 if (root == &cgrp_dfl_root) in cgroup_mount()
2072 if (strcmp(opts.name, root->name)) in cgroup_mount()
2082 (opts.subsys_mask != root->subsys_mask)) { in cgroup_mount()
2089 if (root->flags ^ opts.flags) in cgroup_mount()
2104 pinned_sb = kernfs_pin_sb(root->kf_root, NULL); in cgroup_mount()
2106 !percpu_ref_tryget_live(&root->cgrp.self.refcnt)) { in cgroup_mount()
2129 root = kzalloc(sizeof(*root), GFP_KERNEL); in cgroup_mount()
2130 if (!root) { in cgroup_mount()
2135 init_cgroup_root(root, &opts); in cgroup_mount()
2137 ret = cgroup_setup_root(root, opts.subsys_mask); in cgroup_mount()
2139 cgroup_free_root(root); in cgroup_mount()
2150 dentry = kernfs_mount(fs_type, flags, root->kf_root, in cgroup_mount()
2153 cgroup_put(&root->cgrp); in cgroup_mount()
2170 struct cgroup_root *root = cgroup_root_from_kf(kf_root); in cgroup_kill_sb() local
2179 if (!list_empty(&root->cgrp.self.children) || in cgroup_kill_sb()
2180 root == &cgrp_dfl_root) in cgroup_kill_sb()
2181 cgroup_put(&root->cgrp); in cgroup_kill_sb()
2183 percpu_ref_kill(&root->cgrp.self.refcnt); in cgroup_kill_sb()
2209 struct cgroup_root *root; in task_cgroup_path() local
2217 root = idr_get_next(&cgroup_hierarchy_idr, &hierarchy_id); in task_cgroup_path()
2219 if (root) { in task_cgroup_path()
2220 cgrp = task_cgroup_from_root(task, root); in task_cgroup_path()
2509 src_cgrp = cset_cgroup_from_root(src_cset, dst_cgrp->root); in cgroup_migrate_add_src()
2789 struct cgroup_root *root; in cgroup_attach_task_all() local
2793 for_each_root(root) { in cgroup_attach_task_all()
2796 if (root == &cgrp_dfl_root) in cgroup_attach_task_all()
2800 from_cgrp = task_cgroup_from_root(from, root); in cgroup_attach_task_all()
2830 BUILD_BUG_ON(sizeof(cgrp->root->release_agent_path) < PATH_MAX); in cgroup_release_agent_write()
2836 strlcpy(cgrp->root->release_agent_path, strstrip(buf), in cgroup_release_agent_write()
2837 sizeof(cgrp->root->release_agent_path)); in cgroup_release_agent_write()
2848 seq_puts(seq, cgrp->root->release_agent_path); in cgroup_release_agent_show()
2881 cgroup_print_ss_mask(seq, cgrp->root->subsys_mask & in cgroup_root_controllers_show()
3433 struct cgroup *root = &ss->root->cgrp; in cgroup_apply_cftypes() local
3440 css_for_each_descendant_pre(css, cgroup_css(root, ss)) { in cgroup_apply_cftypes()
3452 kernfs_activate(root->kn); in cgroup_apply_cftypes()
3733 struct cgroup_subsys_state *root) in css_next_descendant_pre() argument
3741 return root; in css_next_descendant_pre()
3749 while (pos != root) { in css_next_descendant_pre()
3827 struct cgroup_subsys_state *root) in css_next_descendant_post() argument
3835 return css_leftmost_descendant(root); in css_next_descendant_post()
3838 if (pos == root) in css_next_descendant_post()
4706 atomic_dec(&cgrp->root->nr_cgrps); in css_free_work_fn()
4726 cgroup_destroy_root(cgrp->root); in css_free_work_fn()
4759 cgroup_idr_remove(&cgrp->root->cgroup_idr, cgrp->id); in css_release_work_fn()
4925 struct cgroup_root *root; in cgroup_mkdir() local
4938 root = parent->root; in cgroup_mkdir()
4955 cgrp->id = cgroup_idr_alloc(&root->cgroup_idr, NULL, 2, 0, GFP_KERNEL); in cgroup_mkdir()
4964 cgrp->root = root; in cgroup_mkdir()
4990 atomic_inc(&root->nr_cgrps); in cgroup_mkdir()
4997 cgroup_idr_replace(&root->cgroup_idr, cgrp, cgrp->id); in cgroup_mkdir()
5032 cgroup_idr_remove(&root->cgroup_idr, cgrp->id); in cgroup_mkdir()
5232 ss->root = &cgrp_dfl_root; in cgroup_init_subsys()
5422 struct cgroup_root *root; in proc_cgroup_show() local
5432 for_each_root(root) { in proc_cgroup_show()
5437 if (root == &cgrp_dfl_root && !cgrp_dfl_root_visible) in proc_cgroup_show()
5440 seq_printf(m, "%d:", root->hierarchy_id); in proc_cgroup_show()
5441 if (root != &cgrp_dfl_root) in proc_cgroup_show()
5443 if (root->subsys_mask & (1 << ssid)) in proc_cgroup_show()
5446 if (strlen(root->name)) in proc_cgroup_show()
5448 root->name); in proc_cgroup_show()
5451 cgrp = task_cgroup_from_root(tsk, root); in proc_cgroup_show()
5505 ss->legacy_name, ss->root->hierarchy_id, in proc_cgroupstats_show()
5506 atomic_read(&ss->root->nr_cgrps), in proc_cgroupstats_show()
5757 agentbuf = kstrdup(cgrp->root->release_agent_path, GFP_KERNEL); in cgroup_release_agent()
5916 c->root->hierarchy_id, name_buf); in current_css_set_cg_links_read()