aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/cgroup.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-07-09 10:08:08 -0400
committerTejun Heo <tj@kernel.org>2014-07-09 10:08:08 -0400
commitaa6ec29bee8692ce232132f1a1ea2a1f9196610e (patch)
tree6edb7f3fa4a3ac01ab03d874918a8c45e0b55e40 /kernel/cgroup.c
parentc1d5d42efdb3e0470c1cfd2fcb50bc3eae813283 (diff)
cgroup: remove sane_behavior support on non-default hierarchies
sane_behavior has been used as a development vehicle for the default unified hierarchy. Now that the default hierarchy is in place, the flag became redundant and confusing as its usage is allowed on all hierarchies. There are gonna be either the default hierarchy or legacy ones. Let's make that clear by removing sane_behavior support on non-default hierarchies. This patch replaces cgroup_sane_behavior() with cgroup_on_dfl(). The comment on top of CGRP_ROOT_SANE_BEHAVIOR is moved to on top of cgroup_on_dfl() with sane_behavior specific part dropped. On the default and legacy hierarchies w/o sane_behavior, this shouldn't cause any behavior differences. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Vivek Goyal <vgoyal@redhat.com> Acked-by: Li Zefan <lizefan@huawei.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz>
Diffstat (limited to 'kernel/cgroup.c')
-rw-r--r--kernel/cgroup.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 0ea54af6b133..fb07c6d43aff 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1470,8 +1470,8 @@ static int cgroup_remount(struct kernfs_root *kf_root, int *flags, char *data)
1470 struct cgroup_sb_opts opts; 1470 struct cgroup_sb_opts opts;
1471 unsigned int added_mask, removed_mask; 1471 unsigned int added_mask, removed_mask;
1472 1472
1473 if (root->flags & CGRP_ROOT_SANE_BEHAVIOR) { 1473 if (root == &cgrp_dfl_root) {
1474 pr_err("sane_behavior: remount is not allowed\n"); 1474 pr_err("remount is not allowed\n");
1475 return -EINVAL; 1475 return -EINVAL;
1476 } 1476 }
1477 1477
@@ -2943,9 +2943,9 @@ static int cgroup_rename(struct kernfs_node *kn, struct kernfs_node *new_parent,
2943 2943
2944 /* 2944 /*
2945 * This isn't a proper migration and its usefulness is very 2945 * This isn't a proper migration and its usefulness is very
2946 * limited. Disallow if sane_behavior. 2946 * limited. Disallow on the default hierarchy.
2947 */ 2947 */
2948 if (cgroup_sane_behavior(cgrp)) 2948 if (cgroup_on_dfl(cgrp))
2949 return -EPERM; 2949 return -EPERM;
2950 2950
2951 /* 2951 /*
@@ -3031,7 +3031,7 @@ static int cgroup_addrm_files(struct cgroup *cgrp, struct cftype cfts[],
3031 /* does cft->flags tell us to skip this file on @cgrp? */ 3031 /* does cft->flags tell us to skip this file on @cgrp? */
3032 if ((cft->flags & CFTYPE_ONLY_ON_DFL) && !cgroup_on_dfl(cgrp)) 3032 if ((cft->flags & CFTYPE_ONLY_ON_DFL) && !cgroup_on_dfl(cgrp))
3033 continue; 3033 continue;
3034 if ((cft->flags & CFTYPE_INSANE) && cgroup_sane_behavior(cgrp)) 3034 if ((cft->flags & CFTYPE_INSANE) && cgroup_on_dfl(cgrp))
3035 continue; 3035 continue;
3036 if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgroup_parent(cgrp)) 3036 if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgroup_parent(cgrp))
3037 continue; 3037 continue;
@@ -3764,8 +3764,9 @@ after:
3764 * 3764 *
3765 * All this extra complexity was caused by the original implementation 3765 * All this extra complexity was caused by the original implementation
3766 * committing to an entirely unnecessary property. In the long term, we 3766 * committing to an entirely unnecessary property. In the long term, we
3767 * want to do away with it. Explicitly scramble sort order if 3767 * want to do away with it. Explicitly scramble sort order if on the
3768 * sane_behavior so that no such expectation exists in the new interface. 3768 * default hierarchy so that no such expectation exists in the new
3769 * interface.
3769 * 3770 *
3770 * Scrambling is done by swapping every two consecutive bits, which is 3771 * Scrambling is done by swapping every two consecutive bits, which is
3771 * non-identity one-to-one mapping which disturbs sort order sufficiently. 3772 * non-identity one-to-one mapping which disturbs sort order sufficiently.
@@ -3780,7 +3781,7 @@ static pid_t pid_fry(pid_t pid)
3780 3781
3781static pid_t cgroup_pid_fry(struct cgroup *cgrp, pid_t pid) 3782static pid_t cgroup_pid_fry(struct cgroup *cgrp, pid_t pid)
3782{ 3783{
3783 if (cgroup_sane_behavior(cgrp)) 3784 if (cgroup_on_dfl(cgrp))
3784 return pid_fry(pid); 3785 return pid_fry(pid);
3785 else 3786 else
3786 return pid; 3787 return pid;
@@ -3883,7 +3884,7 @@ static int pidlist_array_load(struct cgroup *cgrp, enum cgroup_filetype type,
3883 css_task_iter_end(&it); 3884 css_task_iter_end(&it);
3884 length = n; 3885 length = n;
3885 /* now sort & (if procs) strip out duplicates */ 3886 /* now sort & (if procs) strip out duplicates */
3886 if (cgroup_sane_behavior(cgrp)) 3887 if (cgroup_on_dfl(cgrp))
3887 sort(array, length, sizeof(pid_t), fried_cmppid, NULL); 3888 sort(array, length, sizeof(pid_t), fried_cmppid, NULL);
3888 else 3889 else
3889 sort(array, length, sizeof(pid_t), cmppid, NULL); 3890 sort(array, length, sizeof(pid_t), cmppid, NULL);