From 39083d705b5343359d2a83572eb1b0134a446ab6 Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 11 Sep 2019 11:22:48 +0800 Subject: [PATCH] vhost-user-blk: make read_config work Since config space in vhost-user-blk are mostly from backend device, this change will get config space info from backend by vhost-user protocol. Signed-off-by: Yang Zhong --- vm-virtio/src/vhost_user/blk.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/vm-virtio/src/vhost_user/blk.rs b/vm-virtio/src/vhost_user/blk.rs index 9e2ba2ac5..e317bf076 100644 --- a/vm-virtio/src/vhost_user/blk.rs +++ b/vm-virtio/src/vhost_user/blk.rs @@ -94,11 +94,22 @@ impl<'a> Blk { } let config_len = mem::size_of::(); - let mut config_space: Vec = vec![0u8; config_len as usize]; + let config_space: Vec = vec![0u8; config_len as usize]; + + let (_, mut config_space) = vhost_user_blk + .get_config( + 0, + config_len as u32, + VhostUserConfigFlags::WRITABLE, + config_space.as_slice(), + ) + .unwrap(); let queue_num_offset = offset_of!(virtio_blk_config, num_queues); - // only setnum_queues value. - config_space[queue_num_offset] = vu_cfg.num_queues as u8; + // Only set num_queues value(u16). + let num_queues_slice = (vu_cfg.num_queues as u16).to_le_bytes(); + config_space[queue_num_offset..queue_num_offset + mem::size_of::()] + .copy_from_slice(&num_queues_slice); Ok(Blk { vhost_user_blk,