|
@@ -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());
|
|
|
}
|
|
|
|