|
@@ -701,7 +701,7 @@ Number of files: {0.stats.nfiles}'''.format(
|
|
|
|
|
|
|
|
|
# this set must be kept complete, otherwise the RobustUnpacker might malfunction:
|
|
|
-ITEM_KEYS = frozenset([b'path', b'source', b'rdev', b'chunks',
|
|
|
+ITEM_KEYS = frozenset([b'path', b'source', b'rdev', b'chunks', b'chunks_healthy',
|
|
|
b'mode', b'user', b'group', b'uid', b'gid', b'mtime', b'atime', b'ctime',
|
|
|
b'xattrs', b'bsdflags', b'acl_nfs4', b'acl_access', b'acl_default', b'acl_extended', ])
|
|
|
|
|
@@ -933,6 +933,9 @@ class ArchiveChecker:
|
|
|
add_reference(chunk_id, size, csize)
|
|
|
chunk_list.append((chunk_id, size, csize))
|
|
|
offset += size
|
|
|
+ if b'chunks_healthy' not in item:
|
|
|
+ # if this is first repair, remember the correct chunk IDs, so we can maybe heal the file later
|
|
|
+ item[b'chunks_healthy'] = item[b'chunks']
|
|
|
item[b'chunks'] = chunk_list
|
|
|
|
|
|
def robust_iterator(archive):
|