From f2240fbeeac27b459b1087a941feddf0609e57fe Mon Sep 17 00:00:00 2001 From: Fabsolute Date: Sat, 25 Nov 2023 23:31:00 +0100 Subject: [PATCH] FIX disk parameter usage Signed-off-by: Fabsolute --- ...tualizationframework_darwin_cgo_enabled.go | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go index d1345fae7..505673d70 100644 --- a/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go +++ b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go @@ -182,18 +182,33 @@ func runVirtualizationFramework(cfg virtualizationFramwworkConfig, path string) var storageDevices []vz.StorageDeviceConfiguration for i, d := range cfg.disks { - var id, diskPath string + var id string if i != 0 { id = strconv.Itoa(i) } + if d.Size != 0 && d.Format == "" { + d.Format = "raw" + } + if d.Format != "raw" && d.Path == "" { + log.Fatal("Virtualization Framework currently can only create raw disks") + } if d.Size != 0 && d.Path == "" { - diskPath = filepath.Join(cfg.state, "disk"+id+".raw") + d.Path = filepath.Join(cfg.state, "disk"+id+".raw") } if d.Path == "" { return fmt.Errorf("disk specified with no size or name") } + if _, err := os.Stat(d.Path); err != nil { + if !os.IsNotExist(err) { + return err + } + err = vz.CreateDiskImage(d.Path, int64(d.Size)*1024*1024) + if err != nil { + return err + } + } diskImageAttachment, err := vz.NewDiskImageStorageDeviceAttachment( - diskPath, + d.Path, false, ) if err != nil {