Lines Matching refs:cset

438 	struct css_set		*cset;  member
523 static void put_css_set_locked(struct css_set *cset) in put_css_set_locked() argument
531 if (!atomic_dec_and_test(&cset->refcount)) in put_css_set_locked()
536 list_del(&cset->e_cset_node[ssid]); in put_css_set_locked()
537 hash_del(&cset->hlist); in put_css_set_locked()
540 list_for_each_entry_safe(link, tmp_link, &cset->cgrp_links, cgrp_link) { in put_css_set_locked()
555 kfree_rcu(cset, rcu_head); in put_css_set_locked()
558 static void put_css_set(struct css_set *cset) in put_css_set() argument
565 if (atomic_add_unless(&cset->refcount, -1, 1)) in put_css_set()
569 put_css_set_locked(cset); in put_css_set()
576 static inline void get_css_set(struct css_set *cset) in get_css_set() argument
578 atomic_inc(&cset->refcount); in get_css_set()
591 static bool compare_css_sets(struct css_set *cset, in compare_css_sets() argument
603 if (memcmp(template, cset->subsys, sizeof(cset->subsys))) in compare_css_sets()
612 l1 = &cset->cgrp_links; in compare_css_sets()
621 if (l1 == &cset->cgrp_links) { in compare_css_sets()
665 struct css_set *cset; in find_existing_css_set() local
691 hash_for_each_possible(css_set_table, cset, hlist, key) { in find_existing_css_set()
692 if (!compare_css_sets(cset, old_cset, cgrp, template)) in find_existing_css_set()
696 return cset; in find_existing_css_set()
745 static void link_css_set(struct list_head *tmp_links, struct css_set *cset, in link_css_set() argument
753 cset->dfl_cgrp = cgrp; in link_css_set()
756 link->cset = cset; in link_css_set()
767 list_add_tail(&link->cgrp_link, &cset->cgrp_links); in link_css_set()
782 struct css_set *cset; in find_css_set() local
794 cset = find_existing_css_set(old_cset, cgrp, template); in find_css_set()
795 if (cset) in find_css_set()
796 get_css_set(cset); in find_css_set()
799 if (cset) in find_css_set()
800 return cset; in find_css_set()
802 cset = kzalloc(sizeof(*cset), GFP_KERNEL); in find_css_set()
803 if (!cset) in find_css_set()
808 kfree(cset); in find_css_set()
812 atomic_set(&cset->refcount, 1); in find_css_set()
813 INIT_LIST_HEAD(&cset->cgrp_links); in find_css_set()
814 INIT_LIST_HEAD(&cset->tasks); in find_css_set()
815 INIT_LIST_HEAD(&cset->mg_tasks); in find_css_set()
816 INIT_LIST_HEAD(&cset->mg_preload_node); in find_css_set()
817 INIT_LIST_HEAD(&cset->mg_node); in find_css_set()
818 INIT_HLIST_NODE(&cset->hlist); in find_css_set()
822 memcpy(cset->subsys, template, sizeof(cset->subsys)); in find_css_set()
831 link_css_set(&tmp_links, cset, c); in find_css_set()
839 key = css_set_hash(cset->subsys); in find_css_set()
840 hash_add(css_set_table, &cset->hlist, key); in find_css_set()
843 list_add_tail(&cset->e_cset_node[ssid], in find_css_set()
844 &cset->subsys[ssid]->cgroup->e_csets[ssid]); in find_css_set()
848 return cset; in find_css_set()
933 static struct cgroup *cset_cgroup_from_root(struct css_set *cset, in cset_cgroup_from_root() argument
941 if (cset == &init_css_set) { in cset_cgroup_from_root()
946 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in cset_cgroup_from_root()
1273 struct css_set *cset; in rebind_subsystems() local
1289 hash_for_each(css_set_table, i, cset, hlist) in rebind_subsystems()
1290 list_move_tail(&cset->e_cset_node[ss->id], in rebind_subsystems()
1593 struct css_set *cset = task_css_set(p); in cgroup_enable_task_cg_lists() local
1595 list_add(&p->cg_list, &cset->tasks); in cgroup_enable_task_cg_lists()
1596 get_css_set(cset); in cgroup_enable_task_cg_lists()
1650 struct css_set *cset; in cgroup_setup_root() local
1714 hash_for_each(css_set_table, i, cset, hlist) in cgroup_setup_root()
1715 link_css_set(&tmp_links, cset, root_cgrp); in cgroup_setup_root()
2013 struct css_set *cset = tset->cur_cset; in cgroup_taskset_next() local
2016 while (&cset->mg_node != tset->csets) { in cgroup_taskset_next()
2018 task = list_first_entry(&cset->mg_tasks, in cgroup_taskset_next()
2023 if (&task->cg_list != &cset->mg_tasks) { in cgroup_taskset_next()
2024 tset->cur_cset = cset; in cgroup_taskset_next()
2029 cset = list_next_entry(cset, mg_node); in cgroup_taskset_next()
2089 struct css_set *cset, *tmp_cset; in cgroup_migrate_finish() local
2094 list_for_each_entry_safe(cset, tmp_cset, preloaded_csets, mg_preload_node) { in cgroup_migrate_finish()
2095 cset->mg_src_cgrp = NULL; in cgroup_migrate_finish()
2096 cset->mg_dst_cset = NULL; in cgroup_migrate_finish()
2097 list_del_init(&cset->mg_preload_node); in cgroup_migrate_finish()
2098 put_css_set_locked(cset); in cgroup_migrate_finish()
2239 struct css_set *cset, *tmp_cset; in cgroup_migrate() local
2260 cset = task_css_set(task); in cgroup_migrate()
2261 if (!cset->mg_src_cgrp) in cgroup_migrate()
2268 list_move_tail(&task->cg_list, &cset->mg_tasks); in cgroup_migrate()
2269 if (list_empty(&cset->mg_node)) in cgroup_migrate()
2270 list_add_tail(&cset->mg_node, &tset.src_csets); in cgroup_migrate()
2271 if (list_empty(&cset->mg_dst_cset->mg_node)) in cgroup_migrate()
2272 list_move_tail(&cset->mg_dst_cset->mg_node, in cgroup_migrate()
2302 list_for_each_entry(cset, &tset.src_csets, mg_node) { in cgroup_migrate()
2303 list_for_each_entry_safe(task, tmp_task, &cset->mg_tasks, cg_list) in cgroup_migrate()
2304 cgroup_task_migrate(cset->mg_src_cgrp, task, in cgroup_migrate()
2305 cset->mg_dst_cset); in cgroup_migrate()
2333 list_for_each_entry_safe(cset, tmp_cset, &tset.src_csets, mg_node) { in cgroup_migrate()
2334 list_splice_tail_init(&cset->mg_tasks, &cset->tasks); in cgroup_migrate()
2335 list_del_init(&cset->mg_node); in cgroup_migrate()
2618 cgroup_migrate_add_src(link->cset, cgrp, in cgroup_update_dfl_csses()
3344 count += atomic_read(&link->cset->refcount); in cgroup_task_count()
3586 struct css_set *cset; in css_advance_task_iter() local
3597 cset = container_of(l, struct css_set, in css_advance_task_iter()
3601 cset = link->cset; in css_advance_task_iter()
3603 } while (list_empty(&cset->tasks) && list_empty(&cset->mg_tasks)); in css_advance_task_iter()
3607 if (!list_empty(&cset->tasks)) in css_advance_task_iter()
3608 it->task_pos = cset->tasks.next; in css_advance_task_iter()
3610 it->task_pos = cset->mg_tasks.next; in css_advance_task_iter()
3612 it->tasks_head = &cset->tasks; in css_advance_task_iter()
3613 it->mg_tasks_head = &cset->mg_tasks; in css_advance_task_iter()
3723 cgroup_migrate_add_src(link->cset, to, &preloaded_csets); in cgroup_transfer_tasks()
5238 struct css_set *cset; in cgroup_post_fork() local
5241 cset = task_css_set(current); in cgroup_post_fork()
5243 rcu_assign_pointer(child->cgroups, cset); in cgroup_post_fork()
5244 list_add(&child->cg_list, &cset->tasks); in cgroup_post_fork()
5245 get_css_set(cset); in cgroup_post_fork()
5284 struct css_set *cset; in cgroup_exit() local
5300 cset = task_css_set(tsk); in cgroup_exit()
5307 struct cgroup_subsys_state *old_css = cset->subsys[i]; in cgroup_exit()
5316 put_css_set(cset); in cgroup_exit()
5513 struct css_set *cset; in current_css_set_cg_links_read() local
5522 cset = rcu_dereference(current->cgroups); in current_css_set_cg_links_read()
5523 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_css_set_cg_links_read()
5544 struct css_set *cset = link->cset; in cgroup_css_links_read() local
5548 seq_printf(seq, "css_set %p\n", cset); in cgroup_css_links_read()
5550 list_for_each_entry(task, &cset->tasks, cg_list) { in cgroup_css_links_read()
5556 list_for_each_entry(task, &cset->mg_tasks, cg_list) { in cgroup_css_links_read()