Merge pull request #5578 from opencontainers/dependabot/go_modules/github.com/checkpoint-restore/go-criu/v8-8.5.0

build(deps): bump github.com/checkpoint-restore/go-criu/v8 from 8.4.0 to 8.5.0
This commit is contained in:
Kir Kolyshkin authored and GitHub committed 2026-11-05 07:28:11 +00:00
commit 3bc423e4f5
14 files changed
+1903 -4610

No files matched your search

+2 -2
View File
@@ -4,7 +4,7 @@ go 1.26.0
require (
cyphar.com/go-pathrs v0.2.6
github.com/checkpoint-restore/go-criu/v8 v8.4.0
github.com/checkpoint-restore/go-criu/v8 v8.5.0
github.com/containerd/console v1.0.5
github.com/coreos/go-systemd/v22 v22.7.0
github.com/cyphar/filepath-securejoin v0.7.0
@@ -28,6 +28,6 @@ require (
)
require (
github.com/aperturerobotics/protobuf-go-lite v0.15.0 // indirect
github.com/aperturerobotics/protobuf-go-lite v0.19.0 // indirect
github.com/cilium/ebpf v0.17.3 // indirect
)
+4 -4
View File
@@ -1,9 +1,9 @@
cyphar.com/go-pathrs v0.2.6 h1:+btfBJ7qWKZo+TDJlDZ2tPqToKdN8QD4BAOqomueXZg=
cyphar.com/go-pathrs v0.2.6/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc=
github.com/aperturerobotics/protobuf-go-lite v0.15.0 h1:Ke9pkt5zO5iQf2q7iAYsXHlCDhGeQH0cvhCTIiiWUIg=
github.com/aperturerobotics/protobuf-go-lite v0.15.0/go.mod h1:3Ay/E7iaw2KWLirK3+dDdNJZHK0hu8Y1/kKeYeUa+8s=
github.com/checkpoint-restore/go-criu/v8 v8.4.0 h1:w6WDxjde4pvXYTIBuj6dsWsaPorKwSWuCk/qSKTO3Jw=
github.com/checkpoint-restore/go-criu/v8 v8.4.0/go.mod h1:SK5UexowK0P99gCcJJOavgVVlUWydGUfXSQUf1qDkHU=
github.com/aperturerobotics/protobuf-go-lite v0.19.0 h1:7Veh1XY7pkswacItBnTR+skvPyNIFdOPg0tb3X0Yd/E=
github.com/aperturerobotics/protobuf-go-lite v0.19.0/go.mod h1:3Ay/E7iaw2KWLirK3+dDdNJZHK0hu8Y1/kKeYeUa+8s=
github.com/checkpoint-restore/go-criu/v8 v8.5.0 h1:IGAXRC5ypuJn5aNn0xaZ4p8Okjirp93ZblFQDRmn6o0=
github.com/checkpoint-restore/go-criu/v8 v8.5.0/go.mod h1:ME5o2M3ANgdU29IyoU9k3sQjkX5nEc0kNH6xcJH5lm8=
github.com/cilium/ebpf v0.17.3 h1:FnP4r16PWYSE4ux6zN+//jMcW4nMVRvuTLVTvCjyyjg=
github.com/cilium/ebpf v0.17.3/go.mod h1:G5EDHij8yiLzaqn0WjyfJHvRa+3aDlReIaLVRMvOyJk=
github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc=
+35 -3
View File
@@ -1,11 +1,9 @@
# protobuf-go-lite
[![GoDoc Widget]][GoDoc] [![Go Report Card Widget]][Go Report Card] [![DeepWiki Widget]][DeepWiki]
[![GoDoc Widget]][GoDoc] [![DeepWiki Widget]][DeepWiki]
[GoDoc]: https://godoc.org/github.com/aperturerobotics/protobuf-go-lite
[GoDoc Widget]: https://godoc.org/github.com/aperturerobotics/protobuf-go-lite?status.svg
[Go Report Card Widget]: https://goreportcard.com/badge/github.com/aperturerobotics/protobuf-go-lite
[Go Report Card]: https://goreportcard.com/report/github.com/aperturerobotics/protobuf-go-lite
[DeepWiki Widget]: https://img.shields.io/badge/DeepWiki-aperturerobotics%2Fprotobuf--go--lite-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==
[DeepWiki]: https://deepwiki.com/aperturerobotics/protobuf-go-lite
@@ -88,6 +86,9 @@ Summary of the packages provided by this module:
* [`cmd/protoc-gen-go-lite`](https://pkg.go.dev/github.com/aperturerobotics/protobuf-go-lite/cmd/protoc-gen-go-lite):
The `protoc-gen-go-lite` binary is a protoc plugin to generate a Go protocol
buffer package.
* [`registry`](https://pkg.go.dev/github.com/aperturerobotics/protobuf-go-lite/registry):
Package `registry` indexes generated message constructors and custom
message options without runtime reflection.
## Usage
@@ -128,6 +129,37 @@ Both modes are selected at generation time and produce normal Go packages for
callers. They do not add a reflection registry, descriptor builder, struct tag
interpreter, or runtime type-metadata dependency to generated fast paths.
### Opt-in message registry
Generated packages do not register message types by default. Add `registry=true`
to `--go-lite_opt` when an application must discover linked message types at
runtime:
```
protoc --go-lite_out=. --go-lite_opt=features=all,registry=true example.proto
```
The registry requires the `size`, `marshal`, and `unmarshal` features. Each
generated package registers constructors by fully qualified protobuf name and
`google.protobuf.Any` type URL during package initialization. The generator
also flattens custom message options into fully qualified scalar paths:
```go
registry.Range(func(entry registry.Entry) bool {
tenant, tenantOK := entry.Option("annotations.msg_opts.tenant")
table, tableOK := entry.Option("annotations.msg_opts.table")
if tenantOK && tableOK {
messagesByKey[tenant+"."+table] = entry
}
return true
})
```
Repeated option values retain declaration order. Message-valued options use
dot-separated field paths, and enum values use their protobuf names. The
registry copies option metadata on registration and returns sorted snapshots to
callers.
### Generated output
Generated `.pb.go` files are checked in for this repository's fixtures and
+24
View File
@@ -0,0 +1,24 @@
{
"lockfileVersion": 2,
"configVersion": 1,
"workspaces": {
"": {
"devDependencies": {
"@aptre/protobuf-es-lite": "1.1.1",
},
},
},
"packages": {
"@aptre/protobuf-es-lite": ["@aptre/protobuf-es-lite@1.1.1", "", { "dependencies": { "@typescript/vfs": "^1.5.0", "lz-string": "^1.5.0", "typescript": "5.9.3" }, "bin": { "protoc-gen-es-lite": "bin/protoc-gen-es-lite" } }, "sha512-4+ws50UhTuAovafwFnJ+0I41HRWEfgLajPfID1v2UUlczxaLxDK117bG4QLaxlDxm8z4QxD5op/sPB1BzWC4Ug=="],
"@typescript/vfs": ["@typescript/vfs@1.6.4", "", { "dependencies": { "debug": "^4.4.3" }, "peerDependencies": { "typescript": "*" } }, "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ=="],
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
"lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"private": true,
"aptre": {
"languages": ["go", "ts"],
"notes": "descriptorpb, apipb, and pluginpb are excluded until protobuf-es-lite exports descriptor support."
},
"devDependencies": {
"@aptre/protobuf-es-lite": "1.1.1"
}
}
@@ -0,0 +1,2 @@
vendor/github.com/pierrec/lz4/v4/LICENSE whitespace=-blank-at-eof
vendor/github.com/pierrec/lz4/v4/compressing_reader.go whitespace=-blank-at-eol
@@ -3,6 +3,8 @@ test/test.coverage
test/piggie/piggie
test/phaul/phaul
test/phaul/phaul.coverage
test/inheritfd/inheritfd
test/inheritfd/inheritfd.coverage
test/loop/loop
test/mmapper/mmapper
test/crit/crit-test
+1
View File
@@ -1,4 +1,5 @@
Adrian Reber <areber@redhat.com>
Kouame Behouba Manasse <behouba@gmail.com>
Kir Kolyshkin <kolyshkin@gmail.com>
Prajwal S N <prajwalnadig21@gmail.com>
Radostin Stoyanov <rstoyanov@fedoraproject.org>
+1
View File
@@ -13,6 +13,7 @@ build: rpc/rpc.pb.go stats/stats.pb.go
$(MAKE) -C crit bin/crit
test: build
$(GO) test -v .
$(MAKE) -C test
coverage:
+73 -1
View File
@@ -41,13 +41,84 @@ or to just check if at least a certain CRIU version is installed:
result, err := c.IsCriuAtLeast(31100)
```
### Plugin options
Set `rpc.CriuOpts.PluginOptions` to pass options to CRIU plugins for each
request. Each entry uses `PLUGIN.NAME[=VALUE]` syntax, without leading `--`
or the CLI's `--plugin-option=` prefix. For example, add CUDA options to
otherwise configured dump options:
```go
opts.PluginOptions = []string{
"cuda_plugin.backend=cuda-checkpoint",
"cuda_plugin.timeout=600",
}
if err := c.Dump(opts, nil); err != nil {
return err
}
```
For restore, set options on the restore request:
```go
restoreOpts.PluginOptions = []string{
"cuda_plugin.backend=driver-api",
"cuda_plugin.device-map=auto",
}
if err := c.Restore(restoreOpts, nil); err != nil {
return err
}
```
CUDA supports these options in CRIU builds that provide the corresponding
plugin functionality:
- `cuda_plugin.backend`: `auto` (the default), `driver-api`, or
`cuda-checkpoint`.
- `cuda_plugin.timeout`: a nonnegative number of seconds, with `0` (the
default) meaning unlimited. This limits CLI helper invocations; it does
not impose a deadline on in-process Driver API calls. It is separate from
`CriuOpts.Timeout`, which controls task freezing and the native CUDA lock
timeout.
- `cuda_plugin.device-map`: `auto` or explicit mappings such as `0=1,1=0`.
This option is valid only for restore.
The slice preserves option order, including repeated keys. CRIU validates
option syntax, and each plugin interprets its recognized settings. Options
belong to the supplied `CriuOpts`; use separate options for dump and restore,
or replace the slice when reusing an options object.
The CRIU executable must support the `plugin_options` RPC field and have the
required plugin installed and available. Older CRIU builds may silently
ignore the unknown protobuf field, so request success alone does not prove
that the options were applied. `FeatureCheck` currently has no capability
flag for plugin options. Verify the CRIU build and plugin support used by
your application.
## CRIT
The `crit` package provides bindings to decode, encode, and manipulate
The `crit` package provides bindings to decode, encode, compress, and decompress
CRIU image files natively within Go. It also provides a CLI tool similar
to the original CRIT Python tool. To get started with this, see the docs
at [CRIT (Go library)](https://criu.org/CRIT_%28Go_library%29).
Compression commands process one checkpoint directory at a time. For an
incremental chain, pass its newest checkpoint: the directory that no other
checkpoint uses as a parent. Compressing an older layer is unsupported because
the command cannot update newer checkpoints that depend on it. A standalone
checkpoint can be compressed normally with `crit compress DIR`.
Compression requires a full checkpoint with `mm-<pid>.img` metadata to identify
mappings that must remain raw. Pre-dumps are unsupported.
By default, every replaced image is kept as a `.bak` file next to it. Remove
those backups before transforming the same directory again, or pass
`--in-place` to skip creating them.
Reading compressed checkpoint images is supported on every platform on which
CRIT builds. The `crit compress` and `crit decompress` transforms preserve
Linux filesystem metadata and transaction guarantees and are therefore
available only on Linux; on other systems their Go APIs return
`errors.ErrUnsupported`.
## Releases
The first go-criu release was 3.11 based on CRIU 3.11. The initial plan
@@ -62,6 +133,7 @@ The following table shows the relation between go-criu and criu versions:
| Major version | Latest release | CRIU version |
| -------------- | -------------- | ------------ |
| v8 | 8.5.0 | 4.3 |
| v8 | 8.4.0 | 4.2 |
| v7 | 7.2.0 | 3.19 |
| v7 | 7.0.0 | 3.18 |
+6 -1
View File
@@ -41,5 +41,10 @@ func (c *Criu) FeatureCheck(features *rpc.CriuFeatures) (*rpc.CriuFeatures, erro
return nil, errors.New("unexpected CRIU RPC response")
}
return features, nil
checkedFeatures := resp.GetFeatures()
if checkedFeatures == nil {
return nil, errors.New("CRIU RPC response does not contain features")
}
return checkedFeatures, nil
}
File diff suppressed because it is too large. Load diff
+21
View File
@@ -151,6 +151,25 @@ message criu_opts {
optional bool display_stats = 70;
optional bool log_to_stderr = 71;
optional criu_image_io_mode image_io_mode = 72 [default = IMAGE_IO_WRITEBACK];
/*
* Memory page compression mode (enum compress_mode):
* 0 = off, 1 = block. Default 0.
*/
optional uint32 compress = 73;
optional uint32 compress_acceleration = 74;
optional uint32 compress_block_size = 75;
/*
* Worker concurrency for LZ4 decoding and eligible large zero fills.
* 0 selects automatic concurrency; 1, the default, keeps LZ4 decoding
* serial and disables zero-fill workers; values above 1 limit aggregate
* worker concurrency. Active concurrency also depends on available CPUs,
* useful batch work, and the restore-wide CPU budget. Valid range: 0
* through 1024. Restore-time only.
*/
optional uint32 decompress_threads = 76 [default = 1];
/* Plugin-owned namespaced options in PLUGIN.NAME[=VALUE] form. */
repeated string plugin_options = 77;
optional bool stream = 78;
/* optional bool check_mounts = 128; */
}
@@ -198,6 +217,8 @@ message criu_features {
optional bool mem_track = 1;
optional bool lazy_pages = 2;
optional bool pidfd_store = 3;
/* Memory page compression support is available in this CRIU build. */
optional bool mem_compression = 4;
}
/*
+3 -3
View File
@@ -4,11 +4,11 @@ cyphar.com/go-pathrs
cyphar.com/go-pathrs/internal/fdutils
cyphar.com/go-pathrs/internal/libpathrs
cyphar.com/go-pathrs/procfs
# github.com/aperturerobotics/protobuf-go-lite v0.15.0
# github.com/aperturerobotics/protobuf-go-lite v0.19.0
## explicit; go 1.23
github.com/aperturerobotics/protobuf-go-lite
# github.com/checkpoint-restore/go-criu/v8 v8.4.0
## explicit; go 1.25.0
# github.com/checkpoint-restore/go-criu/v8 v8.5.0
## explicit; go 1.26.0
github.com/checkpoint-restore/go-criu/v8
github.com/checkpoint-restore/go-criu/v8/internal/proto
github.com/checkpoint-restore/go-criu/v8/rpc