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

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


The following commit(s) were added to refs/heads/4.19 by this push:
     new c183fc9859e Prevent data corruption for StorPool volumes (#10799)
c183fc9859e is described below

commit c183fc9859ee8447433d99c227028c94799a994f
Author: slavkap <51903378+slav...@users.noreply.github.com>
AuthorDate: Fri May 16 11:02:33 2025 +0300

    Prevent data corruption for StorPool volumes (#10799)
---
 .../src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java | 11 +++++++++++
 1 file changed, 11 insertions(+)

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 f2e90decdea..41fd631d88f 100755
--- 
a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -61,7 +61,11 @@ import org.apache.cloudstack.ca.CAManager;
 import org.apache.cloudstack.context.CallContext;
 import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
 import 
org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider;
+import 
org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager;
+import 
org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver;
 import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
 import org.apache.cloudstack.framework.ca.Certificate;
 import org.apache.cloudstack.framework.config.ConfigKey;
@@ -385,6 +389,8 @@ public class VirtualMachineManagerImpl extends ManagerBase 
implements VirtualMac
     private DomainRouterJoinDao domainRouterJoinDao;
     @Inject
     private AnnotationDao annotationDao;
+    @Inject
+    DataStoreProviderManager dataStoreProviderManager;
 
     VmWorkJobHandlerProxy _jobHandlerProxy = new VmWorkJobHandlerProxy(this);
 
@@ -1204,6 +1210,11 @@ public class VirtualMachineManagerImpl extends 
ManagerBase implements VirtualMac
                                 planChangedByVolume = true;
                             }
                         }
+                        DataStoreProvider storeProvider = 
dataStoreProviderManager.getDataStoreProvider(pool.getStorageProviderName());
+                        DataStoreDriver storeDriver = 
storeProvider.getDataStoreDriver();
+                        if (storeDriver instanceof PrimaryDataStoreDriver) {
+                            
((PrimaryDataStoreDriver)storeDriver).detachVolumeFromAllStorageNodes(vol);
+                        }
                     }
                 }
 

Reply via email to