From fd39196d98c765d8cd749b72cddbd05de7a7d8d8 Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Fri, 30 Jun 2017 14:02:20 +0300 Subject: [PATCH] files: Move unix sk into files image Reviewed-by: Kirill Tkhai Signed-off-by: Pavel Emelyanov Signed-off-by: Andrei Vagin --- criu/cr-restore.c | 2 +- criu/files.c | 3 +++ criu/include/image-desc.h | 2 +- criu/sk-unix.c | 14 ++++++++++++-- images/fdinfo.proto | 2 ++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/criu/cr-restore.c b/criu/cr-restore.c index fb826c2c2..e6e5ef6f2 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -257,7 +257,6 @@ static int crtools_prepare_shared(void) static struct collect_image_info *cinfos[] = { &pipe_cinfo, &fifo_cinfo, - &unix_sk_cinfo, &file_locks_cinfo, &pipe_data_cinfo, &fifo_data_cinfo, @@ -265,6 +264,7 @@ static struct collect_image_info *cinfos[] = { }; static struct collect_image_info *cinfos_files[] = { + &unix_sk_cinfo, &nsfile_cinfo, &packet_sk_cinfo, &netlink_sk_cinfo, diff --git a/criu/files.c b/criu/files.c index 7d3d266ad..d4fdfdea0 100644 --- a/criu/files.c +++ b/criu/files.c @@ -1725,6 +1725,9 @@ static int collect_one_file(void *o, ProtobufCMessage *base, struct cr_img *i) case FD_TYPES__EXT: ret = collect_one_file_entry(fe, fe->ext->id, &fe->ext->base, &ext_file_cinfo); break; + case FD_TYPES__UNIXSK: + ret = collect_one_file_entry(fe, fe->usk->id, &fe->usk->base, &unix_sk_cinfo); + break; } return ret; diff --git a/criu/include/image-desc.h b/criu/include/image-desc.h index 34dda641f..9d253ba1e 100644 --- a/criu/include/image-desc.h +++ b/criu/include/image-desc.h @@ -56,7 +56,6 @@ enum { _CR_FD_GLOB_FROM, CR_FD_FILES, CR_FD_SK_QUEUES, - CR_FD_UNIXSK, CR_FD_PIPES, CR_FD_PIPES_DATA, CR_FD_FIFO, @@ -106,6 +105,7 @@ enum { CR_FD_INOTIFY_FILE, CR_FD_FANOTIFY_FILE, CR_FD_EXT_FILES, + CR_FD_UNIXSK, CR_FD_AUTOFS, diff --git a/criu/sk-unix.c b/criu/sk-unix.c index cbecb2021..3551078ba 100644 --- a/criu/sk-unix.c +++ b/criu/sk-unix.c @@ -175,8 +175,13 @@ static bool unix_sk_exception_lookup_id(unsigned int ino) static int write_unix_entry(struct unix_sk_desc *sk) { int ret; + FileEntry fe = FILE_ENTRY__INIT; - ret = pb_write_one(img_from_set(glob_imgset, CR_FD_UNIXSK), sk->ue, PB_UNIX_SK); + fe.type = FD_TYPES__UNIXSK; + fe.id = sk->ue->id; + fe.usk = sk->ue; + + ret = pb_write_one(img_from_set(glob_imgset, CR_FD_FILES), &fe, PB_FILE); show_one_unix_img("Dumped", sk->ue); @@ -739,6 +744,7 @@ int fix_external_unix_sockets(void) pr_debug("Dumping external sockets\n"); list_for_each_entry(sk, &unix_sockets, list) { + FileEntry fe = FILE_ENTRY__INIT; UnixSkEntry e = UNIX_SK_ENTRY__INIT; FownEntry fown = FOWN_ENTRY__INIT; SkOptsEntry skopts = SK_OPTS_ENTRY__INIT; @@ -760,7 +766,11 @@ int fix_external_unix_sockets(void) e.fown = &fown; e.opts = &skopts; - if (pb_write_one(img_from_set(glob_imgset, CR_FD_UNIXSK), &e, PB_UNIX_SK)) + fe.type = FD_TYPES__UNIXSK; + fe.id = e.id; + fe.usk = &e; + + if (pb_write_one(img_from_set(glob_imgset, CR_FD_FILES), &fe, PB_FILE)) goto err; show_one_unix_img("Dumped extern", &e); diff --git a/images/fdinfo.proto b/images/fdinfo.proto index 4f7ee9537..5ef3972ff 100644 --- a/images/fdinfo.proto +++ b/images/fdinfo.proto @@ -12,6 +12,7 @@ import "tun.proto"; import "timerfd.proto"; import "fsnotify.proto"; import "ext-file.proto"; +import "sk-unix.proto"; enum fd_types { UND = 0; @@ -57,4 +58,5 @@ message file_entry { optional inotify_file_entry ify = 13; optional fanotify_file_entry ffy = 14; optional ext_file_entry ext = 15; + optional unix_sk_entry usk = 16; }