diff --git a/src/fs/cgroup.rs b/src/fs/cgroup.rs index ef9aade..f92fd99 100644 --- a/src/fs/cgroup.rs +++ b/src/fs/cgroup.rs @@ -84,9 +84,9 @@ impl Cgroup { if self.hier.v2() { create_v2_cgroup(self.hier.root(), &self.path, &self.specified_controllers) } else { - for subsystem in &self.subsystems { - subsystem.to_controller().create(); - } + self.subsystems + .iter() + .try_for_each(|subsystem| subsystem.to_controller().create())?; Ok(()) } } diff --git a/src/fs/mod.rs b/src/fs/mod.rs index f5255a4..02a671a 100644 --- a/src/fs/mod.rs +++ b/src/fs/mod.rs @@ -5,7 +5,6 @@ // #![allow(clippy::unnecessary_unwrap)] -use log::*; use std::collections::HashMap; use std::fmt; @@ -265,7 +264,7 @@ pub trait Controller { fn apply(&self, res: &Resources) -> Result<()>; /// Create this controller - fn create(&self); + fn create(&self) -> Result<()>; /// Does this controller already exist? fn exists(&self) -> bool; @@ -323,14 +322,14 @@ where } /// Create this controller - fn create(&self) { + fn create(&self) -> Result<()> { self.verify_path() .unwrap_or_else(|_| panic!("path should be valid: {:?}", self.path())); - match ::std::fs::create_dir_all(self.get_path()) { - Ok(_) => self.post_create(), - Err(e) => warn!("error create_dir: {:?} error: {:?}", self.get_path(), e), - } + std::fs::create_dir_all(self.get_path()) + .map_err(|err| Error::with_cause(ErrorKind::FsError, err))?; + self.post_create(); + Ok(()) } /// Set notify_on_release diff --git a/src/systemd/dbus/client.rs b/src/systemd/dbus/client.rs index 8bbe245..b1b5df4 100644 --- a/src/systemd/dbus/client.rs +++ b/src/systemd/dbus/client.rs @@ -248,7 +248,7 @@ pub mod tests { String::from_utf8_lossy(&output.stdout).to_string() } - fn start_default_cgroup(pid: CgroupPid, unit: &str) -> SystemdClient { + fn start_default_cgroup(pid: CgroupPid, unit: &'_ str) -> SystemdClient<'_> { let mut props = PropertiesBuilder::default_cgroup(TEST_SLICE, unit).build(); props.push((PIDS, Value::Array(vec![pid.pid as u32].into()))); let cgroup = SystemdClient::new(unit, props).unwrap();