Skip to content

Commit 0b09eec

Browse files
committed
refactor: implement get_file_path_or_empty method
1 parent 256f49f commit 0b09eec

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

clients/filesystem-fuse/src/fuse_api_handle_debug.rs

+25-20
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,15 @@ impl<T: RawFileSystem> FuseApiHandleDebug<T> {
410410
inner: FuseApiHandle::new(fs, _config, context),
411411
}
412412
}
413+
414+
/// Wrapper for get_file_path that returns an empty string on error
415+
/// instead of propagating the error
416+
async fn get_file_path_or_empty(&self, inode: Inode) -> String {
417+
match self.inner.get_file_path(inode).await {
418+
Ok(path) => path,
419+
Err(_) => "".to_string(),
420+
}
421+
}
413422
}
414423

415424
impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
@@ -438,7 +447,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
438447
}
439448

440449
async fn lookup(&self, req: Request, parent: Inode, name: &OsStr) -> fuse3::Result<ReplyEntry> {
441-
let parent_path_name = self.inner.get_file_path(parent).await?;
450+
let parent_path_name = self.get_file_path_or_empty(parent).await;
442451
debug!(
443452
req.unique,
444453
"uid" = req.uid,
@@ -465,7 +474,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
465474
fh: Option<u64>,
466475
flags: u32,
467476
) -> fuse3::Result<ReplyAttr> {
468-
let filename = self.inner.get_file_path(inode).await?;
477+
let filename = self.get_file_path_or_empty(inode).await;
469478
debug!(
470479
req.unique,
471480
"uid" = req.uid,
@@ -492,7 +501,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
492501
fh: Option<u64>,
493502
set_attr: SetAttr,
494503
) -> fuse3::Result<ReplyAttr> {
495-
let filename = self.inner.get_file_path(inode).await?;
504+
let filename = self.get_file_path_or_empty(inode).await;
496505
debug!(
497506
req.unique,
498507
"uid" = req.uid,
@@ -520,7 +529,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
520529
mode: u32,
521530
umask: u32,
522531
) -> fuse3::Result<ReplyEntry> {
523-
let parent_path_name = self.inner.get_file_path(parent).await?;
532+
let parent_path_name = self.get_file_path_or_empty(parent).await;
524533
debug!(
525534
req.unique,
526535
"uid" = req.uid,
@@ -543,7 +552,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
543552
}
544553

545554
async fn unlink(&self, req: Request, parent: Inode, name: &OsStr) -> fuse3::Result<()> {
546-
let parent_path_name = self.inner.get_file_path(parent).await?;
555+
let parent_path_name = self.get_file_path_or_empty(parent).await;
547556
debug!(
548557
req.unique,
549558
"uid" = req.uid,
@@ -559,7 +568,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
559568
}
560569

561570
async fn rmdir(&self, req: Request, parent: Inode, name: &OsStr) -> fuse3::Result<()> {
562-
let parent_path_name = self.inner.get_file_path(parent).await?;
571+
let parent_path_name = self.get_file_path_or_empty(parent).await;
563572
debug!(
564573
req.unique,
565574
"uid" = req.uid,
@@ -574,7 +583,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
574583
}
575584

576585
async fn open(&self, req: Request, inode: Inode, flags: u32) -> fuse3::Result<ReplyOpen> {
577-
let filename = self.inner.get_file_path(inode).await?;
586+
let filename = self.get_file_path_or_empty(inode).await;
578587
debug!(
579588
req.unique,
580589
"uid" = req.uid,
@@ -597,7 +606,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
597606
offset: u64,
598607
size: u32,
599608
) -> fuse3::Result<ReplyData> {
600-
let filename = self.inner.get_file_path(inode).await?;
609+
let filename = self.get_file_path_or_empty(inode).await;
601610
debug!(
602611
req.unique,
603612
?req,
@@ -621,7 +630,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
621630
write_flags: u32,
622631
flags: u32,
623632
) -> fuse3::Result<ReplyWrite> {
624-
let filename = self.inner.get_file_path(inode).await?;
633+
let filename = self.get_file_path_or_empty(inode).await;
625634
debug!(
626635
req.unique,
627636
"uid" = req.uid,
@@ -646,7 +655,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
646655
}
647656

648657
async fn statfs(&self, req: Request, inode: Inode) -> fuse3::Result<ReplyStatFs> {
649-
let filename = self.inner.get_file_path(inode).await?;
658+
let filename = self.get_file_path_or_empty(inode).await;
650659
debug!(
651660
req.unique,
652661
"uid" = req.uid,
@@ -669,7 +678,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
669678
lock_owner: u64,
670679
flush: bool,
671680
) -> fuse3::Result<()> {
672-
let filename = self.inner.get_file_path(inode).await?;
681+
let filename = self.get_file_path_or_empty(inode).await;
673682
debug!(
674683
req.unique,
675684
"uid" = req.uid,
@@ -692,7 +701,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
692701
}
693702

694703
async fn opendir(&self, req: Request, inode: Inode, flags: u32) -> fuse3::Result<ReplyOpen> {
695-
let parent_path_name = self.inner.get_file_path(inode).await?;
704+
let parent_path_name = self.get_file_path_or_empty(inode).await;
696705
debug!(
697706
req.unique,
698707
"uid" = req.uid,
@@ -719,7 +728,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
719728
fh: u64,
720729
offset: i64,
721730
) -> fuse3::Result<ReplyDirectory<Self::DirEntryStream<'a>>> {
722-
let parent_path_name = self.inner.get_file_path(parent).await?;
731+
let parent_path_name = self.get_file_path_or_empty(parent).await;
723732
debug!(
724733
req.unique,
725734
"uid" = req.uid,
@@ -741,11 +750,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
741750
fh: u64,
742751
flags: u32,
743752
) -> fuse3::Result<()> {
744-
let parent_path_name = match self.inner.get_file_path(inode).await {
745-
Ok(path) => path,
746-
// directory might be removed, so in this case, we set parent_path_name to ""
747-
_ => "".to_string(),
748-
};
753+
let parent_path_name = self.get_file_path_or_empty(inode).await;
749754
debug!(
750755
req.unique,
751756
"uid" = req.uid,
@@ -772,7 +777,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
772777
mode: u32,
773778
flags: u32,
774779
) -> fuse3::Result<ReplyCreated> {
775-
let parent_path_name = self.inner.get_file_path(parent).await?;
780+
let parent_path_name = self.get_file_path_or_empty(parent).await;
776781

777782
debug!(
778783
req.unique,
@@ -808,7 +813,7 @@ impl<T: RawFileSystem> Filesystem for FuseApiHandleDebug<T> {
808813
offset: u64,
809814
lock_owner: u64,
810815
) -> fuse3::Result<ReplyDirectoryPlus<Self::DirEntryPlusStream<'a>>> {
811-
let parent_path_name = self.inner.get_file_path(parent).await?;
816+
let parent_path_name = self.get_file_path_or_empty(parent).await;
812817
debug!(
813818
req.unique,
814819
"uid" = req.uid,

0 commit comments

Comments
 (0)