This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.20 by this push:
     new 318a4f2b6ec server: set download volume format to qcow2 for KVM 
volumes (#11198)
318a4f2b6ec is described below

commit 318a4f2b6ece664c6bee923fc2b10828190d7203
Author: Wei Zhou <[email protected]>
AuthorDate: Fri Sep 26 20:25:11 2025 +0200

    server: set download volume format to qcow2 for KVM volumes (#11198)
---
 .../com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java |  2 +-
 .../datastore/driver/CloudStackImageStoreDriverImpl.java      | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
index 4ea8d1e80fb..91d5cf81d6f 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
@@ -587,7 +587,7 @@ public class KVMStorageProcessor implements 
StorageProcessor {
         try {
             final String volumeName = UUID.randomUUID().toString();
 
-            final String destVolumeName = volumeName + "." + 
destFormat.getFileExtension();
+            final String destVolumeName = volumeName + "." + 
ImageFormat.QCOW2.getFileExtension();
             final KVMPhysicalDisk volume = 
storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(), 
primaryStore.getUuid(), srcVolumePath);
             volume.setFormat(PhysicalDiskFormat.valueOf(srcFormat.toString()));
 
diff --git 
a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
 
b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
index d9a12d382ba..179d68efea7 100644
--- 
a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
+++ 
b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
@@ -23,7 +23,9 @@ import java.util.UUID;
 import javax.inject.Inject;
 
 import com.cloud.agent.api.storage.DeleteEntityDownloadURLCommand;
+import com.cloud.agent.api.to.DataObjectType;
 import com.cloud.host.dao.HostDao;
+import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.storage.Upload;
 import com.cloud.utils.StringUtils;
 
@@ -72,7 +74,14 @@ public class CloudStackImageStoreDriverImpl extends 
NfsImageStoreDriverImpl {
         }
 
         if (format != null) {
-            objectNameInUrl = objectNameInUrl + "." + 
format.getFileExtension();
+            if (dataObject.getTO() != null
+                    && 
DataObjectType.VOLUME.equals(dataObject.getTO().getObjectType())
+                    && 
HypervisorType.KVM.equals(dataObject.getTO().getHypervisorType())) {
+                // Fix: The format of KVM volumes on image store is qcow2
+                objectNameInUrl = objectNameInUrl + "." + 
ImageFormat.QCOW2.getFileExtension();
+            } else {
+                objectNameInUrl = objectNameInUrl + "." + 
format.getFileExtension();
+            }
         } else if (installPath.lastIndexOf(".") != -1) {
             objectNameInUrl = objectNameInUrl + "." + 
installPath.substring(installPath.lastIndexOf(".") + 1);
         }

Reply via email to