|
@@ -47,20 +47,20 @@ static void blk_done(struct virtqueue *vq)
|
|
|
|
|
|
spin_lock_irqsave(&vblk->lock, flags);
|
|
|
while ((vbr = vblk->vq->vq_ops->get_buf(vblk->vq, &len)) != NULL) {
|
|
|
- int uptodate;
|
|
|
+ int error;
|
|
|
switch (vbr->status) {
|
|
|
case VIRTIO_BLK_S_OK:
|
|
|
- uptodate = 1;
|
|
|
+ error = 0;
|
|
|
break;
|
|
|
case VIRTIO_BLK_S_UNSUPP:
|
|
|
- uptodate = -ENOTTY;
|
|
|
+ error = -ENOTTY;
|
|
|
break;
|
|
|
default:
|
|
|
- uptodate = 0;
|
|
|
+ error = -EIO;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- end_dequeued_request(vbr->req, uptodate);
|
|
|
+ __blk_end_request(vbr->req, error, blk_rq_bytes(vbr->req));
|
|
|
list_del(&vbr->list);
|
|
|
mempool_free(vbr, vblk->pool);
|
|
|
}
|