diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-01-04 10:41:05 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-04 10:41:05 -0800 |
commit | bf5f779331870d31863c486619daae3fcea458eb (patch) | |
tree | aafcacc17883a8df4734bed0aadbaca59a9882fe /libpod/runtime_pod_linux.go | |
parent | 6868b5aa1444404113bc6a4582203fbbf89490c2 (diff) | |
parent | 56c5c89408f89fc3733692786d66eb44133b2c59 (diff) | |
download | podman-bf5f779331870d31863c486619daae3fcea458eb.tar.gz podman-bf5f779331870d31863c486619daae3fcea458eb.tar.bz2 podman-bf5f779331870d31863c486619daae3fcea458eb.zip |
Merge pull request #1235 from mheon/shm_locking
SHM locking for Libpod
Diffstat (limited to 'libpod/runtime_pod_linux.go')
-rw-r--r-- | libpod/runtime_pod_linux.go | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libpod/runtime_pod_linux.go b/libpod/runtime_pod_linux.go index 3d6fad52f..c6d497c0c 100644 --- a/libpod/runtime_pod_linux.go +++ b/libpod/runtime_pod_linux.go @@ -23,7 +23,7 @@ func (r *Runtime) NewPod(ctx context.Context, options ...PodCreateOption) (*Pod, return nil, ErrRuntimeStopped } - pod, err := newPod(r.lockDir, r) + pod, err := newPod(r) if err != nil { return nil, errors.Wrapf(err, "error creating pod") } @@ -48,6 +48,14 @@ func (r *Runtime) NewPod(ctx context.Context, options ...PodCreateOption) (*Pod, pod.config.Name = name } + // Allocate a lock for the pod + lock, err := r.lockManager.AllocateLock() + if err != nil { + return nil, errors.Wrapf(err, "error allocating lock for new pod") + } + pod.lock = lock + pod.config.LockID = pod.lock.ID() + pod.valid = true // Check CGroup parent sanity, and set it if it was not set @@ -239,6 +247,11 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool) return err } } + + // Free the container's lock + if err := ctr.lock.Free(); err != nil { + return err + } } // Remove containers from the state |