[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen-blkfront: check feature-persitent on resume
Ping? On 23/05/14 20:08, Roger Pau Monné wrote: > 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 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |