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

[Xen-devel] [PATCH] xenconsoled: ignore spurious watch event

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] xenconsoled: ignore spurious watch event
From: John Levon <levon@xxxxxxxxxxxxxxxxx>
Date: Fri, 9 Feb 2007 14:13:22 +0000
Delivery-date: Fri, 09 Feb 2007 06:10:45 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.9i
# HG changeset patch
# User max.zhen@xxxxxxx
# Date 1171024588 28800
# Node ID a2d15838ea72ee049d8a657e9ecd406b5c6cb53e
# Parent  d609929f140809ec1c9a059f2eeaffb7ce56c891
Xenconsoled should ignore spurious watch event.  Otherwise, xenconsoled could
bind to a dying domU during its suspending and cause complaint from Xen:
(XEN) event_channel.c:177:d0 EVTCHNOP failure: domain 0, error -22, line 177

Signed-off-by: Max Zhen <max.zhen@xxxxxxx>

diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
--- a/tools/console/daemon/io.c
+++ b/tools/console/daemon/io.c
@@ -63,6 +63,7 @@ struct domain
        char *conspath;
        int ring_ref;
        evtchn_port_t local_port;
+       evtchn_port_t remote_port;
        int xce_handle;
        struct xencons_interface *interface;
 };
@@ -234,6 +235,9 @@ static int domain_create_ring(struct dom
        if (err)
                goto out;
 
+       if ((ring_ref == dom->ring_ref) && (remote_port == dom->remote_port))
+               goto out;
+
        if (ring_ref != dom->ring_ref) {
                if (dom->interface != NULL)
                        munmap(dom->interface, getpagesize());
@@ -249,6 +253,7 @@ static int domain_create_ring(struct dom
        }
 
        dom->local_port = -1;
+       dom->remote_port = -1;
        if (dom->xce_handle != -1)
                xc_evtchn_close(dom->xce_handle);
 
@@ -270,6 +275,7 @@ static int domain_create_ring(struct dom
                goto out;
        }
        dom->local_port = rc;
+       dom->remote_port = remote_port;
 
        if (dom->tty_fd == -1) {
                dom->tty_fd = domain_create_tty(dom);
@@ -279,6 +285,7 @@ static int domain_create_ring(struct dom
                        xc_evtchn_close(dom->xce_handle);
                        dom->xce_handle = -1;
                        dom->local_port = -1;
+                       dom->remote_port = -1;
                        goto out;
                }
        }
@@ -336,6 +343,7 @@ static struct domain *create_domain(int 
 
        dom->ring_ref = -1;
        dom->local_port = -1;
+       dom->remote_port = -1;
        dom->interface = NULL;
        dom->xce_handle = -1;
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] xenconsoled: ignore spurious watch event, John Levon <=