mirror of
https://github.com/opencontainers/runc.git
synced 2025-09-27 03:46:19 +08:00
criu: ignore cgroup early in prepareCriuRestoreMounts
It makes sense to ignore cgroup mounts much early in the code,
saving some time on unnecessary operations.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
(cherry picked from commit b8aa5481db
)
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
@@ -527,19 +527,8 @@ func (c *Container) restoreNetwork(req *criurpc.CriuReq, criuOpts *CriuOpts) {
|
||||
// restore using CRIU. This function is inspired from the code in
|
||||
// rootfs_linux.go.
|
||||
func (c *Container) makeCriuRestoreMountpoints(m *configs.Mount) error {
|
||||
if m.Device == "cgroup" {
|
||||
// No mount point(s) need to be created:
|
||||
//
|
||||
// * for v1, mount points are saved by CRIU because
|
||||
// /sys/fs/cgroup is a tmpfs mount
|
||||
//
|
||||
// * for v2, /sys/fs/cgroup is a real mount, but
|
||||
// the mountpoint appears as soon as /sys is mounted
|
||||
return nil
|
||||
}
|
||||
// TODO: pass srcFD? Not sure if criu is impacted by issue #2484.
|
||||
me := mountEntry{Mount: m}
|
||||
// For all other filesystems, just make the target.
|
||||
if _, err := createMountpoint(c.config.Rootfs, me); err != nil {
|
||||
return fmt.Errorf("create criu restore mountpoint for %s mount: %w", me.Destination, err)
|
||||
}
|
||||
@@ -589,6 +578,14 @@ func (c *Container) prepareCriuRestoreMounts(mounts []*configs.Mount) error {
|
||||
}()
|
||||
// Now go through all mounts and create the required mountpoints.
|
||||
for _, m := range mounts {
|
||||
// No cgroup mount point(s) need to be created:
|
||||
// * for v1, mount points are saved by CRIU because
|
||||
// /sys/fs/cgroup is a tmpfs mount;
|
||||
// * for v2, /sys/fs/cgroup is a real mount, but
|
||||
// the mountpoint appears as soon as /sys is mounted.
|
||||
if m.Device == "cgroup" {
|
||||
continue
|
||||
}
|
||||
// If the mountpoint is on a tmpfs, skip it as CRIU will
|
||||
// restore the complete tmpfs content from its checkpoint.
|
||||
if isPathInPrefixList(m.Destination, tmpfs) {
|
||||
|
Reference in New Issue
Block a user