summaryrefslogtreecommitdiff
path: root/libpod/runtime_pod_linux.go
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-09-23 18:04:29 -0400
committerMatthew Heon <matthew.heon@gmail.com>2018-10-02 12:05:22 -0400
commit2c7f97d5a782d35efc195baf7a7ca9016ca05409 (patch)
tree2fe809fca125f2b1f425ba4a23e23a7ed10dbbae /libpod/runtime_pod_linux.go
parent89c5804fe0ca3ece7587adb5d5c974dbc494f721 (diff)
downloadpodman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.tar.gz
podman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.tar.bz2
podman-2c7f97d5a782d35efc195baf7a7ca9016ca05409.zip
Add ContainerStateExited and OCI delete() in cleanup()
To work better with Kata containers, we need to delete() from the OCI runtime as a part of cleanup, to ensure resources aren't retained longer than they need to be. To enable this, we need to add a new state to containers, ContainerStateExited. Containers transition from ContainerStateStopped to ContainerStateExited via cleanupRuntime which is invoked as part of cleanup(). A container in the Exited state is identical to Stopped, except it has been removed from the OCI runtime and thus will be handled differently when initializing the container. Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Diffstat (limited to 'libpod/runtime_pod_linux.go')
-rw-r--r--libpod/runtime_pod_linux.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/libpod/runtime_pod_linux.go b/libpod/runtime_pod_linux.go
index dd57007e0..974cd2b68 100644
--- a/libpod/runtime_pod_linux.go
+++ b/libpod/runtime_pod_linux.go
@@ -222,7 +222,7 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
// As we have guaranteed their dependencies are in the pod
for _, ctr := range ctrs {
// Clean up network namespace, cgroups, mounts
- if err := ctr.cleanup(); err != nil {
+ if err := ctr.cleanup(ctx); err != nil {
return err
}
@@ -233,7 +233,8 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
// Delete the container from runtime (only if we are not
// ContainerStateConfigured)
- if ctr.state.State != ContainerStateConfigured {
+ if ctr.state.State != ContainerStateConfigured &&
+ ctr.state.State != ContainerStateExited {
if err := ctr.delete(ctx); err != nil {
return err
}