diff --git a/borg/repository.py b/borg/repository.py index 71e9040a6..fae22119a 100644 --- a/borg/repository.py +++ b/borg/repository.py @@ -705,6 +705,13 @@ class LoggedIO: else: yield tag, key, offset offset += size + # we must get the fd via get_fd() here again as we yielded to our caller and it might + # have triggered closing of the fd we had before (e.g. by calling io.read() for + # different segment(s)). + # by calling get_fd() here again we also make our fd "recently used" so it likely + # does not get kicked out of self.fds LRUcache. + fd = self.get_fd(segment) + fd.seek(offset) header = fd.read(self.header_fmt.size) def recover_segment(self, segment, filename):