X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fvhost_blk%2Fblk.c;h=d082ab3c94e58300f34caffc4e95ab03963de67d;hb=87ecdd9e7fbfe3d734a9f80c4f49b526835a57b4;hp=1b0b764b22f2f30465ac2b6a5b9e4c57e43b4679;hpb=c19beb3f38cd8463f87f01e1f5941a2a821b8ac6;p=dpdk.git diff --git a/examples/vhost_blk/blk.c b/examples/vhost_blk/blk.c index 1b0b764b22..d082ab3c94 100644 --- a/examples/vhost_blk/blk.c +++ b/examples/vhost_blk/blk.c @@ -15,7 +15,6 @@ #include #include -#include #include #include #include @@ -50,7 +49,10 @@ vhost_bdev_blk_readwrite(struct vhost_block_dev *bdev, offset = lba_512 * 512; - for (i = 0; i < task->iovs_cnt; i++) { + /* iovs[0] is the head and iovs[iovs_cnt - 1] is the tail + * Middle is the data range + */ + for (i = 1; i < task->iovs_cnt - 1; i++) { if (task->dxfer_dir == BLK_DIR_TO_DEV) memcpy(bdev->data + offset, task->iovs[i].iov_base, task->iovs[i].iov_len); @@ -68,7 +70,7 @@ int vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev, struct vhost_blk_task *task) { - int used_len; + size_t used_len; if (unlikely(task->data_len > (bdev->blockcnt * bdev->blocklen))) { fprintf(stderr, "read or write beyond capacity\n"); @@ -83,7 +85,7 @@ vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev, "%s - passed IO buffer is not multiple of 512b" "(req_idx = %"PRIu16").\n", task->req->type ? "WRITE" : "READ", - task->head_idx); + task->req_idx); return VIRTIO_BLK_S_UNSUPP; } @@ -98,14 +100,10 @@ vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev, "%s - passed IO buffer is not multiple of 512b" "(req_idx = %"PRIu16").\n", task->req->type ? "WRITE" : "READ", - task->head_idx); + task->req_idx); return VIRTIO_BLK_S_UNSUPP; } - if (task->readtype) { - fprintf(stderr, "type isn't right\n"); - return VIRTIO_BLK_S_IOERR; - } task->dxfer_dir = BLK_DIR_TO_DEV; vhost_bdev_blk_readwrite(bdev, task, task->req->sector, task->data_len); @@ -113,7 +111,7 @@ vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev, case VIRTIO_BLK_T_GET_ID: if (!task->iovs_cnt || task->data_len) return VIRTIO_BLK_S_UNSUPP; - used_len = min(VIRTIO_BLK_ID_BYTES, task->data_len); + used_len = RTE_MIN((size_t)VIRTIO_BLK_ID_BYTES, task->data_len); vhost_strcpy_pad(task->iovs[0].iov_base, bdev->product_name, used_len, ' '); break;