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

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


The following commit(s) were added to refs/heads/4.22 by this push:
     new daa2e61eefb Fix encryption and migration not working on Shared 
mountpoint (#13537)
daa2e61eefb is described below

commit daa2e61eefb1f81ad0e65b341cdee3aa40b23fa4
Author: Abhisar Sinha <[email protected]>
AuthorDate: Mon Jul 6 11:38:04 2026 +0530

    Fix encryption and migration not working on Shared mountpoint (#13537)
---
 .../hypervisor/kvm/storage/LibvirtStorageAdaptor.java      | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index a03daeb197b..6c21065340c 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -24,7 +24,6 @@ import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -97,8 +96,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
     public static final int RBD_FEATURES = RBD_FEATURE_LAYERING + 
RBD_FEATURE_EXCLUSIVE_LOCK + RBD_FEATURE_OBJECT_MAP + RBD_FEATURE_FAST_DIFF + 
RBD_FEATURE_DEEP_FLATTEN;
     private int rbdOrder = 0; /* Order 0 means 4MB blocks (the default) */
 
-    private static final Set<StoragePoolType> 
poolTypesThatEnableCreateDiskFromTemplateBacking = new 
HashSet<>(Arrays.asList(StoragePoolType.NetworkFilesystem,
-      StoragePoolType.Filesystem));
+    private static final Set<StoragePoolType> QEMU_IMG_MANAGED_POOL_TYPES = 
Set.of(StoragePoolType.NetworkFilesystem, StoragePoolType.Filesystem, 
StoragePoolType.SharedMountPoint);
 
     public LibvirtStorageAdaptor(StorageLayer storage) {
         _storageLayer = storage;
@@ -134,8 +132,8 @@ public class LibvirtStorageAdaptor implements 
StorageAdaptor {
         String volumeDesc = String.format("volume [%s], with template backing 
[%s], in pool [%s] (%s), with size [%s] and encryption is %s", name, 
template.getName(), destPool.getUuid(),
           destPool.getType(), size, passphrase != null && passphrase.length > 
0);
 
-        if 
(!poolTypesThatEnableCreateDiskFromTemplateBacking.contains(destPool.getType()))
 {
-            logger.info(String.format("Skipping creation of %s due to pool 
type is none of the following types %s.", volumeDesc, 
poolTypesThatEnableCreateDiskFromTemplateBacking.stream()
+        if (!QEMU_IMG_MANAGED_POOL_TYPES.contains(destPool.getType())) {
+            logger.info(String.format("Skipping creation of %s due to pool 
type is none of the following types %s.", volumeDesc, 
QEMU_IMG_MANAGED_POOL_TYPES.stream()
               .map(type -> type.toString()).collect(Collectors.joining(", 
"))));
 
             return null;
@@ -979,7 +977,7 @@ public class LibvirtStorageAdaptor implements 
StorageAdaptor {
      *         </ul>
      *     </li>
      *     <li>
-     *         {@link StoragePoolType#NetworkFilesystem} and {@link 
StoragePoolType#Filesystem}
+     *         {@link StoragePoolType#NetworkFilesystem}, {@link 
StoragePoolType#Filesystem} and {@link StoragePoolType#SharedMountPoint}
      *         <ul>
      *             <li>
      *                 If the format is {@link PhysicalDiskFormat#QCOW2} or 
{@link PhysicalDiskFormat#RAW}, utilizes QemuImg to create the physical disk 
through the method
@@ -1010,7 +1008,7 @@ public class LibvirtStorageAdaptor implements 
StorageAdaptor {
 
             return (dataPool == null) ?  createPhysicalDiskByLibVirt(name, 
pool, PhysicalDiskFormat.RAW, provisioningType, size) :
                     createPhysicalDiskByQemuImg(name, pool, 
PhysicalDiskFormat.RAW, provisioningType, size, passphrase);
-        } else if (StoragePoolType.NetworkFilesystem.equals(poolType) || 
StoragePoolType.Filesystem.equals(poolType)) {
+        } else if (QEMU_IMG_MANAGED_POOL_TYPES.contains(poolType)) {
             switch (format) {
                 case QCOW2:
                 case RAW:
@@ -1080,7 +1078,7 @@ public class LibvirtStorageAdaptor implements 
StorageAdaptor {
         destFile.setFormat(format);
         destFile.setSize(size);
         Map<String, String> options = new HashMap<String, String>();
-        if (List.of(StoragePoolType.NetworkFilesystem, 
StoragePoolType.Filesystem).contains(pool.getType())) {
+        if (QEMU_IMG_MANAGED_POOL_TYPES.contains(pool.getType())) {
             options.put(QemuImg.PREALLOCATION, 
QemuImg.PreallocationType.getPreallocationType(provisioningType).toString());
         }
 

Reply via email to