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

Reply via email to