diff --git a/src/borg/fuse.py b/src/borg/fuse.py index 92f145874..654c350e7 100644 --- a/src/borg/fuse.py +++ b/src/borg/fuse.py @@ -280,12 +280,12 @@ class FuseBackend: for archive in self._manifest.archives.list_considering(self._args): if self.versions: # process archives immediately - self._process_archive(archive.name) + self._process_archive(archive.id) else: # lazily load archives, create archive placeholder inode archive_inode = self._create_dir(parent=1, mtime=int(archive.ts.timestamp() * 1e9)) self.contents[1][os.fsencode(archive.name)] = archive_inode - self.pending_archives[archive_inode] = archive.name + self.pending_archives[archive_inode] = archive def get_item(self, inode): item = self._inode_cache.get(inode) @@ -302,9 +302,9 @@ class FuseBackend: def check_pending_archive(self, inode): # Check if this is an archive we need to load - archive_name = self.pending_archives.pop(inode, None) - if archive_name is not None: - self._process_archive(archive_name, [os.fsencode(archive_name)]) + archive_info = self.pending_archives.pop(inode, None) + if archive_info is not None: + self._process_archive(archive_info.id, [os.fsencode(archive_info.name)]) def _allocate_inode(self): self.inode_count += 1 @@ -328,11 +328,11 @@ class FuseBackend: inode = self.contents[inode][segment] return inode - def _process_archive(self, archive_name, prefix=[]): + def _process_archive(self, archive_id, prefix=[]): """Build FUSE inode hierarchy from archive metadata""" self.file_versions = {} # for versions mode: original path -> version t0 = time.perf_counter() - archive = Archive(self._manifest, archive_name) + archive = Archive(self._manifest, archive_id) strip_components = self._args.strip_components matcher = build_matcher(self._args.patterns, self._args.paths) hlm = HardLinkManager(id_type=bytes, info_type=str) # hlid -> path