You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2026/06/22 19:30:44 UTC
(cloudstack) branch minor-improvements-clvm created (now ec97c3138de)
This is an automated email from the ASF dual-hosted git repository.
Pearl1594 pushed a change to branch minor-improvements-clvm
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
at ec97c3138de CLVM: Cleanup and improvements
This branch includes the following new commits:
new fac45d6e335 Merge branch 'main' of https://github.com/apache/cloudstack
new c68af0374a4 Merge branch 'main' of https://github.com/apache/cloudstack
new ec97c3138de CLVM: Cleanup and improvements
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(cloudstack) 01/03: Merge branch 'main' of https://github.com/apache/cloudstack
Posted by pe...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
Pearl1594 pushed a commit to branch minor-improvements-clvm
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit fac45d6e335c930ad7137c1bb8df2790d7cc1902
Merge: fd59bf641fa 957bfbb1cdd
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Wed Jun 17 21:21:26 2026 -0400
Merge branch 'main' of https://github.com/apache/cloudstack
.../.github_workflows_shared_noop-reminder.md | 5 -
.../.github_workflows_shared_reporting.md | 73 --------
...-agent.lock.yml => daily-issue-triage.lock.yml} | 194 +++++++++++----------
.github/workflows/daily-issue-triage.md | 171 ++++++++++++++++++
.github/workflows/daily-repo-status.lock.yml | 34 ++--
.github/workflows/daily-repo-status.md | 4 +
.github/workflows/issue-triage-agent.md | 91 ----------
.../java/com/cloud/network/NetworkService.java | 2 +-
api/src/main/java/com/cloud/vm/NicSecondaryIp.java | 2 +
.../api/command/user/vm/AddIpToVmNicCmd.java | 5 +-
.../api/response/NicSecondaryIpResponse.java | 12 ++
.../api/command/test/AddIpToVmNicTest.java | 4 +-
.../java/com/cloud/vm/dao/NicSecondaryIpVO.java | 15 +-
.../resources/META-INF/db/schema-42210to42300.sql | 3 +
.../main/java/com/cloud/api/ApiResponseHelper.java | 2 +
.../com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 1 +
.../java/com/cloud/network/NetworkServiceImpl.java | 4 +-
.../java/com/cloud/vpc/MockNetworkManagerImpl.java | 2 +-
ui/public/locales/en.json | 2 +
ui/public/locales/pt_BR.json | 2 +
ui/src/views/network/NicsTab.vue | 8 +
ui/src/views/network/NicsTable.vue | 2 +-
22 files changed, 352 insertions(+), 286 deletions(-)
(cloudstack) 03/03: CLVM: Cleanup and improvements
Posted by pe...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
Pearl1594 pushed a commit to branch minor-improvements-clvm
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit ec97c3138de6e471948f481aabe22f3e59e87282
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Mon Jun 22 15:30:26 2026 -0400
CLVM: Cleanup and improvements
---
.../com/cloud/vm/VirtualMachineManagerImpl.java | 3 ++-
.../storage/motion/AncientDataMotionStrategy.java | 21 +++++++++++++++++++++
.../storage/volume/VolumeServiceImpl.java | 6 ++++++
.../kvm/resource/LibvirtComputingResource.java | 2 +-
.../CloudStackPrimaryDataStoreDriverImpl.java | 12 +++---------
5 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
index c27240823b1..d74ed7dcd6c 100755
--- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -3543,7 +3543,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
protected boolean shouldMapVolume(VirtualMachineProfile profile, StoragePoolVO currentPool) {
boolean isManaged = currentPool.isManaged();
boolean isNotKvm = HypervisorType.KVM != profile.getHypervisorType();
- return isNotKvm || isManaged;
+ boolean isClvm = ClvmPoolManager.isClvmPoolType(currentPool.getPoolType());
+ return isNotKvm || isManaged || isClvm;
}
/**
diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
index 95362f44b13..9e54d07e993 100644
--- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
+++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
@@ -408,6 +408,9 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
answer = new Answer(cmd, false, errMsg);
} else {
answer = ep.sendMessage(cmd);
+ if (answer != null && answer.getResult()) {
+ setClvmLockHostIdIfApplicable(destData, ep);
+ }
}
return answer;
}
@@ -463,6 +466,7 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
imageStore.delete(objOnImageStore);
return answer;
}
+ setClvmLockHostIdIfApplicable(destData, ep);
} catch (Exception e) {
if (imageStore.exists(objOnImageStore)) {
objOnImageStore.processEvent(Event.OperationFailed);
@@ -486,6 +490,9 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
answer = new Answer(cmd, false, errMsg);
} else {
answer = ep.sendMessage(cmd);
+ if (answer != null && answer.getResult()) {
+ setClvmLockHostIdIfApplicable(destData, ep);
+ }
}
// delete volume on cache store
if (cacheData != null) {
@@ -495,6 +502,17 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
}
}
+ private void setClvmLockHostIdIfApplicable(DataObject destData, EndPoint ep) {
+ if (ep == null || !(destData instanceof VolumeInfo)) {
+ return;
+ }
+ VolumeInfo destVolume = (VolumeInfo) destData;
+ if (ClvmPoolManager.isClvmPoolType(destVolume.getStoragePoolType())) {
+ clvmPoolManager.setClvmLockHostId(destVolume.getId(), ep.getId());
+ logger.debug("Set CLVM lock host {} for migrated volume {}", ep.getId(), destVolume.getUuid());
+ }
+ }
+
private boolean canBypassSecondaryStorage(DataObject srcData, DataObject destData) {
if (srcData instanceof VolumeInfo) {
if (((VolumeInfo)srcData).isDirectDownload()) {
@@ -613,6 +631,9 @@ public class AncientDataMotionStrategy implements DataMotionStrategy {
if (destPool.getPoolType() == StoragePoolType.CLVM) {
volumeVo.setFormat(ImageFormat.RAW);
}
+ if (ClvmPoolManager.isClvmPoolType(destPool.getPoolType())) {
+ clvmPoolManager.setClvmLockHostId(volume.getId(), ep.getId());
+ }
// For SMB, pool credentials are also stored in the uri query string. We trim the query string
// part here to make sure the credentials do not get stored in the db unencrypted.
String folder = destPool.getPath();
diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 6fe4c2708c5..61ca1b7a2e3 100644
--- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -3096,6 +3096,12 @@ public class VolumeServiceImpl implements VolumeService {
}
if (volumePoolId == null || !volumePoolId.equals(vmPoolId)) {
+ Long volumeLockHostId = findVolumeLockHost(volumeToAttach);
+ if (volumeLockHostId != null && vmHostId != null && !volumeLockHostId.equals(vmHostId)) {
+ logger.info("CLVM cross-pool lock transfer required: Volume {} on pool {} lock is on host {} but VM is on host {}",
+ volumeToAttach.getUuid(), volumePoolId, volumeLockHostId, vmHostId);
+ return true;
+ }
return false;
}
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 4a93b1bce4a..4f32762b2fb 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
@@ -7022,7 +7022,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
continue;
}
VolumeObjectTO volumeTO = (VolumeObjectTO) diskTO.getData();
- if (!diskPath.equals(volumeTO.getPath()) && !diskPath.equals(diskTO.getPath())) {
+ if (!diskPath.substring(diskPath.lastIndexOf(File.separator) + 1).equals(volumeTO.getPath())) {
continue;
}
DataStoreTO dataStore = volumeTO.getDataStore();
diff --git a/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java b/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java
index 9174aaa3869..0d8b939822b 100644
--- a/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java
+++ b/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java
@@ -437,16 +437,10 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri
try {
EndPoint ep = null;
VolumeInfo volumeInfo = volFactory.getVolume(snapshot.getVolumeId(), DataStoreRole.Primary);
-
- StoragePoolVO storagePool = primaryStoreDao.findById(volumeInfo.getPoolId());
- if (storagePool != null && storagePool.getPoolType() == StoragePoolType.CLVM) {
- ep = epSelector.select(volumeInfo);
+ if (snapshotOnPrimaryStore != null) {
+ ep = epSelector.select(snapshotOnPrimaryStore);
} else {
- if (snapshotOnPrimaryStore != null) {
- ep = epSelector.select(snapshotOnPrimaryStore);
- } else {
- ep = epSelector.select(volumeInfo);
- }
+ ep = epSelector.select(volumeInfo);
}
if ( ep == null ){
(cloudstack) 02/03: Merge branch 'main' of https://github.com/apache/cloudstack
Posted by pe...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
Pearl1594 pushed a commit to branch minor-improvements-clvm
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit c68af0374a49533990c34a6fc1c92e53b4605d6e
Merge: fac45d6e335 ce2d890e387
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Fri Jun 19 09:41:25 2026 -0400
Merge branch 'main' of https://github.com/apache/cloudstack
.asf.yaml | 20 ++-
.github/workflows/build.yml | 2 +-
.github/workflows/ci.yml | 4 +-
.github/workflows/codeql-analysis.yml | 8 +-
.github/workflows/daily-issue-triage.lock.yml | 20 +--
.github/workflows/daily-repo-status.lock.yml | 20 +--
.github/workflows/docker-cloudstack-simulator.yml | 4 +-
.github/workflows/main-sonar-check.yml | 4 +-
.github/workflows/merge-conflict-checker.yml | 2 +-
.github/workflows/pre-commit.yml | 2 +-
.github/workflows/rat.yml | 2 +-
.github/workflows/sonar-check.yml | 50 ++++++-
.github/workflows/ui.yml | 2 +-
scripts/coverage-grade.sh | 174 ++++++++++++++++++++++
14 files changed, 277 insertions(+), 37 deletions(-)