From: Steven Smith Date: Tue, 30 Jun 2009 11:55:47 +0000 (+0100) Subject: patch CA-9002-blktap-plug X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=5b9917951e67ec3d52516cabdd37924b2b987766;p=people%2Fssmith%2Fnc2-2.6.27.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) {