diff --git a/pkg/systemd/quadlet/quadlet.go b/pkg/systemd/quadlet/quadlet.go index 4fd27deab9..e11a7fde44 100644 --- a/pkg/systemd/quadlet/quadlet.go +++ b/pkg/systemd/quadlet/quadlet.go @@ -1115,6 +1115,9 @@ func ConvertVolume(volume *parser.UnitFile, name string, unitsInfoMap map[string if ok && len(devType) != 0 { if devValid { podman.add("--opt", fmt.Sprintf("type=%s", devType)) + if devType == "bind" { + service.Add(UnitGroup, "RequiresMountsFor", dev) + } } else { return nil, warnings, fmt.Errorf("key Type can't be used without Device") } diff --git a/test/e2e/quadlet/device-bind.volume b/test/e2e/quadlet/device-bind.volume new file mode 100644 index 0000000000..9b68ee9cd6 --- /dev/null +++ b/test/e2e/quadlet/device-bind.volume @@ -0,0 +1,9 @@ +## assert-key-contains Service ExecStart " --opt type=bind " +## assert-key-contains Service ExecStart " --opt device=/var/lib/data " +## assert-key-contains Service ExecStart " --opt nocopy " +## assert-key-contains Unit RequiresMountsFor "/var/lib/data" + +[Volume] +Device=/var/lib/data +Type=bind +Copy=no diff --git a/test/e2e/quadlet_test.go b/test/e2e/quadlet_test.go index daf63e9d04..982c9cd3ae 100644 --- a/test/e2e/quadlet_test.go +++ b/test/e2e/quadlet_test.go @@ -803,7 +803,6 @@ BOGUS=foo dirName := "test_subdir" err = CopyDirectory(filepath.Join("quadlet", dirName), quadletDir) - if err != nil { GinkgoWriter.Println("error:", err) } @@ -975,6 +974,7 @@ BOGUS=foo Entry("image.volume", "image.volume"), Entry("Volume - global args", "globalargs.volume"), Entry("Volume - Containers Conf Modules", "containersconfmodule.volume"), + Entry("Volume - Type=bind", "device-bind.volume"), Entry("Absolute Path", "absolute.path.kube"), Entry("Basic kube", "basic.kube"), @@ -1276,5 +1276,4 @@ BOGUS=foo }, ), ) - })