diff --git a/qubes/storage/reflink.py b/qubes/storage/reflink.py index 148d7164..0568df59 100644 --- a/qubes/storage/reflink.py +++ b/qubes/storage/reflink.py @@ -379,12 +379,12 @@ def _replace_file(dst): _remove_file(tmp.name) raise -def _fsync_dir(path): - dir_fd = os.open(path, os.O_RDONLY | os.O_DIRECTORY) +def _fsync_path(path): + fd = os.open(path, os.O_RDONLY) # works for a file or a directory try: - os.fsync(dir_fd) + os.fsync(fd) finally: - os.close(dir_fd) + os.close(fd) def _make_dir(path): ''' mkdir path, ignoring FileExistsError; return whether we @@ -392,7 +392,7 @@ def _make_dir(path): ''' with suppress(FileExistsError): os.mkdir(path) - _fsync_dir(os.path.dirname(path)) + _fsync_path(os.path.dirname(path)) LOGGER.info('Created directory: %s', path) return True return False @@ -400,13 +400,13 @@ def _make_dir(path): def _remove_file(path): with suppress(FileNotFoundError): os.remove(path) - _fsync_dir(os.path.dirname(path)) + _fsync_path(os.path.dirname(path)) LOGGER.info('Removed file: %s', path) def _remove_empty_dir(path): try: os.rmdir(path) - _fsync_dir(os.path.dirname(path)) + _fsync_path(os.path.dirname(path)) LOGGER.info('Removed empty directory: %s', path) except OSError as ex: if ex.errno not in (errno.ENOENT, errno.ENOTEMPTY): @@ -416,9 +416,9 @@ def _rename_file(src, dst): os.rename(src, dst) dst_dir = os.path.dirname(dst) src_dir = os.path.dirname(src) - _fsync_dir(dst_dir) + _fsync_path(dst_dir) if src_dir != dst_dir: - _fsync_dir(src_dir) + _fsync_path(src_dir) LOGGER.info('Renamed file: %s -> %s', src, dst) def _resize_file(path, size):