diff --git a/pkg/hostman/guestman/guesttasks.go b/pkg/hostman/guestman/guesttasks.go index 59e0c1dcc8..ae361918ba 100644 --- a/pkg/hostman/guestman/guesttasks.go +++ b/pkg/hostman/guestman/guesttasks.go @@ -275,6 +275,9 @@ func (d *SGuestDiskSyncTask) onGetBlockInfo(blocks []monitor.QemuBlock) { } if len(cdName) > 0 { d.changeCdromContent(cdName) + } else { + d.cdrom = nil + d.syncDisksConf() } } diff --git a/pkg/hostman/guestman/qemu-kvm.go b/pkg/hostman/guestman/qemu-kvm.go index ab79040749..592adad857 100644 --- a/pkg/hostman/guestman/qemu-kvm.go +++ b/pkg/hostman/guestman/qemu-kvm.go @@ -1543,12 +1543,15 @@ func (s *SKVMGuestInstance) compareDescIsolatedDevices(newDesc *desc.SGuestDesc, } func (s *SKVMGuestInstance) compareDescCdrom(newDesc *desc.SGuestDesc) *string { - if s.Desc.Cdrom == nil && newDesc.Cdrom == nil { + newCdromIsNil := newDesc.Cdrom == nil || newDesc.Cdrom.Path == "" + oldCdromIsNil := s.Desc.Cdrom == nil || s.Desc.Cdrom.Path == "" + + if oldCdromIsNil && newCdromIsNil { return nil - } else if s.Desc.Cdrom == nil && newDesc.Cdrom != nil { + } else if oldCdromIsNil && !newCdromIsNil { cdromPath := newDesc.Cdrom.Path return &cdromPath - } else if s.Desc.Cdrom != nil && newDesc.Cdrom == nil { + } else if !oldCdromIsNil && newCdromIsNil { var res = "" return &res } else {