diff options
author | Adrian Reber <areber@redhat.com> | 2019-06-25 12:22:33 +0000 |
---|---|---|
committer | Adrian Reber <areber@redhat.com> | 2019-06-25 14:55:11 +0200 |
commit | 94e2a0cd63935708815bfaa3399fb57210d94065 (patch) | |
tree | 01781f4b1a8cdf0f7cc63fc8bf6df88e78ab9924 | |
parent | 21978c99088c04bcc847eb12f829876708c0b9e2 (diff) | |
download | podman-94e2a0cd63935708815bfaa3399fb57210d94065.tar.gz podman-94e2a0cd63935708815bfaa3399fb57210d94065.tar.bz2 podman-94e2a0cd63935708815bfaa3399fb57210d94065.zip |
Track if a container is restored from an exported checkpoint
Instead of only tracking that a container is restored from
a checkpoint locally in runtime_ctr.go this adds a flag to the
Container structure.
Upcoming patches to correctly label the root file-system mount-point
need also to know if a container is restored from a checkpoint.
Instead of passing a parameter around a lot of functions, this
adds that information to the Container structure.
Signed-off-by: Adrian Reber <areber@redhat.com>
-rw-r--r-- | libpod/container.go | 3 | ||||
-rw-r--r-- | libpod/runtime_ctr.go | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/libpod/container.go b/libpod/container.go index 464b233d1..3a0f60fd9 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -157,6 +157,9 @@ type Container struct { // being checkpointed. If requestedIP is set it will be used instead // of config.StaticIP. requestedIP net.IP + + // This is true if a container is restored from a checkpoint. + restoreFromCheckpoint bool } // ContainerState contains the current state of the container diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go index 271d4160d..a169d30f7 100644 --- a/libpod/runtime_ctr.go +++ b/libpod/runtime_ctr.go @@ -55,7 +55,7 @@ func (r *Runtime) RestoreContainer(ctx context.Context, rSpec *spec.Spec, config if err != nil { return nil, errors.Wrapf(err, "error initializing container variables") } - return r.setupContainer(ctx, ctr, true) + return r.setupContainer(ctx, ctr) } func (r *Runtime) initContainerVariables(rSpec *spec.Spec, config *ContainerConfig) (c *Container, err error) { @@ -71,6 +71,7 @@ func (r *Runtime) initContainerVariables(rSpec *spec.Spec, config *ContainerConf ctr.config.ShmSize = DefaultShmSize } else { // This is a restore from an imported checkpoint + ctr.restoreFromCheckpoint = true if err := JSONDeepCopy(config, ctr.config); err != nil { return nil, errors.Wrapf(err, "error copying container config for restore") } @@ -122,10 +123,10 @@ func (r *Runtime) newContainer(ctx context.Context, rSpec *spec.Spec, options .. return nil, errors.Wrapf(err, "error running container create option") } } - return r.setupContainer(ctx, ctr, false) + return r.setupContainer(ctx, ctr) } -func (r *Runtime) setupContainer(ctx context.Context, ctr *Container, restore bool) (c *Container, err error) { +func (r *Runtime) setupContainer(ctx context.Context, ctr *Container) (c *Container, err error) { // Allocate a lock for the container lock, err := r.lockManager.AllocateLock() if err != nil { @@ -204,7 +205,7 @@ func (r *Runtime) setupContainer(ctx context.Context, ctr *Container, restore bo return nil, errors.Wrapf(ErrInvalidArg, "unsupported CGroup manager: %s - cannot validate cgroup parent", r.config.CgroupManager) } - if restore { + if ctr.restoreFromCheckpoint { // Remove information about bind mount // for new container from imported checkpoint g := generate.Generator{Config: ctr.config.Spec} |