From c27d6df23334a27eea14ee807e9f54da9c50fea9 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Thu, 25 Feb 2021 19:24:34 +0100 Subject: [PATCH] vhost: Bump to latest version from upstream Moving to the latest version of the rust-vmm/vhost crate, before it gets published on crates.io. Signed-off-by: Sebastien Boeuf --- Cargo.lock | 2 +- fuzz/Cargo.lock | 2 +- vhost_user_backend/src/lib.rs | 4 ++-- virtio-devices/src/vhost_user/fs.rs | 24 +++++++++++++----------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee55bbd43..29c4df65a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1303,7 +1303,7 @@ dependencies = [ [[package]] name = "vhost" version = "0.1.0" -source = "git+https://github.com/rust-vmm/vhost?branch=master#8c6919bf60bd641398ddd53864fbc74d75548837" +source = "git+https://github.com/rust-vmm/vhost?branch=master#576694bcfb09e7c78d812ed07dbc5377d283852a" dependencies = [ "bitflags 1.2.1", "libc", diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 70d4f7b2d..152a3500c 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -692,7 +692,7 @@ dependencies = [ [[package]] name = "vhost" version = "0.1.0" -source = "git+https://github.com/rust-vmm/vhost?branch=master#8c6919bf60bd641398ddd53864fbc74d75548837" +source = "git+https://github.com/rust-vmm/vhost?branch=master#576694bcfb09e7c78d812ed07dbc5377d283852a" dependencies = [ "bitflags", "libc", diff --git a/vhost_user_backend/src/lib.rs b/vhost_user_backend/src/lib.rs index b2290bb47..59d7f53e3 100644 --- a/vhost_user_backend/src/lib.rs +++ b/vhost_user_backend/src/lib.rs @@ -21,7 +21,7 @@ use vhost::vhost_user::message::{ }; use vhost::vhost_user::{ Error as VhostUserError, Listener, Result as VhostUserResult, SlaveFsCacheReq, SlaveListener, - VhostUserSlaveReqHandler, + VhostUserSlaveReqHandlerMut, }; use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use vm_memory::guest_memory::FileOffset; @@ -544,7 +544,7 @@ impl VhostUserHandler { } } -impl VhostUserSlaveReqHandler for VhostUserHandler { +impl VhostUserSlaveReqHandlerMut for VhostUserHandler { fn set_owner(&mut self) -> VhostUserResult<()> { if self.owned { return Err(VhostUserError::InvalidOperation); diff --git a/virtio-devices/src/vhost_user/fs.rs b/virtio-devices/src/vhost_user/fs.rs index c9958824e..efbf50c3a 100644 --- a/virtio-devices/src/vhost_user/fs.rs +++ b/virtio-devices/src/vhost_user/fs.rs @@ -14,7 +14,7 @@ use seccomp::{SeccompAction, SeccompFilter}; use std::io; use std::os::unix::io::{AsRawFd, RawFd}; use std::result; -use std::sync::{Arc, Barrier, Mutex}; +use std::sync::{Arc, Barrier}; use std::thread; use vhost::vhost_user::message::{ VhostUserFSSlaveMsg, VhostUserFSSlaveMsgFlags, VhostUserProtocolFeatures, @@ -53,12 +53,12 @@ impl SlaveReqHandler { } impl VhostUserMasterReqHandler for SlaveReqHandler { - fn handle_config_change(&mut self) -> HandlerResult { + fn handle_config_change(&self) -> HandlerResult { debug!("handle_config_change"); Ok(0) } - fn fs_slave_map(&mut self, fs: &VhostUserFSSlaveMsg, fd: RawFd) -> HandlerResult { + fn fs_slave_map(&self, fs: &VhostUserFSSlaveMsg, fd: RawFd) -> HandlerResult { debug!("fs_slave_map"); for i in 0..VHOST_USER_FS_SLAVE_ENTRIES { @@ -98,7 +98,7 @@ impl VhostUserMasterReqHandler for SlaveReqHandler { Ok(0) } - fn fs_slave_unmap(&mut self, fs: &VhostUserFSSlaveMsg) -> HandlerResult { + fn fs_slave_unmap(&self, fs: &VhostUserFSSlaveMsg) -> HandlerResult { debug!("fs_slave_unmap"); for i in 0..VHOST_USER_FS_SLAVE_ENTRIES { @@ -139,7 +139,7 @@ impl VhostUserMasterReqHandler for SlaveReqHandler { Ok(0) } - fn fs_slave_sync(&mut self, fs: &VhostUserFSSlaveMsg) -> HandlerResult { + fn fs_slave_sync(&self, fs: &VhostUserFSSlaveMsg) -> HandlerResult { debug!("fs_slave_sync"); for i in 0..VHOST_USER_FS_SLAVE_ENTRIES { @@ -166,7 +166,7 @@ impl VhostUserMasterReqHandler for SlaveReqHandler { Ok(0) } - fn fs_slave_io(&mut self, fs: &VhostUserFSSlaveMsg, fd: RawFd) -> HandlerResult { + fn fs_slave_io(&self, fs: &VhostUserFSSlaveMsg, fd: RawFd) -> HandlerResult { debug!("fs_slave_io"); let mut done: u64 = 0; @@ -438,16 +438,18 @@ impl VirtioDevice for Fs { // Initialize slave communication. let slave_req_handler = if self.slave_req_support { if let Some(cache) = self.cache.as_ref() { - let vu_master_req_handler = Arc::new(Mutex::new(SlaveReqHandler { + let vu_master_req_handler = Arc::new(SlaveReqHandler { cache_offset: cache.0.addr, cache_size: cache.0.len, mmap_cache_addr: cache.0.host_addr, mem, - })); + }); - let req_handler = MasterReqHandler::new(vu_master_req_handler).map_err(|e| { - ActivateError::VhostUserSetup(Error::MasterReqHandlerCreation(e)) - })?; + let mut req_handler = + MasterReqHandler::new(vu_master_req_handler).map_err(|e| { + ActivateError::VhostUserSetup(Error::MasterReqHandlerCreation(e)) + })?; + req_handler.set_reply_ack_flag(true); self.vu .set_slave_request_fd(req_handler.get_tx_raw_fd()) .map_err(|e| {