diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-02-14 17:25:58 -0500 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-02-21 10:51:42 -0500 |
commit | 7fdd20ae5a1ced1faceab9cb0a6e553343911a0b (patch) | |
tree | 21bc568928dfaa8f12e3b616e0e72fda3f1f5a63 /libpod/lock/shm/shm_lock.go | |
parent | 84feff2e06e9c3dd504be918f8dcf0b0a434a941 (diff) | |
download | podman-7fdd20ae5a1ced1faceab9cb0a6e553343911a0b.tar.gz podman-7fdd20ae5a1ced1faceab9cb0a6e553343911a0b.tar.bz2 podman-7fdd20ae5a1ced1faceab9cb0a6e553343911a0b.zip |
Add initial version of renumber backend
Renumber is a way of renumbering container locks after the number
of locks available has changed.
For now, renumber only works with containers.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod/lock/shm/shm_lock.go')
-rw-r--r-- | libpod/lock/shm/shm_lock.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libpod/lock/shm/shm_lock.go b/libpod/lock/shm/shm_lock.go index 87d28e5c1..e70ea8743 100644 --- a/libpod/lock/shm/shm_lock.go +++ b/libpod/lock/shm/shm_lock.go @@ -155,6 +155,22 @@ func (locks *SHMLocks) DeallocateSemaphore(sem uint32) error { return nil } +// DeallocateAllSemaphores frees all semaphores so they can be reallocated to +// other containers and pods. +func (locks *SHMLocks) DeallocateAllSemaphores() error { + if !locks.valid { + return errors.Wrapf(syscall.EINVAL, "locks have already been closed") + } + + retCode := C.deallocate_all_semaphores(locks.lockStruct) + if retCode < 0 { + // Negative errno return from C + return syscall.Errno(-1 * retCode) + } + + return nil +} + // LockSemaphore locks the given semaphore. // If the semaphore is already locked, LockSemaphore will block until the lock // can be acquired. |