From: Steven Smith Date: Thu, 28 May 2009 10:54:19 +0000 (+0100) Subject: patch CA-9002-blktap-plug X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=652b52d2c10a3eaae1e13ea66aec6ad3f11a75f6;p=people%2Fssmith%2Fnc2-2.6.27.bak%2F.git patch CA-9002-blktap-plug --- diff --git a/drivers/xen/blktap/xenbus.c b/drivers/xen/blktap/xenbus.c index 1291d557..6b25526a 100644 --- a/drivers/xen/blktap/xenbus.c +++ b/drivers/xen/blktap/xenbus.c @@ -415,6 +415,10 @@ static void blktap_reconnect(struct backend_info *be) be->shutdown_signalled = 0; xenbus_switch_state(dev, XenbusStateInitWait); + + err = xenbus_write(XBT_NIL, be->nodename, "start-tapdisk", ""); + if (err) + xenbus_dev_fatal(be->dev, err, "restarting tapdisk"); } static void tap_update_blkif_status(blkif_t *blkif) @@ -517,6 +521,11 @@ static int blktap_probe(struct xenbus_device *dev, err = xenbus_switch_state(dev, XenbusStateInitWait); if (err) goto fail; + + err = xenbus_write(XBT_NIL, dev->nodename, "start-tapdisk", ""); + if (err) + goto fail; + return 0; fail: @@ -554,6 +563,12 @@ static void tap_backend_changed(struct xenbus_watch *watch, return; } + if (dev->state != XenbusStateInitWait) { + WPRINTK("%s: tapdisk ready, but blktap at %s\n", + __func__, xenbus_strstate(dev->state)); + return; + } + err = xenbus_gather(XBT_NIL, dev->nodename, "sectors", "%llu", &be->blkif->sectors, NULL); if (err) {