aboutsummaryrefslogtreecommitdiffstats
path: root/vhost_user_blk.c
diff options
context:
space:
mode:
Diffstat (limited to 'vhost_user_blk.c')
-rw-r--r--vhost_user_blk.c111
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));
}