| 
					
				 | 
			
			
				@@ -7,7 +7,7 @@ import struct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import tempfile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from collections import defaultdict 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from collections import defaultdict, Counter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from signal import SIGINT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .constants import ROBJ_FILE_STREAM 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,7 +39,7 @@ from .crypto.low_level import blake2b_128 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .archiver._common import build_matcher, build_filter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .archive import Archive, get_item_uid_gid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .hashindex import FuseVersionsIndex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from .helpers import daemonize, daemonizing, signal_handler, format_file_size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from .helpers import daemonize, daemonizing, signal_handler, format_file_size, bin_to_hex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .helpers import HardLinkManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .helpers import msgpack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .helpers.lrucache import LRUCache 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -277,14 +277,20 @@ class FuseBackend: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _create_filesystem(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self._create_dir(parent=1)  # first call, create root dir (inode == 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.versions_index = FuseVersionsIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for archive in self._manifest.archives.list_considering(self._args): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        archives = self._manifest.archives.list_considering(self._args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name_counter = Counter(a.name for a in archives) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        duplicate_names = {a.name for a in archives if name_counter[a.name] > 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for archive in archives: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if self.versions: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # process archives immediately 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name = f"{archive.name}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if name in duplicate_names: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    name += f"-{bin_to_hex(archive.id):.8}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self.contents[1][os.fsencode(name)] = archive_inode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.pending_archives[archive_inode] = archive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def get_item(self, inode): 
			 |