Jelajahi Sumber

Merge pull request #1237 from ThomasWaldmann/double-sync

make sure data hits disk before commit tag, fixes #1236
enkore 9 tahun lalu
induk
melakukan
74e5e758b8
1 mengubah file dengan 4 tambahan dan 1 penghapusan
  1. 4 1
      borg/repository.py

+ 4 - 1
borg/repository.py

@@ -727,8 +727,11 @@ class LoggedIO:
         fd = self.get_write_fd(no_new=True)
         header = self.header_no_crc_fmt.pack(self.header_fmt.size, TAG_COMMIT)
         crc = self.crc_fmt.pack(crc32(header) & 0xffffffff)
+        # first fsync(fd) here (to ensure data supposedly hits the disk before the commit tag)
+        fd.flush()
+        os.fsync(fd.fileno())
         fd.write(b''.join((crc, header)))
-        self.close_segment()
+        self.close_segment()  # after-commit fsync()
 
     def close_segment(self):
         if self._write_fd: