diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-02-15 09:59:11 -0500 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-02-21 10:51:42 -0500 |
commit | a72025d6fd111bfa2dc4e1d22871966fec614f88 (patch) | |
tree | 72ae221f1926c9f3da0eef292522da55b9929b7f /libpod/options.go | |
parent | ca8ae877c12cbfa368d572ef6700d9e4a23d5b11 (diff) | |
download | podman-a72025d6fd111bfa2dc4e1d22871966fec614f88.tar.gz podman-a72025d6fd111bfa2dc4e1d22871966fec614f88.tar.bz2 podman-a72025d6fd111bfa2dc4e1d22871966fec614f88.zip |
Move RenumberLocks into runtime init
We can't do renumbering after init - we need to open a
potentially invalid locks file (too many/too few locks), and then
potentially delete the old locks and make new ones.
We need to be in init to bypass the checks that would otherwise
make this impossible.
This leaves us with two choices: make RenumberLocks a separate
entrypoint from NewRuntime, duplicating a lot of configuration
load code (we need to know where the locks live, how many there
are, etc) - or modify NewRuntime to allow renumbering during it.
Previous experience says the first is not really a viable option
and produces massive code bloat, so the second it is.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod/options.go')
-rw-r--r-- | libpod/options.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libpod/options.go b/libpod/options.go index 06737776b..4a3dd582d 100644 --- a/libpod/options.go +++ b/libpod/options.go @@ -394,6 +394,26 @@ func WithDefaultInfraCommand(cmd string) RuntimeOption { } } +// WithRenumber instructs libpod to perform a lock renumbering instead of a +// normal init. +// When this is specified, no valid runtime will be returned by NewRuntime. +// Instead, libpod will reinitialize lock numbers on all pods and containers, +// shut down the runtime, and return. +// Renumber is intended to be used from a dedicated entrypoint, where it will +// handle a changed maximum number of locks and return, with the program +// exiting after that. +func WithRenumber() RuntimeOption { + return func(rt *Runtime) error { + if rt.valid { + return ErrRuntimeFinalized + } + + rt.doRenumber = true + + return nil + } +} + // Container Creation Options // WithShmDir sets the directory that should be mounted on /dev/shm. |