mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
cgroup: Add "no" prefixed mount options
We allow modifying these mount options via remount. Let's add "no" prefixed variants so that they can be turned off too. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Christian Brauner <brauner@kernel.org> Cc: Michal Koutný <mkoutny@suse.com>
This commit is contained in:
parent
671c11f061
commit
30312730bd
@ -177,14 +177,14 @@ disabling controllers in v1 and make them always available in v2.
|
|||||||
|
|
||||||
cgroup v2 currently supports the following mount options.
|
cgroup v2 currently supports the following mount options.
|
||||||
|
|
||||||
nsdelegate
|
[no]nsdelegate
|
||||||
Consider cgroup namespaces as delegation boundaries. This
|
Consider cgroup namespaces as delegation boundaries. This
|
||||||
option is system wide and can only be set on mount or modified
|
option is system wide and can only be set on mount or modified
|
||||||
through remount from the init namespace. The mount option is
|
through remount from the init namespace. The mount option is
|
||||||
ignored on non-init namespace mounts. Please refer to the
|
ignored on non-init namespace mounts. Please refer to the
|
||||||
Delegation section for details.
|
Delegation section for details.
|
||||||
|
|
||||||
memory_localevents
|
memory_[no]localevents
|
||||||
Only populate memory.events with data for the current cgroup,
|
Only populate memory.events with data for the current cgroup,
|
||||||
and not any subtrees. This is legacy behaviour, the default
|
and not any subtrees. This is legacy behaviour, the default
|
||||||
behaviour without this option is to include subtree counts.
|
behaviour without this option is to include subtree counts.
|
||||||
@ -192,7 +192,7 @@ cgroup v2 currently supports the following mount options.
|
|||||||
modified through remount from the init namespace. The mount
|
modified through remount from the init namespace. The mount
|
||||||
option is ignored on non-init namespace mounts.
|
option is ignored on non-init namespace mounts.
|
||||||
|
|
||||||
memory_recursiveprot
|
memory_[no]recursiveprot
|
||||||
Recursively apply memory.min and memory.low protection to
|
Recursively apply memory.min and memory.low protection to
|
||||||
entire subtrees, without requiring explicit downward
|
entire subtrees, without requiring explicit downward
|
||||||
propagation into leaf cgroups. This allows protecting entire
|
propagation into leaf cgroups. This allows protecting entire
|
||||||
|
@ -279,8 +279,6 @@ bool cgroup_ssid_enabled(int ssid)
|
|||||||
*
|
*
|
||||||
* - When mounting an existing superblock, mount options should match.
|
* - When mounting an existing superblock, mount options should match.
|
||||||
*
|
*
|
||||||
* - Remount is disallowed.
|
|
||||||
*
|
|
||||||
* - rename(2) is disallowed.
|
* - rename(2) is disallowed.
|
||||||
*
|
*
|
||||||
* - "tasks" is removed. Everything should be at process granularity. Use
|
* - "tasks" is removed. Everything should be at process granularity. Use
|
||||||
@ -1859,16 +1857,19 @@ int cgroup_show_path(struct seq_file *sf, struct kernfs_node *kf_node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum cgroup2_param {
|
enum cgroup2_param {
|
||||||
Opt_nsdelegate,
|
Opt_nsdelegate, Opt_nonsdelegate,
|
||||||
Opt_memory_localevents,
|
Opt_memory_localevents, Opt_memory_nolocalevents,
|
||||||
Opt_memory_recursiveprot,
|
Opt_memory_recursiveprot, Opt_memory_norecursiveprot,
|
||||||
nr__cgroup2_params
|
nr__cgroup2_params
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct fs_parameter_spec cgroup2_fs_parameters[] = {
|
static const struct fs_parameter_spec cgroup2_fs_parameters[] = {
|
||||||
fsparam_flag("nsdelegate", Opt_nsdelegate),
|
fsparam_flag("nsdelegate", Opt_nsdelegate),
|
||||||
|
fsparam_flag("nonsdelegate", Opt_nonsdelegate),
|
||||||
fsparam_flag("memory_localevents", Opt_memory_localevents),
|
fsparam_flag("memory_localevents", Opt_memory_localevents),
|
||||||
|
fsparam_flag("memory_nolocalevents", Opt_memory_nolocalevents),
|
||||||
fsparam_flag("memory_recursiveprot", Opt_memory_recursiveprot),
|
fsparam_flag("memory_recursiveprot", Opt_memory_recursiveprot),
|
||||||
|
fsparam_flag("memory_norecursiveprot", Opt_memory_norecursiveprot),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1886,12 +1887,21 @@ static int cgroup2_parse_param(struct fs_context *fc, struct fs_parameter *param
|
|||||||
case Opt_nsdelegate:
|
case Opt_nsdelegate:
|
||||||
ctx->flags |= CGRP_ROOT_NS_DELEGATE;
|
ctx->flags |= CGRP_ROOT_NS_DELEGATE;
|
||||||
return 0;
|
return 0;
|
||||||
|
case Opt_nonsdelegate:
|
||||||
|
ctx->flags &= ~CGRP_ROOT_NS_DELEGATE;
|
||||||
|
return 0;
|
||||||
case Opt_memory_localevents:
|
case Opt_memory_localevents:
|
||||||
ctx->flags |= CGRP_ROOT_MEMORY_LOCAL_EVENTS;
|
ctx->flags |= CGRP_ROOT_MEMORY_LOCAL_EVENTS;
|
||||||
return 0;
|
return 0;
|
||||||
|
case Opt_memory_nolocalevents:
|
||||||
|
ctx->flags &= ~CGRP_ROOT_MEMORY_LOCAL_EVENTS;
|
||||||
|
return 0;
|
||||||
case Opt_memory_recursiveprot:
|
case Opt_memory_recursiveprot:
|
||||||
ctx->flags |= CGRP_ROOT_MEMORY_RECURSIVE_PROT;
|
ctx->flags |= CGRP_ROOT_MEMORY_RECURSIVE_PROT;
|
||||||
return 0;
|
return 0;
|
||||||
|
case Opt_memory_norecursiveprot:
|
||||||
|
ctx->flags &= ~CGRP_ROOT_MEMORY_RECURSIVE_PROT;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user