Lines Matching refs:cset
632 struct css_set *cset; member
664 static bool css_set_populated(struct css_set *cset) in css_set_populated() argument
668 return !list_empty(&cset->tasks) || !list_empty(&cset->mg_tasks); in css_set_populated()
717 static void css_set_update_populated(struct css_set *cset, bool populated) in css_set_update_populated() argument
723 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) in css_set_update_populated()
811 static void put_css_set_locked(struct css_set *cset) in put_css_set_locked() argument
819 if (!atomic_dec_and_test(&cset->refcount)) in put_css_set_locked()
824 list_del(&cset->e_cset_node[ssid]); in put_css_set_locked()
825 css_put(cset->subsys[ssid]); in put_css_set_locked()
827 hash_del(&cset->hlist); in put_css_set_locked()
830 list_for_each_entry_safe(link, tmp_link, &cset->cgrp_links, cgrp_link) { in put_css_set_locked()
838 kfree_rcu(cset, rcu_head); in put_css_set_locked()
841 static void put_css_set(struct css_set *cset) in put_css_set() argument
850 if (atomic_add_unless(&cset->refcount, -1, 1)) in put_css_set()
854 put_css_set_locked(cset); in put_css_set()
861 static inline void get_css_set(struct css_set *cset) in get_css_set() argument
863 atomic_inc(&cset->refcount); in get_css_set()
876 static bool compare_css_sets(struct css_set *cset, in compare_css_sets() argument
888 if (memcmp(template, cset->subsys, sizeof(cset->subsys))) in compare_css_sets()
897 l1 = &cset->cgrp_links; in compare_css_sets()
906 if (l1 == &cset->cgrp_links) { in compare_css_sets()
950 struct css_set *cset; in find_existing_css_set() local
976 hash_for_each_possible(css_set_table, cset, hlist, key) { in find_existing_css_set()
977 if (!compare_css_sets(cset, old_cset, cgrp, template)) in find_existing_css_set()
981 return cset; in find_existing_css_set()
1030 static void link_css_set(struct list_head *tmp_links, struct css_set *cset, in link_css_set() argument
1038 cset->dfl_cgrp = cgrp; in link_css_set()
1041 link->cset = cset; in link_css_set()
1049 list_add_tail(&link->cgrp_link, &cset->cgrp_links); in link_css_set()
1067 struct css_set *cset; in find_css_set() local
1079 cset = find_existing_css_set(old_cset, cgrp, template); in find_css_set()
1080 if (cset) in find_css_set()
1081 get_css_set(cset); in find_css_set()
1084 if (cset) in find_css_set()
1085 return cset; in find_css_set()
1087 cset = kzalloc(sizeof(*cset), GFP_KERNEL); in find_css_set()
1088 if (!cset) in find_css_set()
1093 kfree(cset); in find_css_set()
1097 atomic_set(&cset->refcount, 1); in find_css_set()
1098 INIT_LIST_HEAD(&cset->cgrp_links); in find_css_set()
1099 INIT_LIST_HEAD(&cset->tasks); in find_css_set()
1100 INIT_LIST_HEAD(&cset->mg_tasks); in find_css_set()
1101 INIT_LIST_HEAD(&cset->mg_preload_node); in find_css_set()
1102 INIT_LIST_HEAD(&cset->mg_node); in find_css_set()
1103 INIT_LIST_HEAD(&cset->task_iters); in find_css_set()
1104 INIT_HLIST_NODE(&cset->hlist); in find_css_set()
1108 memcpy(cset->subsys, template, sizeof(cset->subsys)); in find_css_set()
1117 link_css_set(&tmp_links, cset, c); in find_css_set()
1125 key = css_set_hash(cset->subsys); in find_css_set()
1126 hash_add(css_set_table, &cset->hlist, key); in find_css_set()
1129 struct cgroup_subsys_state *css = cset->subsys[ssid]; in find_css_set()
1131 list_add_tail(&cset->e_cset_node[ssid], in find_css_set()
1138 return cset; in find_css_set()
1227 struct css_set *cset; in current_cgns_cgroup_from_root() local
1233 cset = current->nsproxy->cgroup_ns->root_cset; in current_cgns_cgroup_from_root()
1234 if (cset == &init_css_set) { in current_cgns_cgroup_from_root()
1239 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_cgns_cgroup_from_root()
1255 static struct cgroup *cset_cgroup_from_root(struct css_set *cset, in cset_cgroup_from_root() argument
1263 if (cset == &init_css_set) { in cset_cgroup_from_root()
1268 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in cset_cgroup_from_root()
1589 struct css_set *cset; in rebind_subsystems() local
1605 hash_for_each(css_set_table, i, cset, hlist) in rebind_subsystems()
1606 list_move_tail(&cset->e_cset_node[ss->id], in rebind_subsystems()
1936 struct css_set *cset = task_css_set(p); in cgroup_enable_task_cg_lists() local
1938 if (!css_set_populated(cset)) in cgroup_enable_task_cg_lists()
1939 css_set_update_populated(cset, true); in cgroup_enable_task_cg_lists()
1940 list_add_tail(&p->cg_list, &cset->tasks); in cgroup_enable_task_cg_lists()
1941 get_css_set(cset); in cgroup_enable_task_cg_lists()
1994 struct css_set *cset; in cgroup_setup_root() local
2057 hash_for_each(css_set_table, i, cset, hlist) { in cgroup_setup_root()
2058 link_css_set(&tmp_links, cset, root_cgrp); in cgroup_setup_root()
2059 if (css_set_populated(cset)) in cgroup_setup_root()
2436 struct css_set *cset; in cgroup_taskset_add() local
2448 cset = task_css_set(task); in cgroup_taskset_add()
2449 if (!cset->mg_src_cgrp) in cgroup_taskset_add()
2452 list_move_tail(&task->cg_list, &cset->mg_tasks); in cgroup_taskset_add()
2453 if (list_empty(&cset->mg_node)) in cgroup_taskset_add()
2454 list_add_tail(&cset->mg_node, &tset->src_csets); in cgroup_taskset_add()
2455 if (list_empty(&cset->mg_dst_cset->mg_node)) in cgroup_taskset_add()
2456 list_move_tail(&cset->mg_dst_cset->mg_node, in cgroup_taskset_add()
2487 struct css_set *cset = tset->cur_cset; in cgroup_taskset_next() local
2490 while (&cset->mg_node != tset->csets) { in cgroup_taskset_next()
2492 task = list_first_entry(&cset->mg_tasks, in cgroup_taskset_next()
2497 if (&task->cg_list != &cset->mg_tasks) { in cgroup_taskset_next()
2498 tset->cur_cset = cset; in cgroup_taskset_next()
2507 if (cset->mg_dst_cset) in cgroup_taskset_next()
2508 *dst_cssp = cset->mg_dst_cset->subsys[tset->ssid]; in cgroup_taskset_next()
2510 *dst_cssp = cset->subsys[tset->ssid]; in cgroup_taskset_next()
2515 cset = list_next_entry(cset, mg_node); in cgroup_taskset_next()
2537 struct css_set *cset, *tmp_cset; in cgroup_taskset_migrate() local
2562 list_for_each_entry(cset, &tset->src_csets, mg_node) { in cgroup_taskset_migrate()
2563 list_for_each_entry_safe(task, tmp_task, &cset->mg_tasks, cg_list) { in cgroup_taskset_migrate()
2565 struct css_set *to_cset = cset->mg_dst_cset; in cgroup_taskset_migrate()
2603 list_for_each_entry_safe(cset, tmp_cset, &tset->src_csets, mg_node) { in cgroup_taskset_migrate()
2604 list_splice_tail_init(&cset->mg_tasks, &cset->tasks); in cgroup_taskset_migrate()
2605 list_del_init(&cset->mg_node); in cgroup_taskset_migrate()
2634 struct css_set *cset, *tmp_cset; in cgroup_migrate_finish() local
2639 list_for_each_entry_safe(cset, tmp_cset, preloaded_csets, mg_preload_node) { in cgroup_migrate_finish()
2640 cset->mg_src_cgrp = NULL; in cgroup_migrate_finish()
2641 cset->mg_dst_cgrp = NULL; in cgroup_migrate_finish()
2642 cset->mg_dst_cset = NULL; in cgroup_migrate_finish()
2643 list_del_init(&cset->mg_preload_node); in cgroup_migrate_finish()
2644 put_css_set_locked(cset); in cgroup_migrate_finish()
3097 cgroup_migrate_add_src(link->cset, dsct, in cgroup_update_dfl_csses()
3472 if (css_set_populated(link->cset)) { in cgroup_subtree_control_write()
3945 count += atomic_read(&link->cset->refcount); in cgroup_task_count()
4187 struct css_set *cset; in css_task_iter_advance_css_set() local
4201 cset = container_of(l, struct css_set, in css_task_iter_advance_css_set()
4205 cset = link->cset; in css_task_iter_advance_css_set()
4207 } while (!css_set_populated(cset)); in css_task_iter_advance_css_set()
4211 if (!list_empty(&cset->tasks)) in css_task_iter_advance_css_set()
4212 it->task_pos = cset->tasks.next; in css_task_iter_advance_css_set()
4214 it->task_pos = cset->mg_tasks.next; in css_task_iter_advance_css_set()
4216 it->tasks_head = &cset->tasks; in css_task_iter_advance_css_set()
4217 it->mg_tasks_head = &cset->mg_tasks; in css_task_iter_advance_css_set()
4238 get_css_set(cset); in css_task_iter_advance_css_set()
4239 it->cur_cset = cset; in css_task_iter_advance_css_set()
4240 list_add(&it->iters_node, &cset->task_iters); in css_task_iter_advance_css_set()
4377 cgroup_migrate_add_src(link->cset, to, &preloaded_csets); in cgroup_transfer_tasks()
5504 link->cset->dead = true; in cgroup_destroy_locked()
5985 struct css_set *cset; in cgroup_post_fork() local
5988 cset = task_css_set(current); in cgroup_post_fork()
5990 get_css_set(cset); in cgroup_post_fork()
5991 css_set_move_task(child, NULL, cset, false); in cgroup_post_fork()
6028 struct css_set *cset; in cgroup_exit() local
6035 cset = task_css_set(tsk); in cgroup_exit()
6039 css_set_move_task(tsk, cset, NULL, false); in cgroup_exit()
6042 get_css_set(cset); in cgroup_exit()
6053 struct css_set *cset = task_css_set(task); in cgroup_free() local
6061 put_css_set(cset); in cgroup_free()
6343 struct css_set *cset; in cgroup_sk_alloc() local
6345 cset = task_css_set(current); in cgroup_sk_alloc()
6346 if (likely(cgroup_tryget(cset->dfl_cgrp))) { in cgroup_sk_alloc()
6347 skcd->val = (unsigned long)cset->dfl_cgrp; in cgroup_sk_alloc()
6409 struct css_set *cset; in copy_cgroup_ns() local
6428 cset = task_css_set(current); in copy_cgroup_ns()
6429 get_css_set(cset); in copy_cgroup_ns()
6434 put_css_set(cset); in copy_cgroup_ns()
6441 new_ns->root_cset = cset; in copy_cgroup_ns()
6568 struct css_set *cset; in current_css_set_cg_links_read() local
6577 cset = rcu_dereference(current->cgroups); in current_css_set_cg_links_read()
6578 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_css_set_cg_links_read()
6599 struct css_set *cset = link->cset; in cgroup_css_links_read() local
6603 seq_printf(seq, "css_set %p\n", cset); in cgroup_css_links_read()
6605 list_for_each_entry(task, &cset->tasks, cg_list) { in cgroup_css_links_read()
6611 list_for_each_entry(task, &cset->mg_tasks, cg_list) { in cgroup_css_links_read()