From 47d16e0f6251802d643b57e8b839329e999b5b99 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 22 Nov 2017 15:08:08 +0100 Subject: [PATCH] borg mount: support --consider-part-files correctly, fixes #3347 (cherry picked from commit caece370b8931751195f439f5a5c08baa97d65f9) --- src/borg/fuse.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/borg/fuse.py b/src/borg/fuse.py index e06651fa6..399f7d084 100644 --- a/src/borg/fuse.py +++ b/src/borg/fuse.py @@ -119,7 +119,7 @@ class ItemCache: else: raise ValueError('Invalid entry type in self.meta') - def iter_archive_items(self, archive_item_ids, filter=None): + def iter_archive_items(self, archive_item_ids, filter=None, consider_part_files=False): unpacker = msgpack.Unpacker() # Current offset in the metadata stream, which consists of all metadata chunks glued together @@ -163,7 +163,7 @@ class ItemCache: break item = Item(internal_dict=item) - if filter and not filter(item): + if filter and not filter(item) or not consider_part_files and 'part' in item: msgpacked_bytes = b'' continue @@ -342,7 +342,8 @@ class FuseOperations(llfuse.Operations): hardlink_masters[item.get('path')] = (item.get('chunks'), None) filter = Archiver.build_filter(matcher, peek_and_store_hardlink_masters, strip_components) - for item_inode, item in self.cache.iter_archive_items(archive.metadata.items, filter=filter): + for item_inode, item in self.cache.iter_archive_items(archive.metadata.items, filter=filter, + consider_part_files=self.args.consider_part_files): if strip_components: item.path = os.sep.join(item.path.split(os.sep)[strip_components:]) path = os.fsencode(item.path)