Skip to content

Commit 55af808

Browse files
Update pkg/qemuimgutil/qemuimgutil.go
Co-authored-by: Oleksandr Redko <[email protected]>
1 parent 6143f92 commit 55af808

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

pkg/qemuimgutil/qemuimgutil.go

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -103,35 +103,31 @@ type InfoFormatSpecificDataVmdkExtent struct {
103103
}
104104

105105
func convertToRaw(source, dest string) error {
106-
// If source == dest, we need to use a temporary file to avoid file locking issues
107-
if source == dest {
108-
// Get info to check if it's already raw format
109-
info, err := getInfo(source)
110-
if err != nil {
111-
return fmt.Errorf("failed to get info for source disk %q: %w", source, err)
112-
}
113-
// If already raw, no conversion needed
114-
if info.Format == "raw" {
115-
return nil
116-
}
106+
if source != dest {
107+
return execQemuImgConvert(source, dest)
108+
}
117109

118-
// Create temporary file for conversion
119-
tempFile := dest + ".lima-qemu-convert.tmp"
120-
defer os.Remove(tempFile) // Clean up temp file
110+
// If source == dest, we need to use a temporary file to avoid file locking issues
111+
112+
info, err := getInfo(source)
113+
if err != nil {
114+
return fmt.Errorf("failed to get info for source disk %q: %w", source, err)
115+
}
116+
if info.Format == "raw" {
117+
return nil
118+
}
121119

122-
// Convert to temp file first
123-
if err := convertToRawHelper(source, tempFile); err != nil {
124-
return err
125-
}
120+
tempFile := dest + ".lima-qemu-convert.tmp"
121+
defer os.Remove(tempFile)
126122

127-
// Replace original with converted file
128-
return os.Rename(tempFile, dest)
123+
if err := execQemuImgConvert(source, tempFile); err != nil {
124+
return err
129125
}
130126

131-
return convertToRawHelper(source, dest)
127+
return os.Rename(tempFile, dest)
132128
}
133129

134-
func convertToRawHelper(source, dest string) error {
130+
func execQemuImgConvert(source, dest string) error {
135131
var stdout, stderr bytes.Buffer
136132
cmd := exec.Command("qemu-img", "convert", "-O", "raw", source, dest)
137133
cmd.Stdout = &stdout

0 commit comments

Comments
 (0)