From da7f31d4bcd5065147e0c1bf794093f812b4bfb1 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 11 Feb 2020 11:27:03 +0000 Subject: [PATCH] bin: vhost_user_fs: Port to new exit event strategy Rather than handling the KILL_EVENT in the event handler itself use the newly added support in VhostUserBackend for providing a kill event framework. Signed-off-by: Rob Bradford --- src/bin/vhost_user_fs.rs | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/bin/vhost_user_fs.rs b/src/bin/vhost_user_fs.rs index 3449ca19c..63b7db888 100644 --- a/src/bin/vhost_user_fs.rs +++ b/src/bin/vhost_user_fs.rs @@ -13,7 +13,6 @@ use clap::{App, Arg}; use epoll; use libc::EFD_NONBLOCK; use log::*; -use std::os::unix::io::AsRawFd; use std::sync::{Arc, RwLock}; use std::{convert, error, fmt, io, process}; @@ -165,16 +164,15 @@ impl VhostUserBackend for VhostUserFsBack let mut vring = vrings[1].write().unwrap(); self.process_queue(&mut vring)?; } - KILL_EVENT => { - debug!("KILL_EVENT"); - self.kill_evt.read().unwrap(); - return Ok(true); - } _ => return Err(Error::HandleEventUnknownEvent.into()), } Ok(false) } + + fn exit_event(&self) -> Option<(EventFd, Option)> { + Some((self.kill_evt.try_clone().unwrap(), Some(KILL_EVENT))) + } } fn main() { @@ -223,17 +221,6 @@ fn main() { ) .unwrap(); - let vring_worker = daemon.get_vring_worker(); - - if let Err(e) = vring_worker.register_listener( - fs_backend.read().unwrap().kill_evt.as_raw_fd(), - epoll::Events::EPOLLIN, - u64::from(KILL_EVENT), - ) { - error!("Failed to register listener for kill event: {:?}", e); - process::exit(1); - } - if let Err(e) = daemon.start() { error!("Failed to start daemon: {:?}", e); process::exit(1);