It makes our interface different to mainstream cgroup_subtree_control_write() interface. Switching to do_each_subsys_mask saves 16 empty loop iterations maximum, I'd prefer been close to mainstream to been a bit faster here.
On 12/12/25 21:44, Konstantin Khorenko wrote: > Replace for_each_subsys with do_each_subsys_mask to iterate only > over subsystems in hide | show mask instead of all subsystems. > This improves performance by skipping unnecessary iterations. > > https://virtuozzo.atlassian.net/browse/VSTOR-119803 > Signed-off-by: Konstantin Khorenko <[email protected]> > --- > kernel/cgroup/cgroup.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c > index 5ab96088eee31..4274097b65f9c 100644 > --- a/kernel/cgroup/cgroup.c > +++ b/kernel/cgroup/cgroup.c > @@ -3962,6 +3962,7 @@ static ssize_t cgroup_controllers_hidden_write(struct > kernfs_open_file *of, > u16 old_hidden_ss_mask; > u16 change_mask = 0; > u16 applied_mask = 0; > + u16 process_mask; > int ssid, ret; > char *tok; > > @@ -3997,7 +3998,9 @@ static ssize_t cgroup_controllers_hidden_write(struct > kernfs_open_file *of, > if (!cgrp) > return -ENODEV; > > - for_each_subsys(ss, ssid) { > + /* Iterate only over subsystems in hide | show mask for efficiency */ > + process_mask = hide | show; > + do_each_subsys_mask(ss, ssid, process_mask) { > if (hide & (1 << ssid)) { > if (cgrp->hidden_ss_mask & (1 << ssid)) { > hide &= ~(1 << ssid); > @@ -4019,7 +4022,7 @@ static ssize_t cgroup_controllers_hidden_write(struct > kernfs_open_file *of, > goto out_unlock; > } > } > - } > + } while_each_subsys_mask(); > > if (!hide && !show) { > ret = 0; -- Best regards, Pavel Tikhomirov Senior Software Developer, Virtuozzo. _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
