[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen-blkfront: check feature-persitent on resume
On 23/05/14 19:51, Konrad Rzeszutek Wilk wrote: > On Thu, May 22, 2014 at 04:40:07PM +0200, Roger Pau Monne wrote: >> We are missing a check to see if the backend supports persistent >> grants on resume, meaning we will always run with the value fetched >> from the firsts host on which we run on. >> >> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> >> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> >> Cc: David Vrabel <david.vrabel@xxxxxxxxxx> >> --- >> drivers/block/xen-blkfront.c | 23 ++++++++++++++++------- >> 1 files changed, 16 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c >> index efe1b47..00ae36b 100644 >> --- a/drivers/block/xen-blkfront.c >> +++ b/drivers/block/xen-blkfront.c >> @@ -1430,6 +1430,20 @@ static void split_bio_end(struct bio *bio, int error) >> bio_put(bio); >> } >> >> +static void blkfront_setup_persistent(struct blkfront_info *info) >> +{ >> + unsigned int persistent; >> + int err; >> + >> + err = xenbus_gather(XBT_NIL, info->xbdev->otherend, >> + "feature-persistent", "%u", &persistent, >> + NULL); >> + if (err) >> + info->feature_persistent = 0; >> + else >> + info->feature_persistent = persistent; >> +} >> + >> static int blkif_recover(struct blkfront_info *info) >> { >> int i; >> @@ -1456,6 +1470,7 @@ static int blkif_recover(struct blkfront_info *info) >> info->shadow_free = info->ring.req_prod_pvt; >> info->shadow[BLK_RING_SIZE-1].req.u.rw.id = 0x0fffffff; >> >> + blkfront_setup_persistent(info); >> rc = blkfront_setup_indirect(info); >> if (rc) { >> kfree(copy); >> @@ -1851,13 +1866,7 @@ static void blkfront_connect(struct blkfront_info >> *info) >> if (!err && discard) >> blkfront_setup_discard(info); >> >> - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, >> - "feature-persistent", "%u", &persistent, >> - NULL); >> - if (err) >> - info->feature_persistent = 0; >> - else >> - info->feature_persistent = persistent; >> + blkfront_setup_persistent(info); > > Should we also flush the ones that are on the info->grants list if > we turning it off? This path is only taken on the first connection, further calls to blkfront_connect from resume code don't get here, because they take the BLKIF_STATE_SUSPENDED path and just call blkif_recover and return. And on disconnection blkfront_connect doesn't even get called. Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |