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());
}