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
|