From ec8c2208073558b4cf3d471067c3be231d4bd4b0 Mon Sep 17 00:00:00 2001 From: Stefano Garzarella Date: Mon, 25 Oct 2021 18:13:44 +0200 Subject: [PATCH] Bump virtio-queue from `6013dd9` to `66cda80` Commit 66cda80 ("Update vm-memory requirement from 0.6 to 0.7") is required to build this crate with vm-memory v0.7 There were API changes since commit 6013dd9, so let's update code and tests. Signed-off-by: Stefano Garzarella --- Cargo.toml | 2 +- src/handler.rs | 2 +- src/vring.rs | 35 ++++++++++++++++++++++------------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index be5c95e..f69c592 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ libc = ">=0.2.39" log = ">=0.4.6" vhost = { version = "0.2", features = ["vhost-user-slave"] } virtio-bindings = "0.1" -virtio-queue = { git = "https://github.com/rust-vmm/vm-virtio", rev = "6013dd9" } +virtio-queue = { git = "https://github.com/rust-vmm/vm-virtio", rev = "66cda80" } vm-memory = {version = "0.7", features = ["backend-mmap", "backend-atomic"]} vmm-sys-util = "0.9" diff --git a/src/handler.rs b/src/handler.rs index 889e959..e7f84b5 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -182,7 +182,7 @@ where // If the vring wasn't initialized and we already have an EventFd for // both VRING_KICK and VRING_CALL, initialize it now. - !vring_state.get_queue().ready + !vring_state.get_queue().ready() && vring_state.get_call().is_some() && vring_state.get_kick().is_some() } diff --git a/src/vring.rs b/src/vring.rs index 39aecee..0207e82 100644 --- a/src/vring.rs +++ b/src/vring.rs @@ -192,9 +192,9 @@ impl VringState { /// Set queue addresses for descriptor table, available ring and used ring. pub fn set_queue_info(&mut self, desc_table: u64, avail_ring: u64, used_ring: u64) { - self.queue.desc_table = GuestAddress(desc_table); - self.queue.avail_ring = GuestAddress(avail_ring); - self.queue.used_ring = GuestAddress(used_ring); + self.queue.state.desc_table = GuestAddress(desc_table); + self.queue.state.avail_ring = GuestAddress(avail_ring); + self.queue.state.used_ring = GuestAddress(used_ring); } /// Get queue next avail head. @@ -209,7 +209,7 @@ impl VringState { /// Set configured queue size. fn set_queue_size(&mut self, num: u16) { - self.queue.size = num; + self.queue.set_size(num); } /// Enable/disable queue event index feature. @@ -219,7 +219,7 @@ impl VringState { /// Set queue enabled state. fn set_queue_ready(&mut self, ready: bool) { - self.queue.ready = ready; + self.queue.set_ready(ready); } /// Get the `EventFd` for kick. @@ -468,29 +468,38 @@ mod tests { assert!(vring.get_ref().get_kick().is_none()); assert_eq!(vring.get_ref().enabled, false); - assert_eq!(vring.lock().queue.ready, false); - assert_eq!(vring.lock().queue.event_idx_enabled, false); + assert_eq!(vring.lock().queue.ready(), false); + assert_eq!(vring.lock().queue.state.event_idx_enabled, false); vring.set_enabled(true); assert_eq!(vring.get_ref().enabled, true); vring.set_queue_info(0x100100, 0x100200, 0x100300); - assert_eq!(vring.lock().get_queue().desc_table, GuestAddress(0x100100)); - assert_eq!(vring.lock().get_queue().avail_ring, GuestAddress(0x100200)); - assert_eq!(vring.lock().get_queue().used_ring, GuestAddress(0x100300)); + assert_eq!( + vring.lock().get_queue().state.desc_table, + GuestAddress(0x100100) + ); + assert_eq!( + vring.lock().get_queue().state.avail_ring, + GuestAddress(0x100200) + ); + assert_eq!( + vring.lock().get_queue().state.used_ring, + GuestAddress(0x100300) + ); assert_eq!(vring.queue_next_avail(), 0); vring.set_queue_next_avail(0x20); assert_eq!(vring.queue_next_avail(), 0x20); vring.set_queue_size(0x200); - assert_eq!(vring.lock().queue.size, 0x200); + assert_eq!(vring.lock().queue.actual_size(), 0x200); vring.set_queue_event_idx(true); - assert_eq!(vring.lock().queue.event_idx_enabled, true); + assert_eq!(vring.lock().queue.state.event_idx_enabled, true); vring.set_queue_ready(true); - assert_eq!(vring.lock().queue.ready, true); + assert_eq!(vring.lock().queue.ready(), true); } #[test]