if (task->dxfer_dir == BLK_DIR_TO_DEV)
memcpy(bdev->data + offset, task->iovs[i].iov_base,
task->iovs[i].iov_len);
if (task->dxfer_dir == BLK_DIR_TO_DEV)
memcpy(bdev->data + offset, task->iovs[i].iov_base,
task->iovs[i].iov_len);
vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev,
struct vhost_blk_task *task)
{
vhost_bdev_process_blk_commands(struct vhost_block_dev *bdev,
struct vhost_blk_task *task)
{
if (unlikely(task->data_len > (bdev->blockcnt * bdev->blocklen))) {
fprintf(stderr, "read or write beyond capacity\n");
if (unlikely(task->data_len > (bdev->blockcnt * bdev->blocklen))) {
fprintf(stderr, "read or write beyond capacity\n");
"%s - passed IO buffer is not multiple of 512b"
"(req_idx = %"PRIu16").\n",
task->req->type ? "WRITE" : "READ",
"%s - passed IO buffer is not multiple of 512b"
"(req_idx = %"PRIu16").\n",
task->req->type ? "WRITE" : "READ",
"%s - passed IO buffer is not multiple of 512b"
"(req_idx = %"PRIu16").\n",
task->req->type ? "WRITE" : "READ",
"%s - passed IO buffer is not multiple of 512b"
"(req_idx = %"PRIu16").\n",
task->req->type ? "WRITE" : "READ",
task->dxfer_dir = BLK_DIR_TO_DEV;
vhost_bdev_blk_readwrite(bdev, task,
task->req->sector, task->data_len);
task->dxfer_dir = BLK_DIR_TO_DEV;
vhost_bdev_blk_readwrite(bdev, task,
task->req->sector, task->data_len);
case VIRTIO_BLK_T_GET_ID:
if (!task->iovs_cnt || task->data_len)
return VIRTIO_BLK_S_UNSUPP;
case VIRTIO_BLK_T_GET_ID:
if (!task->iovs_cnt || task->data_len)
return VIRTIO_BLK_S_UNSUPP;
vhost_strcpy_pad(task->iovs[0].iov_base,
bdev->product_name, used_len, ' ');
break;
vhost_strcpy_pad(task->iovs[0].iov_base,
bdev->product_name, used_len, ' ');
break;