From ea0ed51e2101448874215c0de945197a1cafdea4 Mon Sep 17 00:00:00 2001 From: Kohei Tokunaga Date: Wed, 1 Jul 2026 00:13:02 +0000 Subject: [PATCH] shim: allow specifying runc's --parent-path during checkpointing Signed-off-by: Kohei Tokunaga --- api/next.txtpb | 227 +++++++++++------- api/types/runc/options/oci.pb.go | 29 ++- api/types/runc/options/oci.proto | 2 + cmd/containerd-shim-runc-v2/process/init.go | 1 + cmd/containerd-shim-runc-v2/process/types.go | 1 + cmd/containerd-shim-runc-v2/runc/container.go | 1 + .../api/types/runc/options/oci.pb.go | 29 ++- .../api/types/runc/options/oci.proto | 2 + 8 files changed, 184 insertions(+), 108 deletions(-) diff --git a/api/next.txtpb b/api/next.txtpb index cfcc7be7094c9..64df4fd334018 100644 --- a/api/next.txtpb +++ b/api/next.txtpb @@ -25861,7 +25861,7 @@ file: { path: 0 span: 116 span: 2 - span: 22 + span: 21 } location: { path: 5 @@ -25880,8 +25880,8 @@ file: { path: 0 path: 2 span: 116 + span: 19 span: 20 - span: 21 } location: { path: 5 @@ -25948,7 +25948,7 @@ file: { path: 3 span: 119 span: 2 - span: 22 + span: 21 } location: { path: 5 @@ -25967,8 +25967,8 @@ file: { path: 3 path: 2 span: 119 + span: 19 span: 20 - span: 21 } location: { path: 5 @@ -67581,6 +67581,13 @@ file: { type: TYPE_STRING json_name: "workPath" } + field: { + name: "parent_path" + number: 10 + label: LABEL_OPTIONAL + type: TYPE_STRING + json_name: "parentPath" + } } message_type: { name: "ProcessDetails" @@ -67599,7 +67606,7 @@ file: { location: { span: 0 span: 0 - span: 62 + span: 64 span: 1 } location: { @@ -68208,7 +68215,7 @@ file: { path: 1 span: 38 span: 0 - span: 57 + span: 59 span: 1 } location: { @@ -68591,17 +68598,57 @@ file: { } location: { path: 4 + path: 1 path: 2 - span: 59 + path: 9 + span: 58 + span: 2 + span: 26 + leading_comments: " parent image path\n" + } + location: { + path: 4 + path: 1 + path: 2 + path: 9 + path: 5 + span: 58 + span: 2 + span: 8 + } + location: { + path: 4 + path: 1 + path: 2 + path: 9 + path: 1 + span: 58 + span: 9 + span: 20 + } + location: { + path: 4 + path: 1 + path: 2 + path: 9 + path: 3 + span: 58 + span: 23 + span: 25 + } + location: { + path: 4 + path: 2 + span: 61 span: 0 - span: 62 + span: 64 span: 1 } location: { path: 4 path: 2 path: 1 - span: 59 + span: 61 span: 8 span: 22 } @@ -68610,7 +68657,7 @@ file: { path: 2 path: 2 path: 0 - span: 61 + span: 63 span: 2 span: 21 leading_comments: " exec process id if the process is managed by a shim\n" @@ -68621,7 +68668,7 @@ file: { path: 2 path: 0 path: 5 - span: 61 + span: 63 span: 2 span: 8 } @@ -68631,7 +68678,7 @@ file: { path: 2 path: 0 path: 1 - span: 61 + span: 63 span: 9 span: 16 } @@ -68641,7 +68688,7 @@ file: { path: 2 path: 0 path: 3 - span: 61 + span: 63 span: 19 span: 20 } @@ -68913,7 +68960,7 @@ file: { location: { span: 15 span: 0 - span: 38 + span: 37 span: 1 } location: { @@ -68925,29 +68972,29 @@ file: { } location: { path: 2 - span: 18 + span: 17 span: 0 span: 34 } location: { path: 8 - span: 20 + span: 19 span: 0 span: 74 } location: { path: 8 path: 11 - span: 20 + span: 19 span: 0 span: 74 } location: { path: 4 path: 0 - span: 25 + span: 24 span: 0 - span: 38 + span: 37 span: 1 leading_comments: " ContainerPath represents a path within an active container's\n filesystem. It acts as either a source or destination in a transfer\n operation, identifying the container and path for archive operations.\n" } @@ -68955,7 +69002,7 @@ file: { path: 4 path: 0 path: 1 - span: 25 + span: 24 span: 8 span: 21 } @@ -68964,9 +69011,9 @@ file: { path: 0 path: 2 path: 0 + span: 25 + span: 2 span: 26 - span: 8 - span: 32 } location: { path: 4 @@ -68974,9 +69021,9 @@ file: { path: 2 path: 0 path: 5 - span: 26 + span: 25 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -68984,9 +69031,9 @@ file: { path: 2 path: 0 path: 1 - span: 26 - span: 15 - span: 27 + span: 25 + span: 9 + span: 21 } location: { path: 4 @@ -68994,18 +69041,18 @@ file: { path: 2 path: 0 path: 3 - span: 26 - span: 30 - span: 31 + span: 25 + span: 24 + span: 25 } location: { path: 4 path: 0 path: 2 path: 1 - span: 27 - span: 8 - span: 24 + span: 26 + span: 2 + span: 18 } location: { path: 4 @@ -69013,9 +69060,9 @@ file: { path: 2 path: 1 path: 5 - span: 27 + span: 26 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -69023,9 +69070,9 @@ file: { path: 2 path: 1 path: 1 - span: 27 - span: 15 - span: 19 + span: 26 + span: 9 + span: 13 } location: { path: 4 @@ -69033,18 +69080,18 @@ file: { path: 2 path: 1 path: 3 - span: 27 - span: 22 - span: 23 + span: 26 + span: 16 + span: 17 } location: { path: 4 path: 0 path: 2 path: 2 - span: 32 - span: 8 - span: 25 + span: 31 + span: 2 + span: 19 leading_comments: " When true and path is a directory, return only the directory entry\n itself without walking into its contents. This is useful for\n stat-like operations where only the directory's metadata is needed.\n" } location: { @@ -69053,9 +69100,9 @@ file: { path: 2 path: 2 path: 5 - span: 32 - span: 8 - span: 12 + span: 31 + span: 2 + span: 6 } location: { path: 4 @@ -69063,9 +69110,9 @@ file: { path: 2 path: 2 path: 1 - span: 32 - span: 13 - span: 20 + span: 31 + span: 7 + span: 14 } location: { path: 4 @@ -69073,18 +69120,18 @@ file: { path: 2 path: 2 path: 3 - span: 32 - span: 23 - span: 24 + span: 31 + span: 17 + span: 18 } location: { path: 4 path: 0 path: 2 path: 3 - span: 37 - span: 8 span: 36 + span: 2 + span: 30 leading_comments: " When true, preserve the UID/GID from tar headers when extracting\n files. When false, extracted files are owned by the extracting\n process.\n" } location: { @@ -69093,9 +69140,9 @@ file: { path: 2 path: 3 path: 5 - span: 37 - span: 8 - span: 12 + span: 36 + span: 2 + span: 6 } location: { path: 4 @@ -69103,9 +69150,9 @@ file: { path: 2 path: 3 path: 1 - span: 37 - span: 13 - span: 31 + span: 36 + span: 7 + span: 25 } location: { path: 4 @@ -69113,9 +69160,9 @@ file: { path: 2 path: 3 path: 3 - span: 37 - span: 34 - span: 35 + span: 36 + span: 28 + span: 29 } } syntax: "proto3" @@ -72262,8 +72309,8 @@ file: { path: 2 path: 0 span: 34 - span: 8 - span: 26 + span: 2 + span: 20 } location: { path: 4 @@ -72272,8 +72319,8 @@ file: { path: 0 path: 5 span: 34 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -72282,8 +72329,8 @@ file: { path: 0 path: 1 span: 34 + span: 9 span: 15 - span: 21 } location: { path: 4 @@ -72292,8 +72339,8 @@ file: { path: 0 path: 3 span: 34 - span: 24 - span: 25 + span: 18 + span: 19 } location: { path: 4 @@ -72301,8 +72348,8 @@ file: { path: 2 path: 1 span: 35 - span: 8 - span: 30 + span: 2 + span: 24 } location: { path: 4 @@ -72311,8 +72358,8 @@ file: { path: 1 path: 5 span: 35 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -72321,8 +72368,8 @@ file: { path: 1 path: 1 span: 35 - span: 15 - span: 25 + span: 9 + span: 19 } location: { path: 4 @@ -72331,8 +72378,8 @@ file: { path: 1 path: 3 span: 35 - span: 28 - span: 29 + span: 22 + span: 23 } location: { path: 4 @@ -72357,8 +72404,8 @@ file: { path: 2 path: 0 span: 42 - span: 8 - span: 26 + span: 2 + span: 20 } location: { path: 4 @@ -72367,8 +72414,8 @@ file: { path: 0 path: 5 span: 42 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -72377,8 +72424,8 @@ file: { path: 0 path: 1 span: 42 + span: 9 span: 15 - span: 21 } location: { path: 4 @@ -72387,8 +72434,8 @@ file: { path: 0 path: 3 span: 42 - span: 24 - span: 25 + span: 18 + span: 19 } location: { path: 4 @@ -72396,8 +72443,8 @@ file: { path: 2 path: 1 span: 43 - span: 8 - span: 30 + span: 2 + span: 24 } location: { path: 4 @@ -72406,8 +72453,8 @@ file: { path: 1 path: 5 span: 43 + span: 2 span: 8 - span: 14 } location: { path: 4 @@ -72416,8 +72463,8 @@ file: { path: 1 path: 1 span: 43 - span: 15 - span: 25 + span: 9 + span: 19 } location: { path: 4 @@ -72426,8 +72473,8 @@ file: { path: 1 path: 3 span: 43 - span: 28 - span: 29 + span: 22 + span: 23 } } syntax: "proto3" diff --git a/api/types/runc/options/oci.pb.go b/api/types/runc/options/oci.pb.go index c571610affd8e..bc8e354ca7abe 100644 --- a/api/types/runc/options/oci.pb.go +++ b/api/types/runc/options/oci.pb.go @@ -197,6 +197,8 @@ type CheckpointOptions struct { ImagePath string `protobuf:"bytes,8,opt,name=image_path,json=imagePath,proto3" json:"image_path,omitempty"` // checkpoint work path WorkPath string `protobuf:"bytes,9,opt,name=work_path,json=workPath,proto3" json:"work_path,omitempty"` + // parent image path + ParentPath string `protobuf:"bytes,10,opt,name=parent_path,json=parentPath,proto3" json:"parent_path,omitempty"` } func (x *CheckpointOptions) Reset() { @@ -294,6 +296,13 @@ func (x *CheckpointOptions) GetWorkPath() string { return "" } +func (x *CheckpointOptions) GetParentPath() string { + if x != nil { + return x.ParentPath + } + return "" +} + type ProcessDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -375,7 +384,7 @@ var file_types_runc_options_oci_proto_rawDesc = []byte{ 0x2c, 0x0a, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, - 0x08, 0x10, 0x09, 0x22, 0xbb, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x08, 0x10, 0x09, 0x22, 0xdc, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x78, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, @@ -395,14 +404,16 @@ var file_types_runc_options_oci_proto_rawDesc = []byte{ 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x74, - 0x68, 0x22, 0x29, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x49, 0x64, 0x42, 0x41, 0x5a, 0x3f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x63, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, + 0x74, 0x68, 0x22, 0x29, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x49, 0x64, 0x42, 0x41, 0x5a, + 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x63, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/types/runc/options/oci.proto b/api/types/runc/options/oci.proto index 61c86c8726edc..462aa7f46855b 100644 --- a/api/types/runc/options/oci.proto +++ b/api/types/runc/options/oci.proto @@ -55,6 +55,8 @@ message CheckpointOptions { string image_path = 8; // checkpoint work path string work_path = 9; + // parent image path + string parent_path = 10; } message ProcessDetails { diff --git a/cmd/containerd-shim-runc-v2/process/init.go b/cmd/containerd-shim-runc-v2/process/init.go index 6e2f24e1a9bde..45b5c5877c8e6 100644 --- a/cmd/containerd-shim-runc-v2/process/init.go +++ b/cmd/containerd-shim-runc-v2/process/init.go @@ -453,6 +453,7 @@ func (p *Init) checkpoint(ctx context.Context, r *CheckpointConfig) error { AllowTerminal: r.AllowTerminal, FileLocks: r.FileLocks, EmptyNamespaces: r.EmptyNamespaces, + ParentPath: r.ParentPath, }, actions...); err != nil { dumpLog := filepath.Join(p.Bundle, "criu-dump.log") if cerr := copyFile(dumpLog, filepath.Join(work, "dump.log")); cerr != nil { diff --git a/cmd/containerd-shim-runc-v2/process/types.go b/cmd/containerd-shim-runc-v2/process/types.go index 2d9bd5f6be4d3..f43fe24324aac 100644 --- a/cmd/containerd-shim-runc-v2/process/types.go +++ b/cmd/containerd-shim-runc-v2/process/types.go @@ -63,4 +63,5 @@ type CheckpointConfig struct { AllowTerminal bool FileLocks bool EmptyNamespaces []string + ParentPath string } diff --git a/cmd/containerd-shim-runc-v2/runc/container.go b/cmd/containerd-shim-runc-v2/runc/container.go index 2c1a60983dcec..cd462f408442d 100644 --- a/cmd/containerd-shim-runc-v2/runc/container.go +++ b/cmd/containerd-shim-runc-v2/runc/container.go @@ -454,6 +454,7 @@ func (c *Container) Checkpoint(ctx context.Context, r *task.CheckpointTaskReques FileLocks: opts.FileLocks, EmptyNamespaces: opts.EmptyNamespaces, WorkDir: opts.WorkPath, + ParentPath: opts.ParentPath, }) } diff --git a/vendor/github.com/containerd/containerd/api/types/runc/options/oci.pb.go b/vendor/github.com/containerd/containerd/api/types/runc/options/oci.pb.go index c571610affd8e..bc8e354ca7abe 100644 --- a/vendor/github.com/containerd/containerd/api/types/runc/options/oci.pb.go +++ b/vendor/github.com/containerd/containerd/api/types/runc/options/oci.pb.go @@ -197,6 +197,8 @@ type CheckpointOptions struct { ImagePath string `protobuf:"bytes,8,opt,name=image_path,json=imagePath,proto3" json:"image_path,omitempty"` // checkpoint work path WorkPath string `protobuf:"bytes,9,opt,name=work_path,json=workPath,proto3" json:"work_path,omitempty"` + // parent image path + ParentPath string `protobuf:"bytes,10,opt,name=parent_path,json=parentPath,proto3" json:"parent_path,omitempty"` } func (x *CheckpointOptions) Reset() { @@ -294,6 +296,13 @@ func (x *CheckpointOptions) GetWorkPath() string { return "" } +func (x *CheckpointOptions) GetParentPath() string { + if x != nil { + return x.ParentPath + } + return "" +} + type ProcessDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -375,7 +384,7 @@ var file_types_runc_options_oci_proto_rawDesc = []byte{ 0x2c, 0x0a, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, - 0x08, 0x10, 0x09, 0x22, 0xbb, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x08, 0x10, 0x09, 0x22, 0xdc, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x78, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, @@ -395,14 +404,16 @@ var file_types_runc_options_oci_proto_rawDesc = []byte{ 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x74, - 0x68, 0x22, 0x29, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x49, 0x64, 0x42, 0x41, 0x5a, 0x3f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x63, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, + 0x74, 0x68, 0x22, 0x29, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x49, 0x64, 0x42, 0x41, 0x5a, + 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x63, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/github.com/containerd/containerd/api/types/runc/options/oci.proto b/vendor/github.com/containerd/containerd/api/types/runc/options/oci.proto index 61c86c8726edc..462aa7f46855b 100644 --- a/vendor/github.com/containerd/containerd/api/types/runc/options/oci.proto +++ b/vendor/github.com/containerd/containerd/api/types/runc/options/oci.proto @@ -55,6 +55,8 @@ message CheckpointOptions { string image_path = 8; // checkpoint work path string work_path = 9; + // parent image path + string parent_path = 10; } message ProcessDetails {