[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] blkfront:finish requests in io-ring with EIO
On Tue, Apr 01, 2014 at 04:25:12PM +0800, Gordon Gong wrote: > Subject: [PATCH] blkfront:finished the requests in io-ring with EIO to avoid > stucking with state of D. How do you get to this state? > > The sequence of xenwatch of blkfront and xenbus_frontend, when the > tdb path of backend is gone, desided that the backend closing-> > frontend closing->backend closed->frontend closed normaly or remove > started by xenbus. > --- > drivers/block/xen-blkfront.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c > index 9ea8c25..6582592 100644 > --- a/drivers/block/xen-blkfront.c > +++ b/drivers/block/xen-blkfront.c > @@ -653,6 +653,26 @@ static void blkif_restart_queue(struct work_struct > *work) > spin_unlock_irq(&blkif_io_lock); > } > > +static void finish_requests_sync(struct blkfront_info *info) > +{ > + RING_IDX rc, rp; > + struct blkif_request *ring_req; > + struct request *req; > + > + rc = (info->ring.sring)->req_prod; > + rp = info->ring.req_prod_pvt; > + > + while(rc != cp) { > + unsigned long id; > + > + ring_req = RING_GET_REQUEST(&info->ring, rc); > + id = ring_req->id; > + req = info->shadow[id].request; > + __blk_end_srequest_all(req, -EIO); > + rc++; > + } Something is off with your editor. You should use tabs. > +} > + > static void blkif_free(struct blkfront_info *info, int suspend) > { > /* Prevent new requests being issued until we fix things up. */ > @@ -664,6 +684,9 @@ static void blkif_free(struct blkfront_info *info, int > suspend) > blk_stop_queue(info->rq); > /* No more gnttab callback work. */ > gnttab_cancel_free_callback(&info->callback); > + /* Finished request in io-ring with EIO */ > + finish_requests_sync(info); > + > spin_unlock_irq(&blkif_io_lock); > > /* Flush gnttab callback work. Must be done with no locks held. */ > -- > 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |