fuse: refactor file versioning code

This commit is contained in:
Thomas Waldmann 2016-09-15 15:41:15 +02:00
parent 5d22078f35
commit 001500ab99
1 changed files with 5 additions and 4 deletions

View File

@ -162,17 +162,18 @@ class FuseOperations(llfuse.Operations):
self.process_leaf(segments[-1], item, parent, prefix, is_dir) self.process_leaf(segments[-1], item, parent, prefix, is_dir)
def process_leaf(self, name, item, parent, prefix, is_dir): def process_leaf(self, name, item, parent, prefix, is_dir):
def version_name(name, item): def file_version(item):
if 'chunks' in item: if 'chunks' in item:
ident = 0 ident = 0
for chunkid, _, _ in item.chunks: for chunkid, _, _ in item.chunks:
ident = adler32(chunkid, ident) ident = adler32(chunkid, ident)
name = name + safe_encode('.%08x' % ident) return ident
return name
if self.versions and not is_dir: if self.versions and not is_dir:
parent = self.process_inner(name, parent) parent = self.process_inner(name, parent)
name = version_name(name, item) version = file_version(item)
if version is not None:
name += safe_encode('.%08x' % version)
if 'source' in item and stat.S_ISREG(item.mode): if 'source' in item and stat.S_ISREG(item.mode):
inode = self._find_inode(item.source, prefix) inode = self._find_inode(item.source, prefix)