From 1dbcb0691a65f1985d6325f52192459b56effaf1 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 11 Mar 2021 14:49:17 +0000 Subject: [PATCH 1/2] kvm: Do not rebase DATADISK in vm start/migration --- .../hypervisor/kvm/resource/LibvirtComputingResource.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 4cb356c8023d..58b1ac35d211 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -4266,7 +4266,8 @@ public void setBackingFileFormat(String volPath) { Map info = qemu.info(file); String backingFilePath = info.get(new String("backing_file")); String backingFileFormat = info.get(new String("backing_file_format")); - if (org.apache.commons.lang.StringUtils.isEmpty(backingFileFormat)) { + if (org.apache.commons.lang.StringUtils.isNotBlank(backingFilePath) + && org.apache.commons.lang.StringUtils.isEmpty(backingFileFormat)) { s_logger.info("Setting backing file format of " + volPath); QemuImgFile backingFile = new QemuImgFile(backingFilePath); Map backingFileinfo = qemu.info(backingFile); From ef0321d41ed183d5d9fcbc84b961ca1d73769d49 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 12 Mar 2021 13:33:00 +0000 Subject: [PATCH 2/2] #4800: add comment and use isBlank --- .../hypervisor/kvm/resource/LibvirtComputingResource.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 58b1ac35d211..275d395399f6 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -4267,7 +4267,10 @@ public void setBackingFileFormat(String volPath) { String backingFilePath = info.get(new String("backing_file")); String backingFileFormat = info.get(new String("backing_file_format")); if (org.apache.commons.lang.StringUtils.isNotBlank(backingFilePath) - && org.apache.commons.lang.StringUtils.isEmpty(backingFileFormat)) { + && org.apache.commons.lang.StringUtils.isBlank(backingFileFormat)) { + // VMs which are created in CloudStack 4.14 and before cannot be started or migrated + // in latest Linux distributions due to missing backing file format + // Please refer to https://libvirt.org/kbase/backing_chains.html#vm-refuses-to-start-due-to-misconfigured-backing-store-format s_logger.info("Setting backing file format of " + volPath); QemuImgFile backingFile = new QemuImgFile(backingFilePath); Map backingFileinfo = qemu.info(backingFile);