Skip to content

Commit 96eecbc

Browse files
committed
fix(Controller): Errors are hidden by defaul
Fixed an error hidden during the creation of cgroup, which resulted in subsequent error propagation Signed-off-by: jokemanfire <hu.dingyang@zte.com.cn>
1 parent 5d74a1d commit 96eecbc

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/fs/cgroup.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
//! This module handles cgroup operations. Start here!
88
9+
use log::warn;
10+
911
use crate::fs::error::ErrorKind::*;
1012
use crate::fs::error::*;
1113

@@ -84,9 +86,9 @@ impl Cgroup {
8486
if self.hier.v2() {
8587
create_v2_cgroup(self.hier.root(), &self.path, &self.specified_controllers)
8688
} else {
87-
for subsystem in &self.subsystems {
88-
subsystem.to_controller().create();
89-
}
89+
self.subsystems
90+
.iter()
91+
.try_for_each(|subsystem| subsystem.to_controller().create())?;
9092
Ok(())
9193
}
9294
}
@@ -556,6 +558,7 @@ fn create_v2_cgroup(
556558
// create dir, need not check if is a file or directory
557559
if !fp.exists() {
558560
if let Err(e) = std::fs::create_dir(fp.clone()) {
561+
warn!("Failed to create cgroup directory {}: {}", fp.display(), e);
559562
return Err(Error::with_cause(ErrorKind::FsError, e));
560563
}
561564
}

src/fs/mod.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ pub trait Controller {
265265
fn apply(&self, res: &Resources) -> Result<()>;
266266

267267
/// Create this controller
268-
fn create(&self);
268+
fn create(&self) -> Result<()>;
269269

270270
/// Does this controller already exist?
271271
fn exists(&self) -> bool;
@@ -323,13 +323,20 @@ where
323323
}
324324

325325
/// Create this controller
326-
fn create(&self) {
326+
fn create(&self) -> Result<()> {
327327
self.verify_path()
328328
.unwrap_or_else(|_| panic!("path should be valid: {:?}", self.path()));
329329

330330
match ::std::fs::create_dir_all(self.get_path()) {
331-
Ok(_) => self.post_create(),
332-
Err(e) => warn!("error create_dir: {:?} error: {:?}", self.get_path(), e),
331+
Ok(_) => {
332+
self.post_create();
333+
Ok(())
334+
}
335+
Err(e) => {
336+
let err_msg = format!("error create_dir: {:?}, because :{:?}", self.get_path(), e);
337+
warn!("{}", err_msg);
338+
Err(Error::with_cause(ErrorKind::Common(err_msg), e))
339+
}
333340
}
334341
}
335342

0 commit comments

Comments
 (0)