cgroup_on_dfl(9)
π cgroup_on_dfl π
okay so real talk, this is a page from the Kernel API Manual (yes, the kernel has lore) and it's the manual entry for cgroup_on_dfl(9). buckle up bestie, we're going in π«Ά
β¨ NAME β¨
cgroup_on_dfl β test whether a cgroup is on the default hierarchy πΈ
β¨ SYNOPSIS β¨
bool cgroup_on_dfl (const struct cgroup *cgrp );
β¨ ARGUMENTS β¨
cgrpβ the cgroup of interest π like, the one you're asking about
β¨ DESCRIPTION β¨
okay so the default hierarchy is literally just the v2 interface of cgroup, no cap. and this function is your little vibe check: you hand it a cgroup and it tells you whether that cgroup is on the default hierarchy. why do you care? because sometimes a subsystem needs to act different depending on which interface version it's dealing with β it's giving "different personality depending on who's in the room" π
here's the list of changed behaviors, and bestie, it's a list:
- Mount options
"noprefix","xattr","clone_children","release_agent"and"name"are disallowed. not invited to the party π - When mounting an existing superblock, mount options should match.
rename(2)is disallowed."tasks"is removed. everything should be at process granularity. use"cgroup.procs"instead. (tasks? never heard of her.)"cgroup.procs"is not sorted. pids will be unique unless they got recycled in-between reads. so like, don't count on the order, fr fr π"release_agent"and"notify_on_release"are removed. a replacement notification mechanism will be implemented. (coming soonβ’ β¨)"cgroup.clone_children"is removed."cgroup.subtree_populated"is available. its value is0if the cgroup and its descendants contain no task; otherwise,1. the file also generates kernfs notification which can be monitored throughpolland[di]notifywhen the value of the file changes. iconic behavior honestly π- cpuset: tasks will be kept in empty cpusets when hotplug happens and take masks of ancestors with non-empty cpus/mems, instead of being moved to an ancestor.
- cpuset: a task can be moved into an empty cpuset, and again it takes masks of ancestors.
- blkcg: blk-throttle becomes properly hierarchical. slay π
β οΈ heads up bestie: a bunch of these are straight-up removed or disallowed on the default hierarchy. that's not a bug, that's the design. don't go looking fortasksorrename(2), they're not coming back π
π SEE ALSO π
the kernel file ./kernel/cgroup/cgroup.c, plus this absolutely enormous friend group of functions (yes, all of them, i'm not skipping a single one, i would never do that to you):
cgroup_ssid_enabled(9), cgroup_e_css_by_mask(9), cgroup_e_css(9), cgroup_get_e_css(9), __cgroup_task_count(9), cgroup_task_count(9), for_each_css(9), do_each_subsys_mask(9), css_set_populated(9), css_update_populated(9), css_set_update_populated(9), css_set_move_task(9), compare_css_sets(9), find_existing_css_set(9), allocate_cgrp_cset_links(9), link_css_set(9), find_css_set(9), cgroup_file_mode(9), cgroup_calc_subtree_ss_mask(9), cgroup_kn_unlock(9), cgroup_kn_lock_live(9), css_clear_dir(9), css_populate_dir(9), cgroup_attach_lock(9), cgroup_attach_unlock(9), cgroup_migrate_add_task(9), cgroup_taskset_first(9), cgroup_taskset_next(9), cgroup_migrate_execute(9), cgroup_migrate_vet_dst(9), cgroup_migrate_finish(9), cgroup_migrate_add_src(9), cgroup_migrate_prepare_dst(9), cgroup_migrate(9), cgroup_attach_task(9), cgroup_update_dfl_csses(9), cgroup_lock_and_drain_offline(9), cgroup_save_control(9), cgroup_propagate_control(9), cgroup_restore_control(9), cgroup_apply_control_enable(9), cgroup_apply_control_disable(9), cgroup_apply_control(9), cgroup_finalize_control(9), cgroup_enable_threaded(9), cgroup_tryget_css(9), cgroup_addrm_files(9), cgroup_rm_cftypes(9), cgroup_add_cftypes(9), cgroup_add_dfl_cftypes(9), cgroup_add_legacy_cftypes(9), cgroup_file_notify(9), cgroup_file_show(9), css_next_child(9), css_next_descendant_pre(9), css_rightmost_descendant(9), css_next_descendant_post(9), css_has_online_children(9), css_task_iter_advance_css_set(9), css_task_iter_start(9), css_task_iter_next(9), css_task_iter_end(9), css_create(9), kill_css_sync(9), kill_css_finish(9), cgroup_destroy_locked(9), cgroup_init_early(9), cgroup_init(9), cgroup_fork(9), cgroup_v1v2_get_from_file(9), cgroup_get_from_file(9), cgroup_css_set_fork(9), cgroup_css_set_put_fork(9), cgroup_can_fork(9), cgroup_cancel_fork(9), cgroup_post_fork(9), cgroup_task_exit(9), css_tryget_online_from_dir(9), css_from_id(9), cgroup_get_from_path(9), cgroup_v1v2_get_from_fd(9), cgroup_get_from_fd(9), cgroup_parse_float(9)
and that's the whole page babes π it lives under ./kernel/cgroup, and this edition is dated October 2026 β catch you in the next cgroup_on_dfl(9) era ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms