[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xen-cvs
Subject:    [Xen-changelog] [xen-unstable] Merge
From:       Xen patchbot-unstable <patchbot-unstable () lists ! xensource ! com>
Date:       2006-06-30 19:20:15
Message-ID: E1FwOXI-00043U-Dx () xenbits ! xensource ! com
[Download RAW message or body]

# HG changeset patch
# User ack@localhost.localdomain
# Node ID 640d3bc77ea6ce6fb679da83f8c683978a05937c
# Parent  64f9f308e109dc7ec6b8964f093926bd4b8957d2
# Parent  f5a5f49935fda0bb613275c614fc7462bff75ba3
Merge
---
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c |   45 ++++++++---------
 1 files changed, 23 insertions(+), 22 deletions(-)

diff -r 64f9f308e109 -r 640d3bc77ea6 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c	Fri Jun 30 17:12:05 2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c	Fri Jun 30 17:12:31 2006 +0100
@@ -886,28 +886,18 @@ EXPORT_SYMBOL_GPL(unregister_xenstore_no
 EXPORT_SYMBOL_GPL(unregister_xenstore_notifier);
 
 
-static int all_devices_ready_(struct device *dev, void *data)
+static int find_disconnected_device_(struct device *dev, void *data)
 {
 	struct xenbus_device *xendev = to_xenbus_device(dev);
-	int *result = data;
-
-	if (xendev->state != XenbusStateConnected) {
-		*result = 0;
-		return 1;
-	}
-
-	return 0;
-}
-
-
-static int all_devices_ready(void)
-{
-	int ready = 1;
-	bus_for_each_dev(&xenbus_frontend.bus, NULL, &ready,
-			 all_devices_ready_);
-	return ready;
-}
-
+
+	return (xendev->state == XenbusStateConnected) ? 0 : 1;
+}
+
+static struct device *find_disconnected_device(struct device *start)
+{
+	return bus_find_device(&xenbus_frontend.bus, start, NULL,
+			       find_disconnected_device_);
+}
 
 void xenbus_probe(void *unused)
 {
@@ -1077,17 +1067,28 @@ static int __init wait_for_devices(void)
 static int __init wait_for_devices(void)
 {
 	unsigned long timeout = jiffies + 10*HZ;
+	struct device *dev = NULL;
+	struct xenbus_device *xendev;
 
 	if (!is_running_on_xen())
 		return -ENODEV;
 
 	while (time_before(jiffies, timeout)) {
-		if (all_devices_ready())
+		if ((dev = find_disconnected_device(NULL)) == NULL)
 			return 0;
+		put_device(dev);
 		schedule_timeout_interruptible(HZ/10);
 	}
 
-	printk(KERN_WARNING "XENBUS: Timeout connecting to devices!\n");
+	while (dev != NULL) {
+		xendev = to_xenbus_device(dev);
+
+		printk(KERN_WARNING "XENBUS: Timeout connecting to device: %s\n",
+		       xendev->nodename);
+
+		dev = find_disconnected_device(dev);
+	}
+
 	return 0;
 }
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic