From 0c9dc86deaf6e981a7e557a1fc8edeadb8be8357 Mon Sep 17 00:00:00 2001 From: baude Date: Fri, 2 Jul 2021 09:57:03 -0500 Subject: Create podman temp dir on machine start If the tempdir for the OS does not have a podman/, machine start will fail. An example would be after a reboot. We now create the podman dir if it does not exist. Fixes #10824 [NO TESTS NEEDED] Signed-off-by: baude Signed-off-by: Brent Baude --- pkg/machine/qemu/machine.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index 22fb78a5c..42ae23c43 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -15,9 +15,8 @@ import ( "strings" "time" - "github.com/containers/podman/v3/pkg/rootless" - "github.com/containers/podman/v3/pkg/machine" + "github.com/containers/podman/v3/pkg/rootless" "github.com/containers/podman/v3/utils" "github.com/containers/storage/pkg/homedir" "github.com/digitalocean/go-qemu/qmp" @@ -248,7 +247,23 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { if err := v.startHostNetworking(); err != nil { return errors.Errorf("unable to start host networking: %q", err) } + + rtPath, err := getRuntimeDir() + if err != nil { + return err + } + + // If the temporary podman dir is not created, create it + podmanTempDir := filepath.Join(rtPath, "podman") + if _, err := os.Stat(podmanTempDir); os.IsNotExist(err) { + if mkdirErr := os.MkdirAll(podmanTempDir, 0755); mkdirErr != nil { + return err + } + } qemuSocketPath, _, err := v.getSocketandPid() + if err != nil { + return err + } for i := 0; i < 6; i++ { qemuSocketConn, err = net.Dial("unix", qemuSocketPath) @@ -258,9 +273,6 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { time.Sleep(wait) wait++ } - if err != nil { - return err - } fd, err := qemuSocketConn.(*net.UnixConn).File() if err != nil { -- cgit v1.2.3-54-g00ecf