aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-11-23 07:21:58 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-11-23 07:21:58 +0000
commit375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca (patch)
tree6c20d4c3f67b410e73c99e11bc19ad0855617b38 /extras
parent995380cd80da7a5385e06d2ff0798b48cff64c15 (diff)
downloadxen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.tar.gz
xen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.tar.bz2
xen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.zip
minios: Fix xenbus_unwatch_path calls
In a lot of places in MiniOS frontends, xenbus_watch_path_token is used instead of xenbus_watch_path to get more precise wake ups. To free those, xenbus_unwatch_path_token has to be used instead of xenbus_unwatch_path, else the unwatch operation will fail. This fixes spurious watch events left by pv-grub. Signed-Off-By: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'extras')
-rw-r--r--extras/mini-os/blkfront.c4
-rw-r--r--extras/mini-os/console/xencons_ring.c2
-rw-r--r--extras/mini-os/fbfront.c12
-rw-r--r--extras/mini-os/fs-front.c2
-rw-r--r--extras/mini-os/netfront.c4
-rw-r--r--extras/mini-os/pcifront.c6
6 files changed, 15 insertions, 15 deletions
diff --git a/extras/mini-os/blkfront.c b/extras/mini-os/blkfront.c
index a451e98f02..2d4f03b1a5 100644
--- a/extras/mini-os/blkfront.c
+++ b/extras/mini-os/blkfront.c
@@ -208,7 +208,7 @@ done:
msg = xenbus_wait_for_state_change(path, &state, &dev->events);
if (msg != NULL || state != XenbusStateConnected) {
printk("backend not available, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
@@ -286,7 +286,7 @@ void shutdown_blkfront(struct blkfront_dev *dev)
err = xenbus_wait_for_state_change(path, &state, &dev->events);
close:
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
snprintf(path, sizeof(path), "%s/ring-ref", nodename);
xenbus_rm(XBT_NIL, path);
diff --git a/extras/mini-os/console/xencons_ring.c b/extras/mini-os/console/xencons_ring.c
index 3bb408f70a..ad385b43f4 100644
--- a/extras/mini-os/console/xencons_ring.c
+++ b/extras/mini-os/console/xencons_ring.c
@@ -312,7 +312,7 @@ done:
msg = xenbus_wait_for_state_change(path, &state, &dev->events);
if (msg != NULL || state != XenbusStateConnected) {
printk("backend not available, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
}
diff --git a/extras/mini-os/fbfront.c b/extras/mini-os/fbfront.c
index 8cf1721975..d06b5351ab 100644
--- a/extras/mini-os/fbfront.c
+++ b/extras/mini-os/fbfront.c
@@ -165,7 +165,7 @@ done:
err = xenbus_wait_for_state_change(path, &state, &dev->events);
if (state != XenbusStateConnected) {
printk("backend not available, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
@@ -175,7 +175,7 @@ done:
if((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected))
!= NULL) {
printk("error switching state: %s\n", err);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
}
@@ -265,7 +265,7 @@ void shutdown_kbdfront(struct kbdfront_dev *dev)
//xenbus_wait_for_value(path, "2", &dev->events);
close_kbdfront:
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
snprintf(path, sizeof(path), "%s/page-ref", nodename);
xenbus_rm(XBT_NIL, path);
@@ -513,7 +513,7 @@ done:
err = xenbus_wait_for_state_change(path, &state, &dev->events);
if (state != XenbusStateConnected) {
printk("backend not available, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
@@ -526,7 +526,7 @@ done:
if ((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected))
!= NULL) {
printk("error switching state: %s\n", err);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
}
@@ -644,7 +644,7 @@ void shutdown_fbfront(struct fbfront_dev *dev)
//xenbus_wait_for_value(path, "2", &dev->events);
close_fbfront:
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
snprintf(path, sizeof(path), "%s/page-ref", nodename);
xenbus_rm(XBT_NIL, path);
diff --git a/extras/mini-os/fs-front.c b/extras/mini-os/fs-front.c
index dd664caebc..59b240440b 100644
--- a/extras/mini-os/fs-front.c
+++ b/extras/mini-os/fs-front.c
@@ -1190,7 +1190,7 @@ done:
/* The token will not be unique if multiple imports are inited */
xenbus_watch_path_token(XBT_NIL, r_nodename, r_nodename, &events);
xenbus_wait_for_value(r_nodename, STATE_READY, &events);
- xenbus_unwatch_path(XBT_NIL, r_nodename);
+ xenbus_unwatch_path_token(XBT_NIL, r_nodename, r_nodename);
printk("Backend ready.\n");
//create_thread("fs-tester", test_fs_import, import);
diff --git a/extras/mini-os/netfront.c b/extras/mini-os/netfront.c
index fd1a315b77..2e2ff9c3aa 100644
--- a/extras/mini-os/netfront.c
+++ b/extras/mini-os/netfront.c
@@ -452,7 +452,7 @@ done:
err = xenbus_wait_for_state_change(path, &state, &dev->events);
if (state != XenbusStateConnected) {
printk("backend not avalable, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
@@ -542,7 +542,7 @@ void shutdown_netfront(struct netfront_dev *dev)
err = xenbus_wait_for_state_change(path, &state, &dev->events);
close:
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
snprintf(path, sizeof(path), "%s/tx-ring-ref", nodename);
xenbus_rm(XBT_NIL, path);
diff --git a/extras/mini-os/pcifront.c b/extras/mini-os/pcifront.c
index 718abf1d73..b9be949363 100644
--- a/extras/mini-os/pcifront.c
+++ b/extras/mini-os/pcifront.c
@@ -246,7 +246,7 @@ done:
err = xenbus_wait_for_state_change(path, &state, &dev->events);
if (state != XenbusStateConnected) {
printk("backend not avalable, state=%d\n", state);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
@@ -254,7 +254,7 @@ done:
if ((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected))
!= NULL) {
printk("error switching state %s\n", err);
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
}
@@ -362,7 +362,7 @@ void shutdown_pcifront(struct pcifront_dev *dev)
err = xenbus_wait_for_state_change(path, &state, &dev->events);
close_pcifront:
- xenbus_unwatch_path(XBT_NIL, path);
+ xenbus_unwatch_path_token(XBT_NIL, path, path);
snprintf(path, sizeof(path), "%s/info-ref", nodename);
xenbus_rm(XBT_NIL, path);