diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-05-06 13:44:01 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-05-06 14:17:54 -0400 |
commit | faae3a7065980a735ad60ab5f6d9e8421296dbf5 (patch) | |
tree | ca4e9dcdaaf1684fa446b3d4a48f686d1b86333a /libpod/lock/lock.go | |
parent | ff260f07e2be55c7fbda24b8727686fc55c650a6 (diff) | |
download | podman-faae3a7065980a735ad60ab5f6d9e8421296dbf5.tar.gz podman-faae3a7065980a735ad60ab5f6d9e8421296dbf5.tar.bz2 podman-faae3a7065980a735ad60ab5f6d9e8421296dbf5.zip |
When refreshing after a reboot, force lock allocation
After a reboot, when we refresh Podman's state, we retrieved the
lock from the fresh SHM instance, but we did not mark it as
allocated to prevent it being handed out to other containers and
pods.
Provide a method for marking locks as in-use, and use it when we
refresh Podman state after a reboot.
Fixes #2900
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod/lock/lock.go')
-rw-r--r-- | libpod/lock/lock.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libpod/lock/lock.go b/libpod/lock/lock.go index d6841646b..4e1e2e215 100644 --- a/libpod/lock/lock.go +++ b/libpod/lock/lock.go @@ -24,6 +24,13 @@ type Manager interface { // The underlying lock MUST be the same as another other lock with the // same UUID. RetrieveLock(id uint32) (Locker, error) + // AllocateAndRetrieveLock marks the lock with the given UUID as in use + // and retrieves it. + // RetrieveAndAllocateLock will error if the lock in question has + // already been allocated. + // This is mostly used after a system restart to repopulate the list of + // locks in use. + AllocateAndRetrieveLock(id uint32) (Locker, error) // PLEASE READ FULL DESCRIPTION BEFORE USING. // FreeAllLocks frees all allocated locks, in preparation for lock // reallocation. |