Skip to content

Commit dd55035

Browse files
authored
Merge pull request #4369 from AkihiroSuda/dedupe-ensuredisk
pkg/driver: deduplicate EnsureDisk() across vz and krunkit
2 parents 2796dbf + 6b58ded commit dd55035

File tree

4 files changed

+7
-46
lines changed

4 files changed

+7
-46
lines changed

pkg/driver/krunkit/krunkit_darwin_arm64.go

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818

1919
"github.com/lima-vm/lima/v2/pkg/driver/vz"
2020
"github.com/lima-vm/lima/v2/pkg/imgutil/proxyimgutil"
21-
"github.com/lima-vm/lima/v2/pkg/iso9660util"
2221
"github.com/lima-vm/lima/v2/pkg/limatype"
2322
"github.com/lima-vm/lima/v2/pkg/limatype/filenames"
2423
"github.com/lima-vm/lima/v2/pkg/limayaml"
@@ -167,47 +166,6 @@ func buildNetworkArgs(inst *limatype.Instance) ([]string, error) {
167166
return args, nil
168167
}
169168

170-
func EnsureDisk(ctx context.Context, inst *limatype.Instance) error {
171-
diffDisk := filepath.Join(inst.Dir, filenames.DiffDisk)
172-
if _, err := os.Stat(diffDisk); err == nil || !errors.Is(err, os.ErrNotExist) {
173-
// disk is already ensured
174-
return err
175-
}
176-
177-
diskUtil := proxyimgutil.NewDiskUtil(ctx)
178-
179-
baseDisk := filepath.Join(inst.Dir, filenames.BaseDisk)
180-
181-
diskSize, _ := units.RAMInBytes(*inst.Config.Disk)
182-
if diskSize == 0 {
183-
return nil
184-
}
185-
isBaseDiskISO, err := iso9660util.IsISO9660(baseDisk)
186-
if err != nil {
187-
return err
188-
}
189-
if isBaseDiskISO {
190-
// Create an empty data volume (sparse)
191-
diffDiskF, err := os.Create(diffDisk)
192-
if err != nil {
193-
return err
194-
}
195-
196-
err = diskUtil.MakeSparse(ctx, diffDiskF, 0)
197-
if err != nil {
198-
diffDiskF.Close()
199-
return fmt.Errorf("failed to create sparse diff disk %q: %w", diffDisk, err)
200-
}
201-
return diffDiskF.Close()
202-
}
203-
204-
// Krunkit also supports qcow2 disks but raw is faster to create and use.
205-
if err = diskUtil.ConvertToRaw(ctx, baseDisk, diffDisk, &diskSize, false); err != nil {
206-
return fmt.Errorf("failed to convert %q to a raw disk %q: %w", baseDisk, diffDisk, err)
207-
}
208-
return err
209-
}
210-
211169
func startUsernet(ctx context.Context, inst *limatype.Instance) (*usernet.Client, context.CancelFunc, error) {
212170
if firstUsernetIndex := limayaml.FirstUsernetIndex(inst.Config); firstUsernetIndex != -1 {
213171
return usernet.NewClientByName(inst.Config.Networks[firstUsernetIndex].Lima), nil, nil

pkg/driver/krunkit/krunkit_driver_darwin_arm64.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/sirupsen/logrus"
2121

2222
"github.com/lima-vm/lima/v2/pkg/driver"
23+
"github.com/lima-vm/lima/v2/pkg/driverutil"
2324
"github.com/lima-vm/lima/v2/pkg/executil"
2425
"github.com/lima-vm/lima/v2/pkg/limatype"
2526
"github.com/lima-vm/lima/v2/pkg/limatype/filenames"
@@ -58,7 +59,8 @@ func (l *LimaKrunkitDriver) Configure(inst *limatype.Instance) *driver.Configure
5859
}
5960

6061
func (l *LimaKrunkitDriver) CreateDisk(ctx context.Context) error {
61-
return EnsureDisk(ctx, l.Instance)
62+
// Krunkit also supports qcow2 disks but raw is faster to create and use.
63+
return driverutil.EnsureDiskRaw(ctx, l.Instance)
6264
}
6365

6466
func (l *LimaKrunkitDriver) Start(ctx context.Context) (chan error, error) {

pkg/driver/vz/vz_driver_darwin.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/sirupsen/logrus"
2121

2222
"github.com/lima-vm/lima/v2/pkg/driver"
23+
"github.com/lima-vm/lima/v2/pkg/driverutil"
2324
"github.com/lima-vm/lima/v2/pkg/limatype"
2425
"github.com/lima-vm/lima/v2/pkg/limayaml"
2526
"github.com/lima-vm/lima/v2/pkg/osutil"
@@ -294,7 +295,7 @@ func (l *LimaVzDriver) Create(_ context.Context) error {
294295
}
295296

296297
func (l *LimaVzDriver) CreateDisk(ctx context.Context) error {
297-
return EnsureDisk(ctx, l.Instance)
298+
return driverutil.EnsureDiskRaw(ctx, l.Instance)
298299
}
299300

300301
func (l *LimaVzDriver) Start(ctx context.Context) (chan error, error) {

pkg/driver/vz/disk.go renamed to pkg/driverutil/disk.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-FileCopyrightText: Copyright The Lima Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package vz
4+
package driverutil
55

66
import (
77
"context"
@@ -18,7 +18,7 @@ import (
1818
"github.com/lima-vm/lima/v2/pkg/limatype/filenames"
1919
)
2020

21-
func EnsureDisk(ctx context.Context, inst *limatype.Instance) error {
21+
func EnsureDiskRaw(ctx context.Context, inst *limatype.Instance) error {
2222
diffDisk := filepath.Join(inst.Dir, filenames.DiffDisk)
2323
if _, err := os.Stat(diffDisk); err == nil || !errors.Is(err, os.ErrNotExist) {
2424
// disk is already ensured

0 commit comments

Comments
 (0)