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

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


The following commit(s) were added to refs/heads/4.11 by this push:
     new d67af86  kvm: check if storage pool is mounted before creating pool 
xml (#2696)
d67af86 is described below

commit d67af8661bc11d98af4da502adb44810e8467667
Author: cl-k-takahashi <[email protected]>
AuthorDate: Thu Jun 7 15:53:21 2018 +0900

    kvm: check if storage pool is mounted before creating pool xml (#2696)
    
    Now the KVM agent checks whether a storage pool is mounted or not mounted 
before calling storagePoolCreateXML().
    
    Signed-off-by: Kai Takahashi <[email protected]>
---
 .../kvm/storage/LibvirtStorageAdaptor.java         | 46 ++++++----------------
 1 file changed, 13 insertions(+), 33 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index 64d2a04..24cf031 100644
--- 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -147,44 +147,24 @@ public class LibvirtStorageAdaptor implements 
StorageAdaptor {
         StoragePool sp = null;
         try {
             s_logger.debug(spd.toString());
-            sp = conn.storagePoolCreateXML(spd.toString(), 0);
-            return sp;
-        } catch (LibvirtException e) {
-            s_logger.error(e.toString());
-            // if error is that pool is mounted, try to handle it
-            if (e.toString().contains("already mounted")) {
-                s_logger.error("Attempting to unmount old mount libvirt is 
unaware of at " + targetPath);
+            // check whether the pool is already mounted
+            int mountpointResult = 
Script.runSimpleBashScriptForExitValue("mountpoint -q " + targetPath);
+            // if the pool is mounted, try to unmount it
+            if(mountpointResult == 0) {
+                s_logger.info("Attempting to unmount old mount at " + 
targetPath);
                 String result = Script.runSimpleBashScript("umount -l " + 
targetPath);
                 if (result == null) {
-                    s_logger.error("Succeeded in unmounting " + targetPath);
-                    try {
-                        sp = conn.storagePoolCreateXML(spd.toString(), 0);
-                        s_logger.error("Succeeded in redefining storage");
-                        return sp;
-                    } catch (LibvirtException l) {
-                        s_logger.error("Target was already mounted, unmounted 
it but failed to redefine storage:" + l);
-                    }
+                    s_logger.info("Succeeded in unmounting " + targetPath);
                 } else {
-                    s_logger.error("Failed in unmounting and redefining 
storage");
+                    s_logger.error("Failed in unmounting storage");
                 }
-            } else {
-                s_logger.error("Internal error occurred when attempting to 
mount: specified path may be invalid");
-                throw e;
             }
-            if (sp != null) {
-                try {
-                    if (sp.isPersistent() == 1) {
-                        sp.destroy();
-                        sp.undefine();
-                    } else {
-                        sp.destroy();
-                    }
-                    sp.free();
-                } catch (LibvirtException l) {
-                    s_logger.debug("Failed to undefine " + fsType.toString() + 
" storage pool with: " + l.toString());
-                }
-            }
-            return null;
+
+            sp = conn.storagePoolCreateXML(spd.toString(), 0);
+            return sp;
+        } catch (LibvirtException e) {
+            s_logger.error(e.toString());
+            throw e;
         }
     }
 

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to