WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: Do not wait for memory teardown when live migrate

To: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Subject: Re: [Xen-devel] Re: Do not wait for memory teardown when live migrate
From: Miroslav Rezanina <mrezanin@xxxxxxxxxx>
Date: Tue, 12 Oct 2010 04:09:29 -0400 (EDT)
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Tue, 12 Oct 2010 01:10:23 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1941181824.152281286870602071.JavaMail.root@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
----- "Paolo Bonzini" <pbonzini@xxxxxxxxxx> wrote:
> >                       raise XendError("%s (from %s)" %
> (m_dsterr.group(2), dst))
> >                   raise
> >           finally:
> > +          if not live:
> >               try:
> >                   sock.shutdown(2)
> >               except:
> 
> Non-standard indentation?

Yeah, sorry for lazyness...This is correctly indented version.
> 

diff -r 3c4c3d48a835 tools/python/xen/xend/XendCheckpoint.py
--- a/tools/python/xen/xend/XendCheckpoint.py   Thu Aug 26 11:16:56 2010 +0100
+++ b/tools/python/xen/xend/XendCheckpoint.py   Tue Oct 12 10:08:32 2010 +0200
@@ -65,7 +65,7 @@
     return
 
 
-def save(fd, dominfo, network, live, dst, checkpoint=False, node=-1):
+def save(fd, dominfo, network, live, dst, checkpoint=False, node=-1,sock=None):
     from xen.xend import XendDomain
 
     try:
@@ -162,6 +162,13 @@
         if checkpoint:
             dominfo.resumeDomain()
         else:
+            if live and sock != None:
+                try:
+                    sock.shutdown(2)
+                except:
+                    pass
+                sock.close()
+
             dominfo.destroy()
             dominfo.testDeviceComplete()
         try:
diff -r 3c4c3d48a835 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Thu Aug 26 11:16:56 2010 +0100
+++ b/tools/python/xen/xend/XendDomain.py       Tue Oct 12 10:08:32 2010 +0200
@@ -1412,7 +1412,7 @@
         try:
             try:
                 XendCheckpoint.save(p2cwrite, dominfo, True, live, dst,
-                                    node=node)
+                                    node=node,sock=sock)
             except Exception, ex:
                 m_dsterr = None
                 try:
@@ -1436,15 +1436,16 @@
                     raise XendError("%s (from %s)" % (m_dsterr.group(2), dst))
                 raise
         finally:
-            try:
-                sock.shutdown(2)
-            except:
-                # Probably the socket is already disconnected by sock.close
-                # in the destination side.
-                # Ignore the exception because it has nothing to do with
-                # an exception of XendCheckpoint.save.
-                pass
-            sock.close()
+            if not live:
+                try:
+                    sock.shutdown(2)
+                except:
+                    # Probably the socket is already disconnected by sock.close
+                    # in the destination side.
+                    # Ignore the exception because it has nothing to do with
+                    # an exception of XendCheckpoint.save.
+                    pass
+                sock.close()
 
         os.close(p2cread)
         os.close(p2cwrite)
@@ -1469,7 +1470,7 @@
         try:
             try:
                 XendCheckpoint.save(sock.fileno(), dominfo, True, live,
-                                    dst, node=node)
+                                    dst, node=node,sock=sock)
             except Exception, ex:
                 m_dsterr = None
                 try:
@@ -1493,15 +1494,16 @@
                     raise XendError("%s (from %s)" % (m_dsterr.group(2), dst))
                 raise
         finally:
-            try:
-                sock.shutdown(2)
-            except:
-                # Probably the socket is already disconnected by sock.close
-                # in the destination side.
-                # Ignore the exception because it has nothing to do with
-                # an exception of XendCheckpoint.save.
-                pass
-            sock.close()
+            if not live:
+                try:
+                    sock.shutdown(2)
+                except:
+                    # Probably the socket is already disconnected by sock.close
+                    # in the destination side.
+                    # Ignore the exception because it has nothing to do with
+                    # an exception of XendCheckpoint.save.
+                    pass
+                sock.close()
 
     def domain_save(self, domid, dst, checkpoint=False):
         """Start saving a domain to file.
-- 
Miroslav Rezanina
Software Engineer - Virtualization Team - XEN kernel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [Xen-devel] Re: Do not wait for memory teardown when live migrate, Miroslav Rezanina <=