diff options
author | Matthew Heon <matthew.heon@pm.me> | 2021-08-30 15:14:19 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-30 15:14:19 -0400 |
commit | c97666723104fde9886ba789fe4ac34a4294981b (patch) | |
tree | 557efc3fb6a8a7a6df342da2e439486873644806 | |
parent | 4834b7311903c6e80f0d05f5acb2889789685564 (diff) | |
parent | a2a166345e907bd7c3d2215d3c5b94f736e20aa8 (diff) | |
download | podman-c97666723104fde9886ba789fe4ac34a4294981b.tar.gz podman-c97666723104fde9886ba789fe4ac34a4294981b.tar.bz2 podman-c97666723104fde9886ba789fe4ac34a4294981b.zip |
Merge pull request #11342 from baude/machinecleanups
clean up socket and pid files from podman machine
-rw-r--r-- | pkg/machine/qemu/machine.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index 871436618..38a16c3ef 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -244,6 +244,7 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { qemuSocketConn net.Conn wait time.Duration = time.Millisecond * 500 ) + if err := v.startHostNetworking(); err != nil { return errors.Errorf("unable to start host networking: %q", err) } @@ -264,7 +265,11 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { if err != nil { return err } - + // If the qemusocketpath exists and the vm is off/down, we should rm + // it before the dial as to avoid a segv + if err := os.Remove(qemuSocketPath); err != nil && !errors.Is(err, os.ErrNotExist) { + logrus.Warn(err) + } for i := 0; i < 6; i++ { qemuSocketConn, err = net.Dial("unix", qemuSocketPath) if err == nil { @@ -352,7 +357,7 @@ func (v *MachineVM) Stop(name string, _ machine.StopOptions) error { if _, err = qmpMonitor.Run(input); err != nil { return err } - _, pidFile, err := v.getSocketandPid() + qemuSocketFile, pidFile, err := v.getSocketandPid() if err != nil { return err } @@ -373,7 +378,16 @@ func (v *MachineVM) Stop(name string, _ machine.StopOptions) error { if p == nil && err != nil { return err } - return p.Kill() + // Kill the process + if err := p.Kill(); err != nil { + return err + } + // Remove the pidfile + if err := os.Remove(pidFile); err != nil && !errors.Is(err, os.ErrNotExist) { + logrus.Warn(err) + } + // Remove socket + return os.Remove(qemuSocketFile) } // NewQMPMonitor creates the monitor subsection of our vm |