From 70804deefd5a3f5c4d46e3dc529a0900628a36f6 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Wed, 1 Oct 2025 16:55:10 +0200 Subject: [PATCH 1/4] storage: change storage pool to Up state when cancel storage migration --- .../lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java b/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java index 351d59f6b038..252385d8cdf6 100644 --- a/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java +++ b/plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java @@ -448,8 +448,8 @@ public boolean maintain(DataStore dataStore) { @Override public boolean cancelMaintain(DataStore store) { - storagePoolAutmation.cancelMaintain(store); dataStoreHelper.cancelMaintain(store); + storagePoolAutmation.cancelMaintain(store); return true; } From 4313060912611b86daf35b207ce12fbf1ff99c25 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 2 Oct 2025 13:54:19 +0200 Subject: [PATCH 2/4] Update 11773: connect host to shared pool after cancelling storage migration --- .../java/com/cloud/storage/StoragePoolAutomationImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java b/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java index 60494dcb05c0..010784ed8071 100644 --- a/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java +++ b/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java @@ -346,6 +346,11 @@ public boolean cancelMaintain(DataStore store) { if (logger.isDebugEnabled()) { logger.debug("ModifyStoragePool add succeeded"); } + try { + storageManager.connectHostToSharedPool(host, pool.getId()); + } catch (Exception e) { + logger.warn("Unable to establish a connection between {} and {}", host, pool, e); + } if (pool.getPoolType() == Storage.StoragePoolType.DatastoreCluster) { logger.debug("Started synchronising datastore cluster storage pool {} with vCenter", pool); storageManager.syncDatastoreClusterStoragePool(pool.getId(), ((ModifyStoragePoolAnswer) answer).getDatastoreClusterChildren(), host.getId()); From f2d41f89f318f0af3567e86dc82c58e73f77b065 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 6 Oct 2025 10:59:18 +0200 Subject: [PATCH 3/4] Update 11773: update db only --- .../src/main/java/com/cloud/storage/StorageManager.java | 2 ++ .../src/main/java/com/cloud/storage/StorageManagerImpl.java | 3 ++- .../java/com/cloud/storage/StoragePoolAutomationImpl.java | 6 +----- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java b/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java index 529e506e8a00..95e44bbb7b3a 100644 --- a/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java +++ b/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java @@ -294,6 +294,8 @@ static Boolean getFullCloneConfiguration(Long storeId) { Answer sendToPool(StoragePool pool, long[] hostIdsToTryFirst, Command cmd) throws StorageUnavailableException; + void updateStoragePoolHostVOAndBytes(StoragePool pool, long hostId, ModifyStoragePoolAnswer mspAnswer); + CapacityVO getSecondaryStorageUsedStats(Long hostId, Long zoneId); CapacityVO getStoragePoolUsedStats(Long poolId, Long clusterId, Long podId, Long zoneId); diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index 90113f66aafd..274b8f543413 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -2688,7 +2688,8 @@ private void handleRemoveChildStoragePoolFromDatastoreCluster(Set childD } - private void updateStoragePoolHostVOAndBytes(StoragePool pool, long hostId, ModifyStoragePoolAnswer mspAnswer) { + @Override + public void updateStoragePoolHostVOAndBytes(StoragePool pool, long hostId, ModifyStoragePoolAnswer mspAnswer) { StoragePoolHostVO poolHost = _storagePoolHostDao.findByPoolHost(pool.getId(), hostId); if (poolHost == null) { poolHost = new StoragePoolHostVO(pool.getId(), hostId, mspAnswer.getPoolInfo().getLocalPath().replaceAll("//", "/")); diff --git a/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java b/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java index 010784ed8071..3ce23a0bd3b3 100644 --- a/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java +++ b/server/src/main/java/com/cloud/storage/StoragePoolAutomationImpl.java @@ -346,11 +346,7 @@ public boolean cancelMaintain(DataStore store) { if (logger.isDebugEnabled()) { logger.debug("ModifyStoragePool add succeeded"); } - try { - storageManager.connectHostToSharedPool(host, pool.getId()); - } catch (Exception e) { - logger.warn("Unable to establish a connection between {} and {}", host, pool, e); - } + storageManager.updateStoragePoolHostVOAndBytes(pool, host.getId(), (ModifyStoragePoolAnswer) answer); if (pool.getPoolType() == Storage.StoragePoolType.DatastoreCluster) { logger.debug("Started synchronising datastore cluster storage pool {} with vCenter", pool); storageManager.syncDatastoreClusterStoragePool(pool.getId(), ((ModifyStoragePoolAnswer) answer).getDatastoreClusterChildren(), host.getId()); From aa725cbe1fad68587fa762a33b86e6918ac5ccbf Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Wed, 8 Oct 2025 10:15:33 +0200 Subject: [PATCH 4/4] Update 11773: skip capacity update for storpool --- .../src/main/java/com/cloud/storage/StorageManagerImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index 274b8f543413..323c0eb3ee49 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -2699,8 +2699,10 @@ public void updateStoragePoolHostVOAndBytes(StoragePool pool, long hostId, Modif } StoragePoolVO poolVO = _storagePoolDao.findById(pool.getId()); - poolVO.setUsedBytes(mspAnswer.getPoolInfo().getCapacityBytes() - mspAnswer.getPoolInfo().getAvailableBytes()); - poolVO.setCapacityBytes(mspAnswer.getPoolInfo().getCapacityBytes()); + if (!Storage.StoragePoolType.StorPool.equals(poolVO.getPoolType())) { + poolVO.setUsedBytes(mspAnswer.getPoolInfo().getCapacityBytes() - mspAnswer.getPoolInfo().getAvailableBytes()); + poolVO.setCapacityBytes(mspAnswer.getPoolInfo().getCapacityBytes()); + } _storagePoolDao.update(pool.getId(), poolVO); }