|  | @@ -8,7 +8,6 @@ import tempfile
 | 
	
		
			
				|  |  |  import time
 | 
	
		
			
				|  |  |  from collections import defaultdict
 | 
	
		
			
				|  |  |  from signal import SIGINT
 | 
	
		
			
				|  |  | -from distutils.version import LooseVersion
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import llfuse
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -25,17 +24,10 @@ from .item import Item
 | 
	
		
			
				|  |  |  from .lrucache import LRUCache
 | 
	
		
			
				|  |  |  from .remote import RemoteRepository
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -# Does this version of llfuse support ns precision?
 | 
	
		
			
				|  |  | -have_fuse_xtime_ns = hasattr(llfuse.EntryAttributes, 'st_mtime_ns')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -fuse_version = LooseVersion(getattr(llfuse, '__version__', '0.1'))
 | 
	
		
			
				|  |  | -if fuse_version >= '0.42':
 | 
	
		
			
				|  |  | -    def fuse_main():
 | 
	
		
			
				|  |  | -        return llfuse.main(workers=1)
 | 
	
		
			
				|  |  | -else:
 | 
	
		
			
				|  |  | -    def fuse_main():
 | 
	
		
			
				|  |  | -        llfuse.main(single=True)
 | 
	
		
			
				|  |  | -        return None
 | 
	
		
			
				|  |  | +def fuse_main():
 | 
	
		
			
				|  |  | +    return llfuse.main(workers=1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # size of some LRUCaches (1 element per simultaneously open file)
 | 
	
		
			
				|  |  |  # note: _inode_cache might have rather large elements - Item.chunks can be large!
 | 
	
	
		
			
				|  | @@ -362,8 +354,7 @@ class FuseBackend(object):
 | 
	
		
			
				|  |  |                  file_id = blake2b_128(path)
 | 
	
		
			
				|  |  |                  current_version, previous_id = self.versions_index.get(file_id, (0, None))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                chunk_ids = [chunk_id for chunk_id, _, _ in item.chunks]
 | 
	
		
			
				|  |  | -                contents_id = blake2b_128(b''.join(chunk_ids))
 | 
	
		
			
				|  |  | +                contents_id = blake2b_128(b''.join(chunk_id for chunk_id, _, _ in item.chunks))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if contents_id != previous_id:
 | 
	
		
			
				|  |  |                      current_version += 1
 | 
	
	
		
			
				|  | @@ -567,17 +558,10 @@ class FuseOperations(llfuse.Operations, FuseBackend):
 | 
	
		
			
				|  |  |          entry.st_blksize = 512
 | 
	
		
			
				|  |  |          entry.st_blocks = (entry.st_size + entry.st_blksize - 1) // entry.st_blksize
 | 
	
		
			
				|  |  |          # note: older archives only have mtime (not atime nor ctime)
 | 
	
		
			
				|  |  | -        mtime_ns = item.mtime
 | 
	
		
			
				|  |  | -        if have_fuse_xtime_ns:
 | 
	
		
			
				|  |  | -            entry.st_mtime_ns = mtime_ns
 | 
	
		
			
				|  |  | -            entry.st_atime_ns = item.get('atime', mtime_ns)
 | 
	
		
			
				|  |  | -            entry.st_ctime_ns = item.get('ctime', mtime_ns)
 | 
	
		
			
				|  |  | -            entry.st_birthtime_ns = item.get('birthtime', mtime_ns)
 | 
	
		
			
				|  |  | -        else:
 | 
	
		
			
				|  |  | -            entry.st_mtime = mtime_ns / 1e9
 | 
	
		
			
				|  |  | -            entry.st_atime = item.get('atime', mtime_ns) / 1e9
 | 
	
		
			
				|  |  | -            entry.st_ctime = item.get('ctime', mtime_ns) / 1e9
 | 
	
		
			
				|  |  | -            entry.st_birthtime = item.get('birthtime', mtime_ns) / 1e9
 | 
	
		
			
				|  |  | +        entry.st_mtime_ns = mtime_ns = item.mtime
 | 
	
		
			
				|  |  | +        entry.st_atime_ns = item.get('atime', mtime_ns)
 | 
	
		
			
				|  |  | +        entry.st_ctime_ns = item.get('ctime', mtime_ns)
 | 
	
		
			
				|  |  | +        entry.st_birthtime_ns = item.get('birthtime', mtime_ns)
 | 
	
		
			
				|  |  |          return entry
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def listxattr(self, inode, ctx=None):
 |