[Devel] [PATCH v9 5/9] ve/cgroup: saving root_css to ve
Kirill Tkhai
ktkhai at virtuozzo.com
Thu Apr 16 18:42:08 MSK 2020
On 16.04.2020 18:09, Valeriy Vdovin wrote:
> Signed-off-by: Valeriy Vdovin <valeriy.vdovin at virtuozzo.com>
Reviewed-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
> include/linux/ve.h | 7 +++++++
> kernel/ve/ve.c | 6 +++++-
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/ve.h b/include/linux/ve.h
> index 362dae1..02e00e9 100644
> --- a/include/linux/ve.h
> +++ b/include/linux/ve.h
> @@ -127,6 +127,13 @@ struct ve_struct {
> struct kmapset_key sysfs_perms_key;
>
> struct workqueue_struct *wq;
> +
> + /*
> + * All tasks, that belong to this ve, live
> + * in cgroups, that are children to cgroups
> + * that form this css_set.
> + */
> + struct css_set *root_css_set;
> };
>
> struct ve_devmnt {
> diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c
> index 0f7392d..eedb85d 100644
> --- a/kernel/ve/ve.c
> +++ b/kernel/ve/ve.c
> @@ -450,6 +450,8 @@ static void ve_grab_context(struct ve_struct *ve)
>
> get_task_struct(tsk);
> ve->init_task = tsk;
> + ve->root_css_set = tsk->cgroups;
> + get_css_set(ve->root_css_set);
> ve->init_cred = (struct cred *)get_current_cred();
> rcu_assign_pointer(ve->ve_ns, get_nsproxy(tsk->nsproxy));
> ve->ve_netns = get_net(ve->ve_ns->net_ns);
> @@ -462,6 +464,9 @@ static void ve_drop_context(struct ve_struct *ve)
> put_net(ve->ve_netns);
> ve->ve_netns = NULL;
>
> + put_css_set_taskexit(ve->root_css_set);
> + ve->root_css_set = NULL;
> +
> /* Allows to dereference init_cred and init_task if ve_ns is set */
> rcu_assign_pointer(ve->ve_ns, NULL);
> synchronize_rcu();
> @@ -474,7 +479,6 @@ static void ve_drop_context(struct ve_struct *ve)
>
> put_task_struct(ve->init_task);
> ve->init_task = NULL;
> -
> }
>
> static const struct timespec zero_time = { };
>
More information about the Devel
mailing list