cgroup_kn_lock_live(9)
π cgroup_kn_lock_live(9) π
okay so this is a page from the Kernel API Manual, and honestly bestie, it's a little locking helper that carries the whole cgroup kernfs situation on its back. no cap. let's get into it β¨
πΈ NAME πΈ
cgroup_kn_lock_live β the locking helper for cgroup kernfs methods π«Ά
β SYNOPSIS β
struct cgroup * cgroup_kn_lock_live (struct kernfs_node *kn , bool
drain_offline );
π¦ ARGUMENTS π¦
knβ thekernfs_nodebeing serviced, aka the thing we're currently doing the absolute most for πdrain_offlineβ literally "perform offline draining on the cgroup" β say yes and it drains, iykyk π
π DESCRIPTION π
okay so picture this: this helper is to be used by a cgroup kernfs method currently servicing kn. that's the whole vibe. it's giving backstage pass energy ποΈ
here's the sequence, and it ate:
- it breaks the active protection (yes, breaking things is on purpose here, don't panic)
- it performs cgroup locking
- it verifies that the associated cgroup is alive β vibe check, basically π
returns the cgroup if alive; otherwise, NULL. so if you get a NULL back, the cgroup was not, in fact, slaying π
a successful return should be undone by a matching cgroup_kn_unlock invocation. matching!! don't leave your lock out here looking a mess, that's so not main character energy π
and if drain_offline is true, the cgroup is drained of offlining csses before return. yes, before. it's efficient like that π
any cgroup kernfs method implementation which requires locking the associated cgroup should use this helper. like, not "could", should. it avoids nesting cgroup locking under kernfs active protection and allows all kernfs operations including self-removal. self-removal!! iconic behavior honestly π
π₯ SEE ALSO π₯
kernel file ./kernel/cgroup/cgroup.c β and bestie, the friendship bracelet of cross-references is LONG, but every single one made the cut π«Ά
cgroup_ssid_enabled(9)cgroup_on_dfl(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)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, bestie, no skips no cuts π this one lives under ./kernel/cgroup and the version stamp on it is October 2026 β so yeah, it's from the future, it's giving time traveler, and honestly? obsessed πΈβ¨π
π¦ 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