diff options
Diffstat (limited to 'receiver.c')
-rw-r--r-- | receiver.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -41,6 +41,7 @@ extern int preserve_hard_links; extern int preserve_perms; extern int write_devices; extern int preserve_xattrs; +extern int do_fsync; extern int basis_dir_cnt; extern int make_backups; extern int cleanup_got_literal; @@ -394,6 +395,11 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, sum_len = sum_end(file_sum1); + if (do_fsync && fd != -1 && fsync(fd) != 0) { + rsyserr(FERROR, errno, "fsync failed on %s", full_fname(fname)); + exit_cleanup(RERR_FILEIO); + } + if (mapbuf) unmap_file(mapbuf); |