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].