diff --git a/vmm/src/console_devices.rs b/vmm/src/console_devices.rs index e48dc311e..cdadf1e95 100644 --- a/vmm/src/console_devices.rs +++ b/vmm/src/console_devices.rs @@ -183,14 +183,14 @@ pub(crate) fn pre_create_console_devices(vmm: &mut Vmm) -> ConsoleDeviceResult { // Duplicating the file descriptors like this is needed as otherwise @@ -206,14 +206,14 @@ pub(crate) fn pre_create_console_devices(vmm: &mut Vmm) -> ConsoleDeviceResult ConsoleDeviceResult, - console_resize_pipe: Option, + console_resize_pipe: Option>, original_termios_opt: Arc>>, ) -> DeviceManagerResult<()> { trace_scoped!("create_devices"); @@ -2006,7 +2006,7 @@ impl DeviceManager { &mut self, virtio_devices: &mut Vec, console_fd: Option, - resize_pipe: Option, + resize_pipe: Option>, ) -> DeviceManagerResult>> { let console_config = self.config.lock().unwrap().console.clone(); let endpoint = match console_config.mode { @@ -2024,7 +2024,7 @@ impl DeviceManager { // SAFETY: pty_fd is guaranteed to be a valid fd from // pre_create_console_devices() in vmm/src/console_devices.rs let file = unsafe { File::from_raw_fd(pty_fd) }; - self.console_resize_pipe = resize_pipe.map(Arc::new); + self.console_resize_pipe = resize_pipe; Endpoint::PtyPair(file.try_clone().unwrap(), file) } else { return Err(DeviceManagerError::InvalidConsoleFd); @@ -2113,7 +2113,7 @@ impl DeviceManager { interrupt_manager: &Arc>, virtio_devices: &mut Vec, console_info: Option, - console_resize_pipe: Option, + console_resize_pipe: Option>, ) -> DeviceManagerResult> { let serial_config = self.config.lock().unwrap().serial.clone(); if console_info.is_none() { diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index 973ed2056..922121655 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -576,7 +576,7 @@ pub struct Vmm { signals: Option, threads: Vec>, original_termios_opt: Arc>>, - console_resize_pipe: Option, + console_resize_pipe: Option>, console_info: Option, } @@ -868,7 +868,7 @@ impl Vmm { activate_evt, timestamp, self.console_info.clone(), - None, + self.console_resize_pipe.as_ref().map(Arc::clone), Arc::clone(&self.original_termios_opt), Some(snapshot), ) @@ -1306,7 +1306,7 @@ impl RequestHandler for Vmm { self.hypervisor.clone(), activate_evt, self.console_info.clone(), - None, + self.console_resize_pipe.as_ref().map(Arc::clone), Arc::clone(&self.original_termios_opt), None, None, @@ -1433,7 +1433,7 @@ impl RequestHandler for Vmm { self.hypervisor.clone(), activate_evt, self.console_info.clone(), - None, + self.console_resize_pipe.as_ref().map(Arc::clone), Arc::clone(&self.original_termios_opt), Some(snapshot), Some(source_url), @@ -1492,10 +1492,7 @@ impl RequestHandler for Vmm { // First we stop the current VM let (config, console_resize_pipe) = if let Some(mut vm) = self.vm.take() { let config = vm.get_config(); - let console_resize_pipe = vm - .console_resize_pipe() - .as_ref() - .map(|pipe| pipe.try_clone().unwrap()); + let console_resize_pipe = vm.console_resize_pipe(); vm.shutdown()?; (config, console_resize_pipe) } else { diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index a9f7ce211..2013dda28 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -493,7 +493,7 @@ impl Vm { activate_evt: EventFd, timestamp: Instant, console_info: Option, - console_resize_pipe: Option, + console_resize_pipe: Option>, original_termios: Arc>>, snapshot: Option, ) -> Result { @@ -801,7 +801,7 @@ impl Vm { hypervisor: Arc, activate_evt: EventFd, console_info: Option, - console_resize_pipe: Option, + console_resize_pipe: Option>, original_termios: Arc>>, snapshot: Option, source_url: Option<&str>,