On 01/11/2010 03:11 PM, Christoph Hellwig wrote:
FYI below is the manually applied patch without all the wrapping:
  static void virtio_blk_req_complete(VirtIOBlockReq *req, int status)
  {
      VirtIOBlock *s = req->dev;
@@ -95,6 +98,12 @@ static void virtio_blk_req_complete(Virt
      virtqueue_push(s->vq,&req->elem, req->qiov.size + sizeof(*req->in));
      virtio_notify(&s->vdev, s->vq);

+    if (--s->pending == 0) {
+        virtio_queue_set_notification(s->vq, 1);
+        virtio_blk_handle_output(&s->vdev, s->vq);
+    }
+

As Dor points out, the call to virtio_blk_handle_output() wants to be before the test for pending, so we scan the ring as early as possible

--
error compiling committee.c: too many arguments to function



Reply via email to