From efa20372b497af92b53fdad5f23b9d7d094c2c20 Mon Sep 17 00:00:00 2001 From: Mario Loriedo Date: Mon, 26 May 2025 14:12:03 +0200 Subject: [PATCH] Fix overlay volumes on Windows The Windows source folder path was not converted in the corresponding machine folder path when the volume was of type overlay as it does for other bind mount volumes. Fix #25988 Signed-off-by: Mario Loriedo (cherry picked from commit f25cefcb1bd2faa8bc251b47b3dc1133b0b78c46) Signed-off-by: Paul Holzinger --- pkg/machine/e2e/basic_test.go | 7 +++++++ pkg/specgenutil/volumes.go | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/pkg/machine/e2e/basic_test.go b/pkg/machine/e2e/basic_test.go index 91befbc389..1176ef75d0 100644 --- a/pkg/machine/e2e/basic_test.go +++ b/pkg/machine/e2e/basic_test.go @@ -90,6 +90,13 @@ var _ = Describe("run basic podman commands", func() { Expect(err).ToNot(HaveOccurred()) Expect(runAlp).To(Exit(0)) + // Test overlay works on all platforms except Hyper-V (see #26210) + if !isVmtype(define.HyperVVirt) { + runAlp, err = mb.setCmd(bm.withPodmanCommand([]string{"run", "-v", tDir + ":/test:O", TESTIMAGE, "ls", "/test/attr-test-file"})).run() + Expect(err).ToNot(HaveOccurred()) + Expect(runAlp).To(Exit(0)) + } + // Test build with --volume option cf := filepath.Join(tDir, "Containerfile") err = os.WriteFile(cf, []byte("FROM "+TESTIMAGE+"\nRUN ls /test/attr-test-file\n"), 0o644) diff --git a/pkg/specgenutil/volumes.go b/pkg/specgenutil/volumes.go index d8d190578c..7fa497c75b 100644 --- a/pkg/specgenutil/volumes.go +++ b/pkg/specgenutil/volumes.go @@ -157,6 +157,11 @@ func parseVolumes(rtc *config.Config, volumeFlag, mountFlag, tmpfsFlag []string) } finalOverlayVolume := make([]*specgen.OverlayVolume, 0, len(overlayVolumes)) for _, volume := range overlayVolumes { + absSrc, err := specgen.ConvertWinMountPath(volume.Source) + if err != nil { + return nil, fmt.Errorf("getting absolute path of %s: %w", volume.Source, err) + } + volume.Source = absSrc finalOverlayVolume = append(finalOverlayVolume, volume) } finalImageVolumes := make([]*specgen.ImageVolume, 0, len(unifiedContainerMounts.imageVolumes))