Lines Matching refs:cset
574 struct css_set *cset; member
606 static bool css_set_populated(struct css_set *cset) in css_set_populated() argument
610 return !list_empty(&cset->tasks) || !list_empty(&cset->mg_tasks); in css_set_populated()
659 static void css_set_update_populated(struct css_set *cset, bool populated) in css_set_update_populated() argument
665 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) in css_set_update_populated()
752 static void put_css_set_locked(struct css_set *cset) in put_css_set_locked() argument
760 if (!atomic_dec_and_test(&cset->refcount)) in put_css_set_locked()
765 list_del(&cset->e_cset_node[ssid]); in put_css_set_locked()
766 css_put(cset->subsys[ssid]); in put_css_set_locked()
768 hash_del(&cset->hlist); in put_css_set_locked()
771 list_for_each_entry_safe(link, tmp_link, &cset->cgrp_links, cgrp_link) { in put_css_set_locked()
779 kfree_rcu(cset, rcu_head); in put_css_set_locked()
782 static void put_css_set(struct css_set *cset) in put_css_set() argument
789 if (atomic_add_unless(&cset->refcount, -1, 1)) in put_css_set()
793 put_css_set_locked(cset); in put_css_set()
800 static inline void get_css_set(struct css_set *cset) in get_css_set() argument
802 atomic_inc(&cset->refcount); in get_css_set()
815 static bool compare_css_sets(struct css_set *cset, in compare_css_sets() argument
827 if (memcmp(template, cset->subsys, sizeof(cset->subsys))) in compare_css_sets()
836 l1 = &cset->cgrp_links; in compare_css_sets()
845 if (l1 == &cset->cgrp_links) { in compare_css_sets()
889 struct css_set *cset; in find_existing_css_set() local
915 hash_for_each_possible(css_set_table, cset, hlist, key) { in find_existing_css_set()
916 if (!compare_css_sets(cset, old_cset, cgrp, template)) in find_existing_css_set()
920 return cset; in find_existing_css_set()
969 static void link_css_set(struct list_head *tmp_links, struct css_set *cset, in link_css_set() argument
977 cset->dfl_cgrp = cgrp; in link_css_set()
980 link->cset = cset; in link_css_set()
988 list_add_tail(&link->cgrp_link, &cset->cgrp_links); in link_css_set()
1006 struct css_set *cset; in find_css_set() local
1018 cset = find_existing_css_set(old_cset, cgrp, template); in find_css_set()
1019 if (cset) in find_css_set()
1020 get_css_set(cset); in find_css_set()
1023 if (cset) in find_css_set()
1024 return cset; in find_css_set()
1026 cset = kzalloc(sizeof(*cset), GFP_KERNEL); in find_css_set()
1027 if (!cset) in find_css_set()
1032 kfree(cset); in find_css_set()
1036 atomic_set(&cset->refcount, 1); in find_css_set()
1037 INIT_LIST_HEAD(&cset->cgrp_links); in find_css_set()
1038 INIT_LIST_HEAD(&cset->tasks); in find_css_set()
1039 INIT_LIST_HEAD(&cset->mg_tasks); in find_css_set()
1040 INIT_LIST_HEAD(&cset->mg_preload_node); in find_css_set()
1041 INIT_LIST_HEAD(&cset->mg_node); in find_css_set()
1042 INIT_LIST_HEAD(&cset->task_iters); in find_css_set()
1043 INIT_HLIST_NODE(&cset->hlist); in find_css_set()
1047 memcpy(cset->subsys, template, sizeof(cset->subsys)); in find_css_set()
1056 link_css_set(&tmp_links, cset, c); in find_css_set()
1064 key = css_set_hash(cset->subsys); in find_css_set()
1065 hash_add(css_set_table, &cset->hlist, key); in find_css_set()
1068 struct cgroup_subsys_state *css = cset->subsys[ssid]; in find_css_set()
1070 list_add_tail(&cset->e_cset_node[ssid], in find_css_set()
1077 return cset; in find_css_set()
1163 static struct cgroup *cset_cgroup_from_root(struct css_set *cset, in cset_cgroup_from_root() argument
1171 if (cset == &init_css_set) { in cset_cgroup_from_root()
1176 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in cset_cgroup_from_root()
1540 struct css_set *cset; in rebind_subsystems() local
1552 hash_for_each(css_set_table, i, cset, hlist) in rebind_subsystems()
1553 list_move_tail(&cset->e_cset_node[ss->id], in rebind_subsystems()
1860 struct css_set *cset = task_css_set(p); in cgroup_enable_task_cg_lists() local
1862 if (!css_set_populated(cset)) in cgroup_enable_task_cg_lists()
1863 css_set_update_populated(cset, true); in cgroup_enable_task_cg_lists()
1864 list_add_tail(&p->cg_list, &cset->tasks); in cgroup_enable_task_cg_lists()
1865 get_css_set(cset); in cgroup_enable_task_cg_lists()
1918 struct css_set *cset; in cgroup_setup_root() local
1977 hash_for_each(css_set_table, i, cset, hlist) { in cgroup_setup_root()
1978 link_css_set(&tmp_links, cset, root_cgrp); in cgroup_setup_root()
1979 if (css_set_populated(cset)) in cgroup_setup_root()
2278 struct css_set *cset; in cgroup_taskset_add() local
2290 cset = task_css_set(task); in cgroup_taskset_add()
2291 if (!cset->mg_src_cgrp) in cgroup_taskset_add()
2294 list_move_tail(&task->cg_list, &cset->mg_tasks); in cgroup_taskset_add()
2295 if (list_empty(&cset->mg_node)) in cgroup_taskset_add()
2296 list_add_tail(&cset->mg_node, &tset->src_csets); in cgroup_taskset_add()
2297 if (list_empty(&cset->mg_dst_cset->mg_node)) in cgroup_taskset_add()
2298 list_move_tail(&cset->mg_dst_cset->mg_node, in cgroup_taskset_add()
2329 struct css_set *cset = tset->cur_cset; in cgroup_taskset_next() local
2332 while (&cset->mg_node != tset->csets) { in cgroup_taskset_next()
2334 task = list_first_entry(&cset->mg_tasks, in cgroup_taskset_next()
2339 if (&task->cg_list != &cset->mg_tasks) { in cgroup_taskset_next()
2340 tset->cur_cset = cset; in cgroup_taskset_next()
2349 if (cset->mg_dst_cset) in cgroup_taskset_next()
2350 *dst_cssp = cset->mg_dst_cset->subsys[tset->ssid]; in cgroup_taskset_next()
2352 *dst_cssp = cset->subsys[tset->ssid]; in cgroup_taskset_next()
2357 cset = list_next_entry(cset, mg_node); in cgroup_taskset_next()
2379 struct css_set *cset, *tmp_cset; in cgroup_taskset_migrate() local
2404 list_for_each_entry(cset, &tset->src_csets, mg_node) { in cgroup_taskset_migrate()
2405 list_for_each_entry_safe(task, tmp_task, &cset->mg_tasks, cg_list) { in cgroup_taskset_migrate()
2407 struct css_set *to_cset = cset->mg_dst_cset; in cgroup_taskset_migrate()
2445 list_for_each_entry_safe(cset, tmp_cset, &tset->src_csets, mg_node) { in cgroup_taskset_migrate()
2446 list_splice_tail_init(&cset->mg_tasks, &cset->tasks); in cgroup_taskset_migrate()
2447 list_del_init(&cset->mg_node); in cgroup_taskset_migrate()
2462 struct css_set *cset, *tmp_cset; in cgroup_migrate_finish() local
2467 list_for_each_entry_safe(cset, tmp_cset, preloaded_csets, mg_preload_node) { in cgroup_migrate_finish()
2468 cset->mg_src_cgrp = NULL; in cgroup_migrate_finish()
2469 cset->mg_dst_cset = NULL; in cgroup_migrate_finish()
2470 list_del_init(&cset->mg_preload_node); in cgroup_migrate_finish()
2471 put_css_set_locked(cset); in cgroup_migrate_finish()
2935 cgroup_migrate_add_src(link->cset, cgrp, in cgroup_update_dfl_csses()
3642 count += atomic_read(&link->cset->refcount); in cgroup_task_count()
3884 struct css_set *cset; in css_task_iter_advance_css_set() local
3898 cset = container_of(l, struct css_set, in css_task_iter_advance_css_set()
3902 cset = link->cset; in css_task_iter_advance_css_set()
3904 } while (!css_set_populated(cset)); in css_task_iter_advance_css_set()
3908 if (!list_empty(&cset->tasks)) in css_task_iter_advance_css_set()
3909 it->task_pos = cset->tasks.next; in css_task_iter_advance_css_set()
3911 it->task_pos = cset->mg_tasks.next; in css_task_iter_advance_css_set()
3913 it->tasks_head = &cset->tasks; in css_task_iter_advance_css_set()
3914 it->mg_tasks_head = &cset->mg_tasks; in css_task_iter_advance_css_set()
3935 get_css_set(cset); in css_task_iter_advance_css_set()
3936 it->cur_cset = cset; in css_task_iter_advance_css_set()
3937 list_add(&it->iters_node, &cset->task_iters); in css_task_iter_advance_css_set()
4069 cgroup_migrate_add_src(link->cset, to, &preloaded_csets); in cgroup_transfer_tasks()
5176 link->cset->dead = true; in cgroup_destroy_locked()
5641 struct css_set *cset; in cgroup_post_fork() local
5644 cset = task_css_set(current); in cgroup_post_fork()
5646 get_css_set(cset); in cgroup_post_fork()
5647 css_set_move_task(child, NULL, cset, false); in cgroup_post_fork()
5683 struct css_set *cset; in cgroup_exit() local
5690 cset = task_css_set(tsk); in cgroup_exit()
5694 css_set_move_task(tsk, cset, NULL, false); in cgroup_exit()
5697 get_css_set(cset); in cgroup_exit()
5707 struct css_set *cset = task_css_set(task); in cgroup_free() local
5714 put_css_set(cset); in cgroup_free()
5901 struct css_set *cset; in current_css_set_cg_links_read() local
5910 cset = rcu_dereference(current->cgroups); in current_css_set_cg_links_read()
5911 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_css_set_cg_links_read()
5932 struct css_set *cset = link->cset; in cgroup_css_links_read() local
5936 seq_printf(seq, "css_set %p\n", cset); in cgroup_css_links_read()
5938 list_for_each_entry(task, &cset->tasks, cg_list) { in cgroup_css_links_read()
5944 list_for_each_entry(task, &cset->mg_tasks, cg_list) { in cgroup_css_links_read()