diff --git a/service/src/daemon.rs b/service/src/daemon.rs index 3170f41cab9..c858e05ceb8 100644 --- a/service/src/daemon.rs +++ b/service/src/daemon.rs @@ -422,13 +422,16 @@ impl DaemonController { self.fs_service.lock().unwrap().clone() } - /// Shutdown all services managed by the controller. - pub fn shutdown(&self) { + /// Notify controller shutdown + pub fn notify_shutdown(&self) { // Marking exiting state. self.active.store(false, Ordering::Release); // Signal the `run_loop()` working thread to exit. let _ = self.waker.wake(); + } + /// Shutdown all services managed by the controller. + pub fn shutdown(&self) { let daemon = self.daemon.lock().unwrap().take(); if let Some(d) = daemon { if let Err(e) = d.trigger_stop() { diff --git a/src/bin/nydusd/main.rs b/src/bin/nydusd/main.rs index e06693e7a55..fc5e4b7a6b8 100644 --- a/src/bin/nydusd/main.rs +++ b/src/bin/nydusd/main.rs @@ -720,7 +720,7 @@ mod nbd { } extern "C" fn sig_exit(_sig: std::os::raw::c_int) { - DAEMON_CONTROLLER.shutdown(); + DAEMON_CONTROLLER.notify_shutdown(); } fn main() -> Result<()> {