[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [patch] fix xenbus race


  • To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Gerd Knorr <kraxel@xxxxxxx>
  • Date: Mon, 31 Oct 2005 15:16:05 +0100
  • Delivery-date: Mon, 31 Oct 2005 14:13:15 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

  Hi,

Watch events may get lost, the xenstored response races against the new watch being added to the watch list in register_xenbus_watch(). Fixed by adding the watch to the list unconditionally, and remove it in the error case.

That one fixes the network issues I'm seeing. Due to the race the "online" hotplug event for the vif backend was lost sometimes.

please apply,

  Gerd
diff -r 43676a509982 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c       Sun Oct 30 
18:23:36 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c       Mon Oct 31 
15:08:14 2005
@@ -682,14 +682,15 @@
 
        spin_lock(&watches_lock);
        BUG_ON(find_watch(token));
+       list_add(&watch->list, &watches);
        spin_unlock(&watches_lock);
 
        err = xs_watch(watch->node, token);
 
        /* Ignore errors due to multiple registration. */
-       if ((err == 0) || (err == -EEXIST)) {
+       if ((err != 0) && (err != -EEXIST)) {
                spin_lock(&watches_lock);
-               list_add(&watch->list, &watches);
+               list_del(&watch->list);
                spin_unlock(&watches_lock);
        }
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.