On Thu, 2011-07-14 at 09:55 +0100, Joe Jin wrote: > On 07/14/11 16:13, Ian Campbell wrote: > > On Wed, 2011-07-13 at 01:47 +0100, Joe Jin wrote:
> > > > I'm wondering if we might not be better off deferring the disconnect on > > the backend side until the frontend enters XenbusStateClosed instead of > > doing it in closing. > > Yes this fix from backend side works too, also this looks reasonable than > fix in frontend. I guess there is either a missing "more" or "less" in that sentence ;-) The nice thing about a backend fix is that you don't need to go round propagating the fix into distros etc and updating existing deployed guests (not to mention non-Linux frontends). I actually thought blkback had something like this already in older "classic" Xen kernels but it seems like the patch never made it out of the XCP patch queue :-(. See http://xenbits.xen.org/hg/XCP/linux-2.6.32.pq.hg/file/tip/CA-7672-blkback-shutdown.patch (which appears to also incorporate a toolstack directed graceful shutdown of some sort as well as deferring the device close). Daniel, do you know of any plans to extricate that stuff from the XCP patch queue for upstream? Are there any other patches (e.g. incremental fixes) in that pq which should go along with it? Ian. > > Konrad, any advice? > > Thanks, > Joe > > > > > Ian > > > >> > >> Signed-off-by: Joe Jin <joe....@oracle.com> > >> Signed-off-by: Annie Li <annie...@oracle.com> > >> Reviewed-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com> > >> Cc: Jens Axboe <jax...@fusionio.com> > >> Cc: sta...@kernel.org > >> > >> --- > >> xen-blkfront.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c > >> index b536a9c..f6d8ac2 100644 > >> --- a/drivers/block/xen-blkfront.c > >> +++ b/drivers/block/xen-blkfront.c > >> @@ -1088,7 +1088,7 @@ blkfront_closing(struct blkfront_info *info) > >> if (bdev->bd_openers) { > >> xenbus_dev_error(xbdev, -EBUSY, > >> "Device in use; refusing to close"); > >> - xenbus_switch_state(xbdev, XenbusStateClosing); > >> + xbdev->state = XenbusStateClosing; > >> } else { > >> xlvbd_release_gendisk(info); > >> xenbus_frontend_closed(xbdev); > > > > > > _______________________________________________ stable mailing list stable@linux.kernel.org http://linux.kernel.org/mailman/listinfo/stable