From bb825d89c82db2c6bd4c54af627ed65322f6beda Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Fri, 30 Jun 2017 14:02:54 +0300 Subject: [PATCH] files: Move pipes 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/pipes.c | 7 ++++++- images/fdinfo.proto | 2 ++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/criu/cr-restore.c b/criu/cr-restore.c index e173dacaa..737a376b3 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -255,7 +255,6 @@ static int crtools_prepare_shared(void) */ static struct collect_image_info *cinfos[] = { - &pipe_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, &fifo_cinfo, + &pipe_cinfo, &nsfile_cinfo, &packet_sk_cinfo, &netlink_sk_cinfo, diff --git a/criu/files.c b/criu/files.c index edcd363b2..088cca136 100644 --- a/criu/files.c +++ b/criu/files.c @@ -1731,6 +1731,9 @@ static int collect_one_file(void *o, ProtobufCMessage *base, struct cr_img *i) case FD_TYPES__FIFO: ret = collect_one_file_entry(fe, fe->fifo->id, &fe->fifo->base, &fifo_cinfo); break; + case FD_TYPES__PIPE: + ret = collect_one_file_entry(fe, fe->pipe->id, &fe->pipe->base, &pipe_cinfo); + break; } return ret; diff --git a/criu/include/image-desc.h b/criu/include/image-desc.h index bebee03c1..520f3c360 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_PIPES, CR_FD_PIPES_DATA, CR_FD_FIFO_DATA, CR_FD_TTY_FILES, @@ -106,6 +105,7 @@ enum { CR_FD_EXT_FILES, CR_FD_UNIXSK, CR_FD_FIFO, + CR_FD_PIPES, CR_FD_AUTOFS, diff --git a/criu/pipes.c b/criu/pipes.c index cb150f3d7..f1a66bf5d 100644 --- a/criu/pipes.c +++ b/criu/pipes.c @@ -487,6 +487,7 @@ static struct pipe_data_dump pd_pipes = { .img_type = CR_FD_PIPES_DATA, }; static int dump_one_pipe(int lfd, u32 id, const struct fd_parms *p) { + FileEntry fe = FILE_ENTRY__INIT; PipeEntry pe = PIPE_ENTRY__INIT; pr_info("Dumping pipe %d with id %#x pipe_id %#x\n", @@ -502,7 +503,11 @@ static int dump_one_pipe(int lfd, u32 id, const struct fd_parms *p) pe.flags = p->flags & ~O_DIRECT; pe.fown = (FownEntry *)&p->fown; - if (pb_write_one(img_from_set(glob_imgset, CR_FD_PIPES), &pe, PB_PIPE)) + fe.type = FD_TYPES__PIPE; + fe.id = pe.id; + fe.pipe = &pe; + + if (pb_write_one(img_from_set(glob_imgset, CR_FD_FILES), &fe, PB_FILE)) return -1; return dump_one_pipe_data(&pd_pipes, lfd, p); diff --git a/images/fdinfo.proto b/images/fdinfo.proto index 8cbfd5d7f..37318c50d 100644 --- a/images/fdinfo.proto +++ b/images/fdinfo.proto @@ -14,6 +14,7 @@ import "fsnotify.proto"; import "ext-file.proto"; import "sk-unix.proto"; import "fifo.proto"; +import "pipe.proto"; enum fd_types { UND = 0; @@ -61,4 +62,5 @@ message file_entry { optional ext_file_entry ext = 15; optional unix_sk_entry usk = 16; optional fifo_entry fifo = 17; + optional pipe_entry pipe = 18; }