Lines Matching refs:cset
692 static bool css_set_threaded(struct css_set *cset) in css_set_threaded() argument
694 return cset->dom_cset != cset; in css_set_threaded()
706 static bool css_set_populated(struct css_set *cset) in css_set_populated() argument
710 return !list_empty(&cset->tasks) || !list_empty(&cset->mg_tasks); in css_set_populated()
768 static void css_set_update_populated(struct css_set *cset, bool populated) in css_set_update_populated() argument
774 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) in css_set_update_populated()
862 void put_css_set_locked(struct css_set *cset) in put_css_set_locked() argument
870 if (!refcount_dec_and_test(&cset->refcount)) in put_css_set_locked()
873 WARN_ON_ONCE(!list_empty(&cset->threaded_csets)); in put_css_set_locked()
877 list_del(&cset->e_cset_node[ssid]); in put_css_set_locked()
878 css_put(cset->subsys[ssid]); in put_css_set_locked()
880 hash_del(&cset->hlist); in put_css_set_locked()
883 list_for_each_entry_safe(link, tmp_link, &cset->cgrp_links, cgrp_link) { in put_css_set_locked()
891 if (css_set_threaded(cset)) { in put_css_set_locked()
892 list_del(&cset->threaded_csets_node); in put_css_set_locked()
893 put_css_set_locked(cset->dom_cset); in put_css_set_locked()
896 kfree_rcu(cset, rcu_head); in put_css_set_locked()
909 static bool compare_css_sets(struct css_set *cset, in compare_css_sets() argument
922 if (memcmp(template, cset->subsys, sizeof(cset->subsys))) in compare_css_sets()
932 if (new_dfl_cgrp->dom_cgrp != cset->dom_cset->dfl_cgrp) in compare_css_sets()
941 l1 = &cset->cgrp_links; in compare_css_sets()
950 if (l1 == &cset->cgrp_links) { in compare_css_sets()
994 struct css_set *cset; in find_existing_css_set() local
1020 hash_for_each_possible(css_set_table, cset, hlist, key) { in find_existing_css_set()
1021 if (!compare_css_sets(cset, old_cset, cgrp, template)) in find_existing_css_set()
1025 return cset; in find_existing_css_set()
1074 static void link_css_set(struct list_head *tmp_links, struct css_set *cset, in link_css_set() argument
1082 cset->dfl_cgrp = cgrp; in link_css_set()
1085 link->cset = cset; in link_css_set()
1093 list_add_tail(&link->cgrp_link, &cset->cgrp_links); in link_css_set()
1111 struct css_set *cset; in find_css_set() local
1123 cset = find_existing_css_set(old_cset, cgrp, template); in find_css_set()
1124 if (cset) in find_css_set()
1125 get_css_set(cset); in find_css_set()
1128 if (cset) in find_css_set()
1129 return cset; in find_css_set()
1131 cset = kzalloc(sizeof(*cset), GFP_KERNEL); in find_css_set()
1132 if (!cset) in find_css_set()
1137 kfree(cset); in find_css_set()
1141 refcount_set(&cset->refcount, 1); in find_css_set()
1142 cset->dom_cset = cset; in find_css_set()
1143 INIT_LIST_HEAD(&cset->tasks); in find_css_set()
1144 INIT_LIST_HEAD(&cset->mg_tasks); in find_css_set()
1145 INIT_LIST_HEAD(&cset->task_iters); in find_css_set()
1146 INIT_LIST_HEAD(&cset->threaded_csets); in find_css_set()
1147 INIT_HLIST_NODE(&cset->hlist); in find_css_set()
1148 INIT_LIST_HEAD(&cset->cgrp_links); in find_css_set()
1149 INIT_LIST_HEAD(&cset->mg_preload_node); in find_css_set()
1150 INIT_LIST_HEAD(&cset->mg_node); in find_css_set()
1154 memcpy(cset->subsys, template, sizeof(cset->subsys)); in find_css_set()
1163 link_css_set(&tmp_links, cset, c); in find_css_set()
1171 key = css_set_hash(cset->subsys); in find_css_set()
1172 hash_add(css_set_table, &cset->hlist, key); in find_css_set()
1175 struct cgroup_subsys_state *css = cset->subsys[ssid]; in find_css_set()
1177 list_add_tail(&cset->e_cset_node[ssid], in find_css_set()
1190 if (cgroup_is_threaded(cset->dfl_cgrp)) { in find_css_set()
1193 dcset = find_css_set(cset, cset->dfl_cgrp->dom_cgrp); in find_css_set()
1195 put_css_set(cset); in find_css_set()
1200 cset->dom_cset = dcset; in find_css_set()
1201 list_add_tail(&cset->threaded_csets_node, in find_css_set()
1206 return cset; in find_css_set()
1295 struct css_set *cset; in current_cgns_cgroup_from_root() local
1301 cset = current->nsproxy->cgroup_ns->root_cset; in current_cgns_cgroup_from_root()
1302 if (cset == &init_css_set) { in current_cgns_cgroup_from_root()
1307 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_cgns_cgroup_from_root()
1323 static struct cgroup *cset_cgroup_from_root(struct css_set *cset, in cset_cgroup_from_root() argument
1331 if (cset == &init_css_set) { in cset_cgroup_from_root()
1334 res = cset->dfl_cgrp; in cset_cgroup_from_root()
1338 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in cset_cgroup_from_root()
1670 struct css_set *cset; in rebind_subsystems() local
1686 hash_for_each(css_set_table, i, cset, hlist) in rebind_subsystems()
1687 list_move_tail(&cset->e_cset_node[ss->id], in rebind_subsystems()
1836 struct css_set *cset = task_css_set(p); in cgroup_enable_task_cg_lists() local
1838 if (!css_set_populated(cset)) in cgroup_enable_task_cg_lists()
1839 css_set_update_populated(cset, true); in cgroup_enable_task_cg_lists()
1840 list_add_tail(&p->cg_list, &cset->tasks); in cgroup_enable_task_cg_lists()
1841 get_css_set(cset); in cgroup_enable_task_cg_lists()
1842 cset->nr_tasks++; in cgroup_enable_task_cg_lists()
1900 struct css_set *cset; in cgroup_setup_root() local
1970 hash_for_each(css_set_table, i, cset, hlist) { in cgroup_setup_root()
1971 link_css_set(&tmp_links, cset, root_cgrp); in cgroup_setup_root()
1972 if (css_set_populated(cset)) in cgroup_setup_root()
2192 struct css_set *cset; in cgroup_migrate_add_task() local
2204 cset = task_css_set(task); in cgroup_migrate_add_task()
2205 if (!cset->mg_src_cgrp) in cgroup_migrate_add_task()
2210 list_move_tail(&task->cg_list, &cset->mg_tasks); in cgroup_migrate_add_task()
2211 if (list_empty(&cset->mg_node)) in cgroup_migrate_add_task()
2212 list_add_tail(&cset->mg_node, in cgroup_migrate_add_task()
2214 if (list_empty(&cset->mg_dst_cset->mg_node)) in cgroup_migrate_add_task()
2215 list_add_tail(&cset->mg_dst_cset->mg_node, in cgroup_migrate_add_task()
2246 struct css_set *cset = tset->cur_cset; in cgroup_taskset_next() local
2249 while (&cset->mg_node != tset->csets) { in cgroup_taskset_next()
2251 task = list_first_entry(&cset->mg_tasks, in cgroup_taskset_next()
2256 if (&task->cg_list != &cset->mg_tasks) { in cgroup_taskset_next()
2257 tset->cur_cset = cset; in cgroup_taskset_next()
2266 if (cset->mg_dst_cset) in cgroup_taskset_next()
2267 *dst_cssp = cset->mg_dst_cset->subsys[tset->ssid]; in cgroup_taskset_next()
2269 *dst_cssp = cset->subsys[tset->ssid]; in cgroup_taskset_next()
2274 cset = list_next_entry(cset, mg_node); in cgroup_taskset_next()
2295 struct css_set *cset, *tmp_cset; in cgroup_migrate_execute() local
2318 list_for_each_entry(cset, &tset->src_csets, mg_node) { in cgroup_migrate_execute()
2319 list_for_each_entry_safe(task, tmp_task, &cset->mg_tasks, cg_list) { in cgroup_migrate_execute()
2321 struct css_set *to_cset = cset->mg_dst_cset; in cgroup_migrate_execute()
2365 list_for_each_entry_safe(cset, tmp_cset, &tset->src_csets, mg_node) { in cgroup_migrate_execute()
2366 list_splice_tail_init(&cset->mg_tasks, &cset->tasks); in cgroup_migrate_execute()
2367 list_del_init(&cset->mg_node); in cgroup_migrate_execute()
2428 struct css_set *cset, *tmp_cset; in cgroup_migrate_finish() local
2437 list_for_each_entry_safe(cset, tmp_cset, &preloaded, mg_preload_node) { in cgroup_migrate_finish()
2438 cset->mg_src_cgrp = NULL; in cgroup_migrate_finish()
2439 cset->mg_dst_cgrp = NULL; in cgroup_migrate_finish()
2440 cset->mg_dst_cset = NULL; in cgroup_migrate_finish()
2441 list_del_init(&cset->mg_preload_node); in cgroup_migrate_finish()
2442 put_css_set_locked(cset); in cgroup_migrate_finish()
2771 cgroup_migrate_add_src(link->cset, dsct, &mgctx); in cgroup_update_dfl_csses()
4082 struct css_set *cset; in css_task_iter_next_css_set() local
4108 cset = container_of(l, struct css_set, e_cset_node[it->ss->id]); in css_task_iter_next_css_set()
4111 cset = link->cset; in css_task_iter_next_css_set()
4120 it->cur_dcset = cset; in css_task_iter_next_css_set()
4121 get_css_set(cset); in css_task_iter_next_css_set()
4123 it->tcset_head = &cset->threaded_csets; in css_task_iter_next_css_set()
4124 it->tcset_pos = &cset->threaded_csets; in css_task_iter_next_css_set()
4127 return cset; in css_task_iter_next_css_set()
4138 struct css_set *cset; in css_task_iter_advance_css_set() local
4144 cset = css_task_iter_next_css_set(it); in css_task_iter_advance_css_set()
4145 if (!cset) { in css_task_iter_advance_css_set()
4149 } while (!css_set_populated(cset)); in css_task_iter_advance_css_set()
4151 if (!list_empty(&cset->tasks)) in css_task_iter_advance_css_set()
4152 it->task_pos = cset->tasks.next; in css_task_iter_advance_css_set()
4154 it->task_pos = cset->mg_tasks.next; in css_task_iter_advance_css_set()
4156 it->tasks_head = &cset->tasks; in css_task_iter_advance_css_set()
4157 it->mg_tasks_head = &cset->mg_tasks; in css_task_iter_advance_css_set()
4178 get_css_set(cset); in css_task_iter_advance_css_set()
4179 it->cur_cset = cset; in css_task_iter_advance_css_set()
4180 list_add(&it->iters_node, &cset->task_iters); in css_task_iter_advance_css_set()
5143 link->cset->dead = true; in cgroup_destroy_locked()
5603 struct css_set *cset; in cgroup_post_fork() local
5606 cset = task_css_set(current); in cgroup_post_fork()
5608 get_css_set(cset); in cgroup_post_fork()
5609 cset->nr_tasks++; in cgroup_post_fork()
5610 css_set_move_task(child, NULL, cset, false); in cgroup_post_fork()
5647 struct css_set *cset; in cgroup_exit() local
5654 cset = task_css_set(tsk); in cgroup_exit()
5658 css_set_move_task(tsk, cset, NULL, false); in cgroup_exit()
5659 cset->nr_tasks--; in cgroup_exit()
5662 get_css_set(cset); in cgroup_exit()
5673 struct css_set *cset = task_css_set(task); in cgroup_free() local
5681 put_css_set(cset); in cgroup_free()
5871 struct css_set *cset; in cgroup_sk_alloc() local
5873 cset = task_css_set(current); in cgroup_sk_alloc()
5874 if (likely(cgroup_tryget(cset->dfl_cgrp))) { in cgroup_sk_alloc()
5875 skcd->val = (unsigned long)cset->dfl_cgrp; in cgroup_sk_alloc()