[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [NET/BLK] back: Change the netback and blkback device drivers to allow
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxxx # Node ID 3fc16c39f15e78d1ab1b1abf82a26cb631f7fca5 # Parent cadf1df88d3e83b3c69100260880e0139b336b49 [NET/BLK] back: Change the netback and blkback device drivers to allow and handle frontend state transition from "Closing" to "Initialising". Instead of destroying the backend device then they wait for a reconnect from the frontend. Needed for domU kexec support, to hand over devices from one kernel instance to the next. Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxx> --- linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c | 5 +++++ linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff -r cadf1df88d3e -r 3fc16c39f15e linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c --- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Sat Aug 19 10:17:48 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Sat Aug 19 10:20:08 2006 +0100 @@ -305,6 +305,11 @@ static void frontend_changed(struct xenb switch (frontend_state) { case XenbusStateInitialising: + if (dev->state == XenbusStateClosing) { + printk("%s: %s: prepare for reconnect\n", + __FUNCTION__, dev->nodename); + xenbus_switch_state(dev, XenbusStateInitWait); + } break; case XenbusStateInitialised: diff -r cadf1df88d3e -r 3fc16c39f15e linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c --- a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c Sat Aug 19 10:17:48 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c Sat Aug 19 10:20:08 2006 +0100 @@ -234,10 +234,25 @@ static void frontend_changed(struct xenb switch (frontend_state) { case XenbusStateInitialising: + if (dev->state == XenbusStateClosing) { + printk("%s: %s: prepare for reconnect\n", + __FUNCTION__, dev->nodename); + if (be->netif) { + netif_disconnect(be->netif); + be->netif = NULL; + } + xenbus_switch_state(dev, XenbusStateInitWait); + } + break; + case XenbusStateInitialised: break; case XenbusStateConnected: + if (!be->netif) { + /* reconnect: setup be->netif */ + backend_changed(&be->backend_watch, NULL, 0); + } maybe_connect(be); break; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |