[CRIU] [PATCH] Enable manage cgroup modes in criu service (v2)

Pavel Emelyanov xemul at parallels.com
Wed Aug 5 10:26:42 PDT 2015


On 08/05/2015 08:03 PM, Hui Kang wrote:
> Hi,
> Add another rpc option so that manage cgroup can be set in the service mode. Please review this one. Thanks.

Thanks for looking into this. Plz, note, that your mailer screwed tabs
into spaces in the patch.

-- Pavel

> - Hui
> 
> From 99a8dee55e7874c7089fa3baf1dd2aedc567b47f Mon Sep 17 00:00:00 2001
> From: Hui Kang <hkang.sunysb at gmail.com <mailto:hkang.sunysb at gmail.com>>
> Date: Wed, 5 Aug 2015 16:48:23 +0000
> Subject: [PATCH] Enable manage cgroup modes in criu service
> 
> Signed-off-by: Hui Kang <hkang.sunysb at gmail.com <mailto:hkang.sunysb at gmail.com>>
> ---
>  cr-service.c       |  4 ++++
>  lib/criu.c         | 11 +++++++++++
>  lib/criu.h         |  2 ++
>  protobuf/rpc.proto | 21 +++++++++++----------
>  4 files changed, 28 insertions(+), 10 deletions(-)
> 
> diff --git a/cr-service.c b/cr-service.c
> index 105787e..9bf15ed 100644
> --- a/cr-service.c
> +++ b/cr-service.c
> @@ -400,6 +400,10 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
>      if (req->has_manage_cgroups)
>          opts.manage_cgroups = req->manage_cgroups ? CG_MODE_SOFT : CG_MODE_IGNORE;
>  
> +    /* Override the manage_cgroup if mode is set explicitly */
> +    if (req->has_manage_cgroups_mode) {
> +        opts.manage_cgroups = req->manage_cgroups_mode;
> +
>      if (req->has_auto_ext_mnt)
>          opts.autodetect_ext_mounts = req->auto_ext_mnt;
>  
> diff --git a/lib/criu.c b/lib/criu.c
> index 3c194a1..90f909f 100644
> --- a/lib/criu.c
> +++ b/lib/criu.c
> @@ -375,6 +375,17 @@ void criu_set_manage_cgroups(bool manage)
>      criu_local_set_manage_cgroups(global_opts, manage);
>  }
>  
> +void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode)
> +{
> +    opts->rpc->has_manage_cgroups_mode = true;
> +    opts->rpc->manage_cgroups_mode = mode;
> +}
> +
> +void criu_set_manage_cgroups_mode(unsigned int mode)
> +{
> +    criu_local_set_manage_cgroups_mode(global_opts, mode);
> +}
> +
>  void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val)
>  {
>      opts->rpc->has_auto_ext_mnt = true;
> diff --git a/lib/criu.h b/lib/criu.h
> index 3cb0322..169b9e3 100644
> --- a/lib/criu.h
> +++ b/lib/criu.h
> @@ -67,6 +67,7 @@ void criu_set_log_file(char *log_file);
>  void criu_set_cpu_cap(unsigned int cap);
>  void criu_set_root(char *root);
>  void criu_set_manage_cgroups(bool manage);
> +void criu_set_manage_cgroups_mode(unsigned int mode);
>  void criu_set_auto_ext_mnt(bool val);
>  void criu_set_ext_sharing(bool val);
>  void criu_set_ext_masters(bool val);
> @@ -166,6 +167,7 @@ void criu_local_set_log_file(criu_opts *opts, char *log_file);
>  void criu_local_set_cpu_cap(criu_opts *opts, unsigned int cap);
>  void criu_local_set_root(criu_opts *opts, char *root);
>  void criu_local_set_manage_cgroups(criu_opts *opts, bool manage);
> +void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode);
>  void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val);
>  void criu_local_set_ext_sharing(criu_opts *opts, bool val);
>  void criu_local_set_ext_masters(criu_opts *opts, bool val);
> diff --git a/protobuf/rpc.proto b/protobuf/rpc.proto
> index 2f4d0c0..779898a 100644
> --- a/protobuf/rpc.proto
> +++ b/protobuf/rpc.proto
> @@ -60,20 +60,21 @@ message criu_opts {
>      repeated string            exec_cmd    = 22;
>  
>      repeated ext_mount_map        ext_mnt        = 23;
> -    optional bool            manage_cgroups    = 24;
> -    repeated cgroup_root        cg_root        = 25;
> +    optional bool            manage_cgroups    = 24; /* backward compatibility */
> +        optional uint32                 manage_cgroups_mode     = 25;
> +    repeated cgroup_root        cg_root        = 26;
>  
> -    optional bool            rst_sibling    = 26; /* swrk only */
> -    repeated inherit_fd        inherit_fd    = 27; /* swrk only */
> +    optional bool            rst_sibling    = 27; /* swrk only */
> +    repeated inherit_fd        inherit_fd    = 28; /* swrk only */
>  
> -    optional bool            auto_ext_mnt    = 28;
> -    optional bool            ext_sharing     = 29;
> -    optional bool            ext_masters    = 30;
> +    optional bool            auto_ext_mnt    = 29;
> +    optional bool            ext_sharing     = 30;
> +    optional bool            ext_masters    = 31;
>  
> -    repeated string            skip_mnt    = 31;
> -    repeated string            enable_fs    = 32;
> +    repeated string            skip_mnt    = 32;
> +    repeated string            enable_fs    = 33;
>  
> -    repeated unix_sk                unix_sk_ino     = 33;
> +    repeated unix_sk                unix_sk_ino     = 34;
>  }
>  
>  message criu_dump_resp {
> -- 
> 1.9.1
> 
> 



More information about the CRIU mailing list