diff --git a/virtcontainers/qemu.go b/virtcontainers/qemu.go index d10831f7..e45b31f8 100644 --- a/virtcontainers/qemu.go +++ b/virtcontainers/qemu.go @@ -299,11 +299,6 @@ func (q *qemu) createQmpSocket() ([]govmmQemu.QMPSocket, error) { path: monitorSockPath, } - err = os.MkdirAll(filepath.Dir(monitorSockPath), dirMode) - if err != nil { - return nil, err - } - return []govmmQemu.QMPSocket{ { Type: "unix", @@ -489,7 +484,21 @@ func (q *qemu) startSandbox() error { } }() - strErr, err := govmmQemu.LaunchQemu(q.qemuConfig, newQMPLogger()) + vmPath := filepath.Join(RunVMStoragePath, q.id) + err := os.MkdirAll(vmPath, dirMode) + if err != nil { + return err + } + defer func() { + if err != nil { + if err := os.RemoveAll(vmPath); err != nil { + q.Logger().WithError(err).Error("Fail to clean up vm directory") + } + } + }() + + var strErr string + strErr, err = govmmQemu.LaunchQemu(q.qemuConfig, newQMPLogger()) if err != nil { return fmt.Errorf("%s", strErr) }