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. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html