diff options
Diffstat (limited to 'vhost_user_blk.c')
-rw-r--r-- | vhost_user_blk.c | 111 |
1 files changed, 49 insertions, 62 deletions
diff --git a/vhost_user_blk.c b/vhost_user_blk.c index bc79557..084710b 100644 --- a/vhost_user_blk.c +++ b/vhost_user_blk.c @@ -76,6 +76,7 @@ static int vhost_user_blk_start(VirtIODevice *vdev) } s->vhost_dev->acked_features = vdev->guest_features; + DBG("acked_features: 0x%lx\n", vdev->guest_features); /* FIXME: We might do not need that */ ret = vhost_dev_prepare_inflight(s->vhost_dev, vdev); @@ -140,7 +141,6 @@ static int vhost_user_blk_handle_config_change(struct vhost_dev *dev) ret = vhost_dev_get_config(dev, (uint8_t *)&blkcfg, sizeof(struct virtio_blk_config)); if (ret < 0) { - DBG("vhost_dev_get_config\n"); return ret; } @@ -227,8 +227,10 @@ static int vhost_user_blk_connect(VirtIODevice *vdev) /* Pass the new obtained features */ global_vdev->host_features = s->vhost_dev->features; - /* Disable VIRTIO_RING_F_INDIRECT_DESC, to be supported in future release */ - global_vdev->host_features &= ~(1ULL << VIRTIO_RING_F_INDIRECT_DESC); + /* + * The next line disables VIRTIO_RING_F_INDIRECT_DESC: + * global_vdev->host_features &= ~(1ULL << VIRTIO_RING_F_INDIRECT_DESC); + */ DBG("After init global_vdev->host_features: 0x%lx\n", global_vdev->host_features); @@ -323,14 +325,6 @@ static void vhost_user_blk_set_config(VirtIODevice *vdev, const uint8_t *config) DBG("vhost_user_blk_set_config(...)\n"); - - /* - * TODO: Disabled for the current release - * if (blkcfg->wce == s->blkcfg.wce) { - * DBG("blkcfg->wce == s->blkcfg.wce\n"); - * return; - * } - */ if (blkcfg->wce == s->blkcfg.wce) { DBG("blkcfg->wce == s->blkcfg.wce\n"); return; @@ -383,6 +377,48 @@ static void vhost_user_blk_set_status(VirtIODevice *vdev, uint8_t status) DBG("vhost_user_blk_set_status return successfully\n"); } +static void print_config_blk(uint8_t *config_data) +{ + struct virtio_blk_config *config_strct = + (struct virtio_blk_config *)config_data; + + DBG("uint64_t capacity: %llu\n", config_strct->capacity); + DBG("uint32_t size_max: %u\n", config_strct->size_max); + DBG("uint32_t seg_max: %u\n", config_strct->seg_max); + + DBG("virtio_blk_geometry:\n"); + DBG(" uint16_t cylinders: %u\n", + config_strct->geometry.cylinders); + DBG(" uint8_t heads: %u\n", + config_strct->geometry.heads); + DBG(" uint8_t sectors: %u\n", + config_strct->geometry.sectors); + + DBG("uint32_t blk_size: %u\n", config_strct->blk_size); + DBG("uint8_t physical_block_exp: %u\n", + config_strct->physical_block_exp); + DBG("uint8_t alignment_offset: %u\n", + config_strct->alignment_offset); + DBG("uint16_t min_io_size: %u\n", config_strct->min_io_size); + DBG("uint32_t opt_io_size: %u\n", config_strct->opt_io_size); + DBG("uint8_t wce: %u\n", config_strct->wce); + DBG("uint8_t unused: %u\n", config_strct->unused); + DBG("uint16_t num_queues: %u\n", config_strct->num_queues); + DBG("uint32_t max_discard_sectors: %u\n", + config_strct->max_discard_sectors); + DBG("uint32_t max_discard_seg: %u\n", config_strct->max_discard_seg); + DBG("uint32_t discard_sector_alignment: %u\n", + config_strct->discard_sector_alignment); + DBG("uint32_t max_write_zeroes_sectors: %u\n", + config_strct->max_write_zeroes_sectors); + DBG("uint32_t max_write_zeroes_seg: %u\n", + config_strct->max_write_zeroes_seg); + DBG("uint8_t write_zeroes_may_unmap: %u\n", + config_strct->write_zeroes_may_unmap); + DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[0]); + DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[1]); + DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[2]); +} static void virtio_dev_class_init(VirtIODevice *vdev) { @@ -398,9 +434,9 @@ static void virtio_dev_class_init(VirtIODevice *vdev) vdev->vdev_class->set_status = vhost_user_blk_set_status; vdev->vdev_class->reset = vhost_user_blk_reset; vdev->vdev_class->update_mem_table = update_mem_table; + vdev->vdev_class->print_config = print_config_blk; } - void vhost_user_blk_init(VirtIODevice *vdev) { @@ -417,7 +453,6 @@ void vhost_user_blk_init(VirtIODevice *vdev) virtio_loopback_bus_init(vdev->vbus); } - static void vhost_user_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq) { /* @@ -427,49 +462,6 @@ static void vhost_user_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq) DBG("vhost_user_blk_handle_output not yet implemented\n"); } - -void print_config(uint8_t *config) -{ - struct virtio_blk_config *config_strct = (struct virtio_blk_config *)config; - - DBG("uint64_t capacity: %llu\n", config_strct->capacity); - DBG("uint32_t size_max: %u\n", config_strct->size_max); - DBG("uint32_t seg_max: %u\n", config_strct->seg_max); - - DBG("virtio_blk_geometry:\n"); - DBG(" uint16_t cylinders: %u\n", - config_strct->geometry.cylinders); - DBG(" uint8_t heads: %u\n", - config_strct->geometry.heads); - DBG(" uint8_t sectors: %u\n", - config_strct->geometry.sectors); - - DBG("uint32_t blk_size: %u\n", config_strct->blk_size); - DBG("uint8_t physical_block_exp: %u\n", - config_strct->physical_block_exp); - DBG("uint8_t alignment_offset: %u\n", - config_strct->alignment_offset); - DBG("uint16_t min_io_size: %u\n", config_strct->min_io_size); - DBG("uint32_t opt_io_size: %u\n", config_strct->opt_io_size); - DBG("uint8_t wce: %u\n", config_strct->wce); - DBG("uint8_t unused: %u\n", config_strct->unused); - DBG("uint16_t num_queues: %u\n", config_strct->num_queues); - DBG("uint32_t max_discard_sectors: %u\n", - config_strct->max_discard_sectors); - DBG("uint32_t max_discard_seg: %u\n", config_strct->max_discard_seg); - DBG("uint32_t discard_sector_alignment: %u\n", - config_strct->discard_sector_alignment); - DBG("uint32_t max_write_zeroes_sectors: %u\n", - config_strct->max_write_zeroes_sectors); - DBG("uint32_t max_write_zeroes_seg: %u\n", - config_strct->max_write_zeroes_seg); - DBG("uint8_t write_zeroes_may_unmap: %u\n", - config_strct->write_zeroes_may_unmap); - DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[0]); - DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[1]); - DBG("uint8_t unused1[3]: %u\n", config_strct->unused1[2]); -} - void vhost_user_blk_realize(int queue_num, int queue_size) { int retries; @@ -491,10 +483,8 @@ void vhost_user_blk_realize(int queue_num, int queue_size) global_vdev->vhublk->config_wce = 1; - /* FIXME: We temporarily hardcoded the vrtqueues number */ global_vdev->vhublk->num_queues = queue_num; - /* FIXME: We temporarily hardcoded the vrtqueues size */ global_vdev->vhublk->queue_size = queue_size; /* NOTE: global_vdev->vqs == vhublk->virtqs */ @@ -525,9 +515,6 @@ void vhost_user_blk_realize(int queue_num, int queue_size) DBG("final global_vdev->host_features: 0x%lx\n", global_vdev->host_features); - print_config((uint8_t *)(&global_vdev->vhublk->blkcfg)); - - return; - + print_config_blk((uint8_t *)(&global_vdev->vhublk->blkcfg)); } |