From f25cefcb1bd2faa8bc251b47b3dc1133b0b78c46 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 --- 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 408096ed91..695327a56d 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))