On Thu, May 3, 2012 at 4:19 AM, Asias He <asias@xxxxxxxxxx> wrote: > @@ -190,6 +194,7 @@ static void do_virtblk_request(struct request_queue *q) > > while ((req = blk_peek_request(q)) != NULL) { > BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems); > + vblk->req_in_flight++; > > /* If this request fails, stop queue and wait for something to > finish to restart it. */ This is being increased before we know if the request will actually be sent, so if do_req() fails afterwards, req_in_flight would be increased but the request will never be sent. Which means we won't be able to unplug the device ever. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization