From a4413b92e14fd437efaf45b16ee49a38f96921f8 Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Mon, 29 Aug 2022 17:23:04 +0800 Subject: [PATCH] fix(host): compare desc cdrom (#14860) Signed-off-by: wanyaoqi Signed-off-by: wanyaoqi --- pkg/hostman/guestman/guesttasks.go | 3 +++ pkg/hostman/guestman/qemu-kvm.go | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) 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 {