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

[Xen-devel] [PATCH] Fix for missing response to XS_UNWATCH request.



With this patch, Dom0 clients can do "unwatch" properly through the
kernel's xenbus connection.

Cheers,
Magnus
# HG changeset patch
# User Magnus Carlsson <magnus@xxxxxxxxxx>
# Date 1174512701 25200
# Node ID 001a9729e8f7a6c0da128a7f9586f9a304e17cab
# Parent  3fd9b0c71b8c687b108a8bf671c9c4fc47046a0a
Fix for missing response to XS_UNWATCH request.

diff -r 3fd9b0c71b8c -r 001a9729e8f7 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c      Tue Mar 20 
17:36:18 2007 +0000
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_dev.c      Wed Mar 21 
14:31:41 2007 -0700
@@ -246,9 +246,6 @@ static ssize_t xenbus_dev_write(struct f
                token++;
 
                if (msg_type == XS_WATCH) {
-                       static const char * XS_WATCH_RESP = "OK";
-                       struct xsd_sockmsg hdr;
-
                        watch = kmalloc(sizeof(*watch), GFP_KERNEL);
                        watch->watch.node = kmalloc(strlen(path)+1,
                                                     GFP_KERNEL);
@@ -266,11 +263,6 @@ static ssize_t xenbus_dev_write(struct f
                        }
                        
                        list_add(&watch->list, &u->watches);
-
-                       hdr.type = XS_WATCH;
-                       hdr.len = strlen(XS_WATCH_RESP) + 1;
-                       queue_reply(u, (char *)&hdr, sizeof(hdr));
-                       queue_reply(u, (char *)XS_WATCH_RESP, hdr.len);
                } else {
                        list_for_each_entry_safe(watch, tmp_watch,
                                                  &u->watches, list) {
@@ -284,6 +276,14 @@ static ssize_t xenbus_dev_write(struct f
                                }
                        }
                }
+               {
+                       static const char * XS_RESP = "OK";
+                       struct xsd_sockmsg hdr;
+                       hdr.type = msg_type;
+                       hdr.len = strlen(XS_RESP) + 1;
+                       queue_reply(u, (char *)&hdr, sizeof(hdr));
+                       queue_reply(u, (char *)XS_RESP, hdr.len);
+               }
 
                break;
 
_______________________________________________
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®.