From 945646b4d7edb4b214dfaad84bb2841d9abe3745 Mon Sep 17 00:00:00 2001 From: Jean Vetorello Date: Fri, 19 Sep 2025 22:50:54 -0300 Subject: [PATCH] git commit -m "KVM: skip mountpoint check for RBD storage pools (fix snapshot errors)" --- .../kvm/storage/LibvirtStorageAdaptor.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 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 bf851831cd0d..473b217178ee 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 @@ -306,12 +306,27 @@ public void storagePoolRefresh(StoragePool pool) { } private void checkNetfsStoragePoolMounted(String uuid) { - String targetPath = _mountPoint + File.separator + uuid; - int mountpointResult = Script.runSimpleBashScriptForExitValue("mountpoint -q " + targetPath); - if (mountpointResult != 0) { - String errMsg = String.format("libvirt failed to mount storage pool %s at %s", uuid, targetPath); - logger.error(errMsg); - throw new CloudRuntimeException(errMsg); + try { + // lookup the storage pool definition + Connect conn = LibvirtConnection.getConnection(); + StoragePool pool = conn.storagePoolLookupByUUIDString(uuid); + LibvirtStoragePoolDef def = getStoragePoolDef(conn, pool); + + // Skip mountpoint check if pool type is RBD + if (def.getPoolType() == LibvirtStoragePoolDef.PoolType.RBD) { + logger.debug("Skipping mountpoint check for RBD pool " + uuid); + return; + } + + String targetPath = _mountPoint + File.separator + uuid; + int mountpointResult = Script.runSimpleBashScriptForExitValue("mountpoint -q " + targetPath); + if (mountpointResult != 0) { + String errMsg = String.format("libvirt failed to mount storage pool %s at %s", uuid, targetPath); + logger.error(errMsg); + throw new CloudRuntimeException(errMsg); + } + } catch (LibvirtException e) { + throw new CloudRuntimeException("Failed to check storage pool type for " + uuid, e); } }