[CRIU] [PATCHv3 1/3] rpc: Add `remote` option

Radostin Stoyanov rstoyanov1 at gmail.com
Mon Feb 12 13:54:04 MSK 2018


Use the resolved `images_dir` path instead of fd path stored in
`images_dir_path` to ensure that init_snapshot_id() will work properly.

Signed-off-by: Radostin Stoyanov <rstoyanov1 at gmail.com>
---
 criu/cr-service.c | 13 ++++++++-----
 images/rpc.proto  |  1 +
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/criu/cr-service.c b/criu/cr-service.c
index 274ff218..16062736 100644
--- a/criu/cr-service.c
+++ b/criu/cr-service.c
@@ -260,20 +260,23 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
 	/* open images_dir */
 	sprintf(images_dir_path, "/proc/%d/fd/%d", ids.pid, req->images_dir_fd);
 
+	if (req->remote)
+		opts.remote = true;
+
 	if (req->parent_img)
 		opts.img_parent = req->parent_img;
 
-	if (open_image_dir(images_dir_path) < 0) {
-		pr_perror("Can't open images directory");
-		goto err;
-	}
-
 	/* get full path to images_dir to use in process title */
 	if (readlink(images_dir_path, images_dir, PATH_MAX) == -1) {
 		pr_perror("Can't readlink %s", images_dir_path);
 		goto err;
 	}
 
+	if (open_image_dir(images_dir) < 0) {
+		pr_perror("Can't open images directory");
+		goto err;
+	}
+
 	/* chdir to work dir */
 	if (req->has_work_dir_fd)
 		sprintf(work_dir_path, "/proc/%d/fd/%d", ids.pid, req->work_dir_fd);
diff --git a/images/rpc.proto b/images/rpc.proto
index 71f47d59..d69251bc 100644
--- a/images/rpc.proto
+++ b/images/rpc.proto
@@ -111,6 +111,7 @@ message criu_opts {
 	optional bool			lazy_pages		= 48;
 	optional int32			status_fd		= 49;
 	optional bool			orphan_pts_master	= 50;
+	optional bool			remote			= 51;
 }
 
 message criu_dump_resp {
-- 
2.14.3



More information about the CRIU mailing list