Răsfoiți Sursa

Made the debugging statements in `Blocktree` less intrusive.

Matthew Carr 2 ani în urmă
părinte
comite
782b7cd55c
2 a modificat fișierele cu 21 adăugiri și 61 ștergeri
  1. 2 0
      crates/btfuse/src/main.rs
  2. 19 61
      crates/btlib/src/blocktree.rs

+ 2 - 0
crates/btfuse/src/main.rs

@@ -306,6 +306,8 @@ mod test {
     //#[test]
     #[allow(dead_code)]
     fn manual_test() {
+        // The debug log level significantly reduces performance. You can speed things up by
+        // replacing "debug" with "warn".
         std::env::set_var("RUST_LOG", "debug");
         env_logger::Builder::from_default_env().btformat().init();
         let mut case = TestCase::new();

+ 19 - 61
crates/btlib/src/blocktree.rs

@@ -848,13 +848,8 @@ mod private {
         }
 
         fn lookup(&self, ctx: &Context, parent: Self::Inode, name: &CStr) -> io::Result<Entry> {
-            let name = match name.to_str().box_err() {
-                Ok(name) => {
-                    debug!("Blocktree::lookup called on parent {parent} for '{name}'");
-                    name
-                }
-                Err(err) => return Err(err),
-            };
+            debug!("Blocktree::lookup, parent {parent}, {:?}", name);
+            let name = name.to_str().box_err()?;
             let (dir, block_path) = match self.borrow_block_mut(parent, |block| {
                 self.authorizer.exec_allowed(ctx, block.meta())?;
                 let dir = block.read_dir()?;
@@ -982,16 +977,8 @@ mod private {
             name: &CStr,
             args: CreateIn,
         ) -> std::io::Result<(Entry, Option<Self::Handle>, OpenOptions)> {
-            let name = match name.to_str() {
-                Ok(name) => {
-                    debug!("Blocktree::create, parent {parent}, name '{name}'");
-                    name.to_owned()
-                }
-                Err(err) => {
-                    debug!("Blocktree::create, parent {parent}");
-                    return Err(io::Error::new(io::ErrorKind::InvalidInput, err));
-                }
-            };
+            debug!("Blocktree::create, parent {parent}, name {:?}", name);
+            let name = name.to_str().box_err()?.to_owned();
 
             // Reserve a free inode.
             let inode = self.next_inode()?;
@@ -1239,16 +1226,8 @@ mod private {
         }
 
         fn unlink(&self, ctx: &Context, parent: Self::Inode, name: &CStr) -> io::Result<()> {
-            let name = match name.to_str().box_err() {
-                Ok(name) => {
-                    debug!("Blocktree::unlink, parent {parent}, name '{name}'");
-                    name
-                }
-                Err(err) => {
-                    debug!("Blocktree::unlink, parent {parent}");
-                    return Err(err);
-                }
-            };
+            debug!("Blocktree::unlink, parent {parent}, name {:?}", name);
+            let name = name.to_str().box_err()?;
             let (block_path, inode) = self.borrow_block_mut(parent, |block| {
                 self.authorizer.write_allowed(ctx, block.meta())?;
 
@@ -1290,18 +1269,11 @@ mod private {
             newparent: Self::Inode,
             newname: &CStr,
         ) -> io::Result<Entry> {
-            let newname = match newname.to_str().box_err() {
-                Ok(newname) => {
-                    debug!(
-                        "Blocktree::link, inode {inode}, newparent {newparent}, newname {newname}"
-                    );
-                    newname
-                }
-                Err(err) => {
-                    debug!("Blocktree::link, inode {inode}, newparent {newparent}");
-                    return Err(err);
-                }
-            };
+            debug!(
+                "Blocktree::link, inode {inode}, newparent {newparent}, newname {:?}",
+                newname
+            );
+            let newname = newname.to_str().box_err()?;
             self.borrow_block_mut(newparent, |block| {
                 self.authorizer.write_allowed(ctx, block.meta())?;
 
@@ -1403,17 +1375,11 @@ mod private {
             mode: u32,
             umask: u32,
         ) -> io::Result<Entry> {
-            debug!("Blocktree::mkdir, parent {parent}");
-            let name = match name.to_str().box_err() {
-                Ok(name) => {
-                    debug!("Blocktree::mkdir, parent {parent}, mode {mode}, umask {umask}, name '{name}'");
-                    name.to_owned()
-                }
-                Err(err) => {
-                    debug!("Blocktree::mkdir, parent {parent}, mode {mode}, umask {umask}");
-                    return Err(err);
-                }
-            };
+            debug!(
+                "Blocktree::mkdir, parent {parent}, mode {mode}, umask {umask}, name {:?}",
+                name
+            );
+            let name = name.to_str().box_err()?.to_owned();
             let (inode, mut block_path) = self.borrow_block_mut(parent, |block| {
                 self.authorizer.write_allowed(ctx, block.meta())?;
 
@@ -1450,21 +1416,13 @@ mod private {
         }
 
         fn rmdir(&self, ctx: &Context, parent: Self::Inode, name: &CStr) -> io::Result<()> {
-            let name = match name.to_str().box_err() {
-                Ok(name) => {
-                    debug!("Blocktree::rmdir, parent {parent}, name '{name}'");
-                    name.to_owned()
-                }
-                Err(err) => {
-                    debug!("Blocktree::rmdir, parent {parent}");
-                    return Err(err);
-                }
-            };
+            debug!("Blocktree::rmdir, parent {parent}, name {:?}", name);
+            let name = name.to_str().box_err()?;
             self.borrow_block_mut(parent, |block| {
                 self.authorizer.write_allowed(ctx, block.meta())?;
 
                 let mut dir = block.read_dir()?;
-                if dir.entries.remove(&name).is_none() {
+                if dir.entries.remove(name).is_none() {
                     return Err(io::Error::from_raw_os_error(libc::ENOENT).into());
                 }