From 0c9dc86deaf6e981a7e557a1fc8edeadb8be8357 Mon Sep 17 00:00:00 2001
From: baude <baude@baudes-Mac-mini.localdomain>
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 <baude@baudes-Mac-mini.localdomain>
Signed-off-by: Brent Baude <bbaude@redhat.com>
---
 pkg/machine/qemu/machine.go | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

(limited to 'pkg')

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