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; -- 2.43.0 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
