diff --git a/core/services/ipmfs/src/lister.rs b/core/services/ipmfs/src/lister.rs index d59eb21f2edd..434988dcd45e 100644 --- a/core/services/ipmfs/src/lister.rs +++ b/core/services/ipmfs/src/lister.rs @@ -79,14 +79,17 @@ impl oio::PageList for IpmfsLister { ctx.done = true; for object in entries_body.entries.unwrap_or_default() { + let prefix = if self.path == "/" { + "" + } else { + self.path.as_str() + }; let path = match object.mode() { - EntryMode::FILE => format!("{}{}", self.path, object.name), - EntryMode::DIR => format!("{}{}/", self.path, object.name), + EntryMode::FILE => format!("{prefix}{}", object.name), + EntryMode::DIR => format!("{prefix}{}/", object.name), EntryMode::Unknown => unreachable!(), }; - let path = build_rel_path(&self.root, &path); - ctx.entries.push_back(oio::Entry::new( &path, Metadata::new(object.mode()).with_content_length(object.size),