<div dir="ltr">Hi, Pavel and Ruslan,<div>I will fix these and resubmit the patch. Thanks.</div><div><br></div><div>- Hui</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 5, 2015 at 1:26 PM, Pavel Emelyanov <span dir="ltr"><<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 08/05/2015 08:03 PM, Hui Kang wrote:<br>
</span><span class="">> Hi,<br>
> Add another rpc option so that manage cgroup can be set in the service mode. Please review this one. Thanks.<br>
<br>
</span>Thanks for looking into this. Plz, note, that your mailer screwed tabs<br>
into spaces in the patch.<br>
<br>
-- Pavel<br>
<span class=""><br>
> - Hui<br>
><br>
> From 99a8dee55e7874c7089fa3baf1dd2aedc567b47f Mon Sep 17 00:00:00 2001<br>
</span>> From: Hui Kang <<a href="mailto:hkang.sunysb@gmail.com">hkang.sunysb@gmail.com</a> <mailto:<a href="mailto:hkang.sunysb@gmail.com">hkang.sunysb@gmail.com</a>>><br>
<span class="">> Date: Wed, 5 Aug 2015 16:48:23 +0000<br>
> Subject: [PATCH] Enable manage cgroup modes in criu service<br>
><br>
</span>> Signed-off-by: Hui Kang <<a href="mailto:hkang.sunysb@gmail.com">hkang.sunysb@gmail.com</a> <mailto:<a href="mailto:hkang.sunysb@gmail.com">hkang.sunysb@gmail.com</a>>><br>
<div class="HOEnZb"><div class="h5">> ---<br>
> cr-service.c | 4 ++++<br>
> lib/criu.c | 11 +++++++++++<br>
> lib/criu.h | 2 ++<br>
> protobuf/rpc.proto | 21 +++++++++++----------<br>
> 4 files changed, 28 insertions(+), 10 deletions(-)<br>
><br>
> diff --git a/cr-service.c b/cr-service.c<br>
> index 105787e..9bf15ed 100644<br>
> --- a/cr-service.c<br>
> +++ b/cr-service.c<br>
> @@ -400,6 +400,10 @@ static int setup_opts_from_req(int sk, CriuOpts *req)<br>
> if (req->has_manage_cgroups)<br>
> opts.manage_cgroups = req->manage_cgroups ? CG_MODE_SOFT : CG_MODE_IGNORE;<br>
><br>
> + /* Override the manage_cgroup if mode is set explicitly */<br>
> + if (req->has_manage_cgroups_mode) {<br>
> + opts.manage_cgroups = req->manage_cgroups_mode;<br>
> +<br>
> if (req->has_auto_ext_mnt)<br>
> opts.autodetect_ext_mounts = req->auto_ext_mnt;<br>
><br>
> diff --git a/lib/criu.c b/lib/criu.c<br>
> index 3c194a1..90f909f 100644<br>
> --- a/lib/criu.c<br>
> +++ b/lib/criu.c<br>
> @@ -375,6 +375,17 @@ void criu_set_manage_cgroups(bool manage)<br>
> criu_local_set_manage_cgroups(global_opts, manage);<br>
> }<br>
><br>
> +void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode)<br>
> +{<br>
> + opts->rpc->has_manage_cgroups_mode = true;<br>
> + opts->rpc->manage_cgroups_mode = mode;<br>
> +}<br>
> +<br>
> +void criu_set_manage_cgroups_mode(unsigned int mode)<br>
> +{<br>
> + criu_local_set_manage_cgroups_mode(global_opts, mode);<br>
> +}<br>
> +<br>
> void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val)<br>
> {<br>
> opts->rpc->has_auto_ext_mnt = true;<br>
> diff --git a/lib/criu.h b/lib/criu.h<br>
> index 3cb0322..169b9e3 100644<br>
> --- a/lib/criu.h<br>
> +++ b/lib/criu.h<br>
> @@ -67,6 +67,7 @@ void criu_set_log_file(char *log_file);<br>
> void criu_set_cpu_cap(unsigned int cap);<br>
> void criu_set_root(char *root);<br>
> void criu_set_manage_cgroups(bool manage);<br>
> +void criu_set_manage_cgroups_mode(unsigned int mode);<br>
> void criu_set_auto_ext_mnt(bool val);<br>
> void criu_set_ext_sharing(bool val);<br>
> void criu_set_ext_masters(bool val);<br>
> @@ -166,6 +167,7 @@ void criu_local_set_log_file(criu_opts *opts, char *log_file);<br>
> void criu_local_set_cpu_cap(criu_opts *opts, unsigned int cap);<br>
> void criu_local_set_root(criu_opts *opts, char *root);<br>
> void criu_local_set_manage_cgroups(criu_opts *opts, bool manage);<br>
> +void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode);<br>
> void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val);<br>
> void criu_local_set_ext_sharing(criu_opts *opts, bool val);<br>
> void criu_local_set_ext_masters(criu_opts *opts, bool val);<br>
> diff --git a/protobuf/rpc.proto b/protobuf/rpc.proto<br>
> index 2f4d0c0..779898a 100644<br>
> --- a/protobuf/rpc.proto<br>
> +++ b/protobuf/rpc.proto<br>
> @@ -60,20 +60,21 @@ message criu_opts {<br>
> repeated string exec_cmd = 22;<br>
><br>
> repeated ext_mount_map ext_mnt = 23;<br>
> - optional bool manage_cgroups = 24;<br>
> - repeated cgroup_root cg_root = 25;<br>
> + optional bool manage_cgroups = 24; /* backward compatibility */<br>
> + optional uint32 manage_cgroups_mode = 25;<br>
> + repeated cgroup_root cg_root = 26;<br>
><br>
> - optional bool rst_sibling = 26; /* swrk only */<br>
> - repeated inherit_fd inherit_fd = 27; /* swrk only */<br>
> + optional bool rst_sibling = 27; /* swrk only */<br>
> + repeated inherit_fd inherit_fd = 28; /* swrk only */<br>
><br>
> - optional bool auto_ext_mnt = 28;<br>
> - optional bool ext_sharing = 29;<br>
> - optional bool ext_masters = 30;<br>
> + optional bool auto_ext_mnt = 29;<br>
> + optional bool ext_sharing = 30;<br>
> + optional bool ext_masters = 31;<br>
><br>
> - repeated string skip_mnt = 31;<br>
> - repeated string enable_fs = 32;<br>
> + repeated string skip_mnt = 32;<br>
> + repeated string enable_fs = 33;<br>
><br>
> - repeated unix_sk unix_sk_ino = 33;<br>
> + repeated unix_sk unix_sk_ino = 34;<br>
> }<br>
><br>
> message criu_dump_resp {<br>
> --<br>
> 1.9.1<br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>