diff --git a/virtio-devices/src/block.rs b/virtio-devices/src/block.rs index 05e3bc3a2..84da8f0fa 100644 --- a/virtio-devices/src/block.rs +++ b/virtio-devices/src/block.rs @@ -444,8 +444,9 @@ impl VirtioDevice for Block { self.update_writeback(); let mut epoll_threads = Vec::new(); - for i in 0..self.common.queue_sizes.len() { + for i in 0..queues.len() { let queue_evt = queue_evts.remove(0); + let queue = queues.remove(0); let kill_evt = self .common .kill_evt @@ -467,7 +468,7 @@ impl VirtioDevice for Block { ActivateError::BadActivate })?; let mut handler = BlockEpollHandler { - queue: queues.remove(0), + queue, mem: mem.clone(), disk_image: self.disk_image.clone(), disk_nsectors: self.disk_nsectors, diff --git a/virtio-devices/src/block_io_uring.rs b/virtio-devices/src/block_io_uring.rs index 2d795cb2a..43653b7b2 100644 --- a/virtio-devices/src/block_io_uring.rs +++ b/virtio-devices/src/block_io_uring.rs @@ -493,9 +493,10 @@ impl VirtioDevice for BlockIoUring { self.update_writeback(); let mut epoll_threads = Vec::new(); - for i in 0..self.common.queue_sizes.len() { - let queue_size = self.common.queue_sizes[i] as usize; + for i in 0..queues.len() { let queue_evt = queue_evts.remove(0); + let queue = queues.remove(0); + let queue_size = queue.size; let io_uring = IoUring::new(queue_size as u32).map_err(|e| { error!("failed to create io_uring instance: {}", e); ActivateError::BadActivate @@ -522,7 +523,7 @@ impl VirtioDevice for BlockIoUring { })?; let mut handler = BlockIoUringEpollHandler { - queue: queues.remove(0), + queue, mem: mem.clone(), disk_image_fd: self.disk_image.as_raw_fd(), disk_nsectors: self.disk_nsectors, @@ -538,7 +539,7 @@ impl VirtioDevice for BlockIoUring { error!("failed to create io_uring eventfd: {}", e); ActivateError::BadActivate })?, - request_list: HashMap::with_capacity(queue_size), + request_list: HashMap::with_capacity(queue_size.into()), }; let paused = self.common.paused.clone();