You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mt...@apache.org on 2015/01/23 01:36:43 UTC

git commit: updated refs/heads/master to f983e6e

Repository: cloudstack
Updated Branches:
  refs/heads/master 29fbc4b42 -> f983e6ed8


Un-plug any remaining VBDs and PBDs


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f983e6ed
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f983e6ed
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f983e6ed

Branch: refs/heads/master
Commit: f983e6ed82a8ba3c838a09789c9fc4ff01173bc5
Parents: 29fbc4b
Author: Mike Tutkowski <mi...@solidfire.com>
Authored: Thu Jan 22 12:43:54 2015 -0700
Committer: Mike Tutkowski <mi...@solidfire.com>
Committed: Thu Jan 22 17:36:04 2015 -0700

----------------------------------------------------------------------
 .../xenserver/resource/CitrixResourceBase.java  | 27 ++++++++++++++++----
 1 file changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f983e6ed/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index 07318b8..a3c894d 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -2868,6 +2868,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         if (sr == null) {
             return;
         }
+
         if (s_logger.isDebugEnabled()) {
             s_logger.debug(logX(sr, "Removing SR"));
         }
@@ -2875,34 +2876,49 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         for (int i = 0; i < 2; i++) {
             try {
                 Set<VDI> vdis = sr.getVDIs(conn);
+
                 for (VDI vdi : vdis) {
+                    Set<VBD> vbds = vdi.getVBDs(conn);
+
+                    for (VBD vbd : vbds) {
+                        vbd.unplug(conn);
+                    }
+
                     vdi.forget(conn);
                 }
+
                 Set<PBD> pbds = sr.getPBDs(conn);
+
                 for (PBD pbd : pbds) {
                     if (s_logger.isDebugEnabled()) {
                         s_logger.debug(logX(pbd, "Unplugging pbd"));
                     }
-                    if (pbd.getCurrentlyAttached(conn)) {
-                        pbd.unplug(conn);
-                    }
+
+//                    if (pbd.getCurrentlyAttached(conn)) {
+                    pbd.unplug(conn);
+//                    }
+
                     pbd.destroy(conn);
                 }
 
                 pbds = sr.getPBDs(conn);
+
                 if (pbds.size() == 0) {
                     if (s_logger.isDebugEnabled()) {
                         s_logger.debug(logX(sr, "Forgetting"));
                     }
+
                     sr.forget(conn);
+
                     return;
                 }
 
                 if (s_logger.isDebugEnabled()) {
-                    s_logger.debug(logX(sr, "There are still pbd attached"));
+                    s_logger.debug(logX(sr, "There is still one or more PBDs attached."));
+
                     if (s_logger.isTraceEnabled()) {
                         for (PBD pbd : pbds) {
-                            s_logger.trace(logX(pbd, " Still attached"));
+                            s_logger.trace(logX(pbd, "Still attached"));
                         }
                     }
                 }
@@ -2912,6 +2928,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 s_logger.debug(logX(sr, "Catch Exception: " + e.getMessage()));
             }
         }
+
         s_logger.warn(logX(sr, "Unable to remove SR"));
     }