|
@@ -2836,6 +2836,24 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * The effective csses of all the descendants (excluding @cgrp) may
|
|
|
+ * have changed. Subsystems can optionally subscribe to this event
|
|
|
+ * by implementing ->css_e_css_changed() which is invoked if any of
|
|
|
+ * the effective csses seen from the css's cgroup may have changed.
|
|
|
+ */
|
|
|
+ for_each_subsys(ss, ssid) {
|
|
|
+ struct cgroup_subsys_state *this_css = cgroup_css(cgrp, ss);
|
|
|
+ struct cgroup_subsys_state *css;
|
|
|
+
|
|
|
+ if (!ss->css_e_css_changed || !this_css)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ css_for_each_descendant_pre(css, this_css)
|
|
|
+ if (css != this_css)
|
|
|
+ ss->css_e_css_changed(css);
|
|
|
+ }
|
|
|
+
|
|
|
kernfs_activate(cgrp->kn);
|
|
|
ret = 0;
|
|
|
out_unlock:
|