Hello Tejun, Alexei, On 3/28/24 22:01, Tejun Heo wrote: > Hello, > > On Thu, Mar 28, 2024 at 01:45:56PM -0700, Alexei Starovoitov wrote: >> On Thu, Mar 28, 2024 at 1:02 PM Tejun Heo <tj@xxxxxxxxxx> wrote: >>> >>> There's also cgroup.kill which would be useful for similar use cases. We can >>> add interface for both but idk. Let's say we have something like the >>> following (pardon the bad naming): >>> Yes having the cgroup.kill from bpf would be useful! >>> bpf_cgroup_knob_write(struct cgroup *cgrp, char *filename, char *buf) >>> >>> Would that work? I'm not necessarily in love with the idea or against adding >>> separate helpers but the duplication still bothers me a bit. >> >> I liked it. >> So filename will be one of cgroup_base_files[].name ? >> We probably don't want psi or cgroup1_base_files in there. > > Would it matter? If the user has root perm, they can do whatever with the > files anyway, so I'm not sure why we'd restrict any specific knob. Maybe we > wanna make sure @filename doesn't include '/'? Or is it that you don't want > to go through the usual file name look up? It would be easy at least for me if I just start with cgroupv2 and ensure that it has same available filenames as if we go through kernfs. Not a root cgroup node and maybe only freeze and kill for now that are part of cgroup_base_files. So if I get it right, somehow like what I did but we endup with: In bpf, cgroup was already acquired. bpf_cgroup_knob_write(cgroup, "freeze", buf) |_ parse params -> lock cgroup_mutex -> cgroup_freeze() -> unlock cgroup_freeze_write(struct kernfs_open_file *of, char *buf,...) |_ parse params -> cgroup_ref++ -> krnfs_active_ref-- -> -> lock cgroup_mutex -> cgroup_freeze() -> unlock + krnfs++ ... Please let me know if I missed something. Thanks!