[Devel] [PATCH rh7] cgroups: Drop virtualization code, v3

Vladimir Davydov vdavydov at parallels.com
Wed May 6 10:04:02 PDT 2015


On Wed, May 06, 2015 at 11:57:08AM +0300, Cyrill Gorcunov wrote:
> Here we rip off all the virtualization code we introduced into kernel to
> behave close to rhel6.
> 
> Because we're trying a new concept (bindmounting from the node) it is
> no longer needed.
> 
> Now some details:
> 
>  - drop cgroup_show_path -- we don't hide VEID in /proc/self/cgroup output,
>    it doesn't break criu so no need to carry it, same applies to changes
>    in cgroup_path;
> 
>  - because we drop virtualization of systemd -- disable creation of new
>    hierarchies in container: we don't support it, neither we need it. The
>    primary reason why we allowed new hierarchies in container was that
>    CRIU has been running restore procedure inside VE but now we initiate
>    restore from VE0, so we can safely disable new hierarchies;
> 
>  - in cgroup_addrm_files go back to former RHEL7 code; if we need something
>    special here it must be reviewed carefully and separately;
> 
>  - no need to hide /proc/cgroups in VE, there is no sensible info present.
> 
> v2:
> 
>  - take into account commits 38f039db6e023ac14517219ad6f674633c4e99ca
>    and c2ac6df22b20389ae2d0af49c436b00ff3243e89 removing cgroup_is_disposable,
>    cgroup_kernel_destroy, ve::ve_cgroup_head.
> 
>  - drop GRPP_WEAK, CGRP_SELF_DESTRUCTION and CGRP_VE_TOP_CGROUP_VIRTUAL flags
>    which implies the cgroups no longer auto-cleaned up but user-space tool
>    (read vzctl and friends) should handle cgroups removal
> 
>  - because we're moving to native cgroups code we don't virtualize release
>    agent anymore
> 
>  - still cgroup::cgroup_ve member is needed because we're using it
>    all over the code

Where do we use it? I think you're mixing it up with the cgroup_ve()
macro, which has nothing to do with the ->cgroup_ve cgroup struct
member.

> 
> v3:
> 
>  - move back ve_offline, we need to free ve id
> 
> Signed-off-by: Cyrill Gorcunov <gorcunov at odin.com>
> CC: Vladimir Davydov <vdavydov at odin.com>
> CC: Konstantin Khorenko <khorenko at odin.com>
> CC: Pavel Emelyanov <xemul at odin.com>
> CC: Andrey Vagin <avagin at odin.com>
> ---
>  include/linux/cgroup.h  |   15 ---
>  include/linux/ve.h      |    1 
>  kernel/bc/beancounter.c |   11 --
>  kernel/cgroup.c         |  214 ++++++------------------------------------------
>  kernel/ve/ve.c          |    9 --
>  kernel/ve/vecalls.c     |    6 -
>  6 files changed, 39 insertions(+), 217 deletions(-)
> 
[...]
> Index: linux-pcs7.git/kernel/cgroup.c
> ===================================================================
> --- linux-pcs7.git.orig/kernel/cgroup.c
> +++ linux-pcs7.git/kernel/cgroup.c
> @@ -256,18 +256,11 @@ bool cgroup_is_descendant(struct cgroup
>  }
>  EXPORT_SYMBOL_GPL(cgroup_is_descendant);
>  
> -static int cgroup_is_disposable(const struct cgroup *cgrp)
> -{
> -	return (cgrp->flags & ((1 << CGRP_NOTIFY_ON_RELEASE) |
> -				(1 << CGRP_SELF_DESTRUCTION))) > 0;
> -}
> -
>  static int cgroup_is_releasable(const struct cgroup *cgrp)
>  {
>  	const int bits =
>  		(1 << CGRP_RELEASABLE) |
> -		(1 << CGRP_NOTIFY_ON_RELEASE) |
> -		(1 << CGRP_SELF_DESTRUCTION);
> +		(1 << CGRP_NOTIFY_ON_RELEASE);
>  	return (cgrp->flags & bits) > (1 << CGRP_RELEASABLE);

Before commit 38f039db6e023ac14517219ad6f674633c4e99ca we had

-       return (cgrp->flags & bits) == bits;

here. Fix please.

>  }
>  
[...]
> @@ -5774,7 +5621,6 @@ EXPORT_SYMBOL(cgroup_kernel_close);
>  
>  void cgroup_kernel_destroy(struct cgroup *cgrp)

We don't use this function anymore. Remove it please.

>  {
> -	set_bit(CGRP_SELF_DESTRUCTION, &cgrp->flags);
>  	set_bit(CGRP_RELEASABLE, &cgrp->flags);
>  	check_for_release(cgrp);
>  }



More information about the Devel mailing list