From d1faa596777396ca73abec019e252c6dfbfee52b Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Fri, 19 Jul 2024 09:38:11 +0530 Subject: [PATCH] Back port fixes from upstream 4.19 (#466) * Fixed src datastore on copy check for PowerFlex/ScaleIO storage driver (#9310) * Ignore non-managed pools for storage pool access preparation (#9376) --- .../datastore/driver/ScaleIOPrimaryDataStoreDriver.java | 2 +- .../src/main/java/com/cloud/storage/StorageManagerImpl.java | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java index 79863f3dcee..06091735d70 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java @@ -1182,7 +1182,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver { @Override public boolean canCopy(DataObject srcData, DataObject destData) { - DataStore srcStore = destData.getDataStore(); + DataStore srcStore = srcData.getDataStore(); DataStore destStore = destData.getDataStore(); if ((srcStore.getRole() == DataStoreRole.Primary && (srcData.getType() == DataObjectType.TEMPLATE || srcData.getType() == DataObjectType.VOLUME)) && (destStore.getRole() == DataStoreRole.Primary && destData.getType() == DataObjectType.VOLUME)) { diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index d05a185bf1c..592c5084077 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -2327,14 +2327,10 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C @Override public boolean canHostPrepareStoragePoolAccess(Host host, StoragePool pool) { - if (host == null || pool == null) { + if (host == null || pool == null || !pool.isManaged()) { return false; } - if (!pool.isManaged()) { - return true; - } - DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(pool.getStorageProviderName()); DataStoreDriver storeDriver = storeProvider.getDataStoreDriver(); return storeDriver instanceof PrimaryDataStoreDriver && ((PrimaryDataStoreDriver)storeDriver).canHostPrepareStoragePoolAccess(host, pool);