From 64c76693c4e27a1d66d773d2789d8bd7880e67fa Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Thu, 12 May 2022 15:28:21 +0200 Subject: [PATCH] virtio-devices: Clone Queue with method from vm-virtio Rely on the newly added helper from vm-virtio crate to keep cloning the list of Queue structures. Signed-off-by: Sebastien Boeuf --- virtio-devices/src/transport/pci_device.rs | 3 ++- virtio-devices/src/vhost_user/mod.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/virtio-devices/src/transport/pci_device.rs b/virtio-devices/src/transport/pci_device.rs index abfe03797..97b764bda 100644 --- a/virtio-devices/src/transport/pci_device.rs +++ b/virtio-devices/src/transport/pci_device.rs @@ -672,7 +672,8 @@ impl VirtioPciDevice { let mem = self.memory.as_ref().unwrap().clone(); let mut device = self.device.lock().unwrap(); let mut queue_evts = Vec::new(); - let mut queues = self.queues.clone(); + let mut queues: Vec>> = + self.queues.iter().map(vm_virtio::clone_queue).collect(); queues.retain(|q| q.state.ready); for (i, queue) in queues.iter().enumerate() { queue_evts.push(self.queue_evts[i].try_clone().unwrap()); diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index bf757a6ca..e3aac2dd1 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -224,7 +224,7 @@ impl VhostUserEpollHandler { vhost_user .reinitialize_vhost_user( self.mem.memory().deref(), - self.queues.clone(), + self.queues.iter().map(vm_virtio::clone_queue).collect(), self.queue_evts .iter() .map(|q| q.try_clone().unwrap()) @@ -324,7 +324,7 @@ impl VhostUserCommon { .unwrap() .setup_vhost_user( &mem.memory(), - queues.clone(), + queues.iter().map(vm_virtio::clone_queue).collect(), queue_evts.iter().map(|q| q.try_clone().unwrap()).collect(), &interrupt_cb, acked_features,