summaryrefslogtreecommitdiff
path: root/receiver.c
diff options
context:
space:
mode:
authorWayne Davison <wayne@opencoder.net>2021-09-27 10:30:00 -0700
committerWayne Davison <wayne@opencoder.net>2021-09-27 10:30:00 -0700
commit82f023d7e3cca126d264ebb81b19feaf8731ad9a (patch)
tree82316449c2e1e816f9ff3a1181f60ef1c524c751 /receiver.c
parentec57c57baf848718bbab93fa0c597d15718acc5a (diff)
downloadrsync-82f023d7e3cca126d264ebb81b19feaf8731ad9a.tar.gz
Add --fsync option (promoted from patches).
Diffstat (limited to 'receiver.c')
-rw-r--r--receiver.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/receiver.c b/receiver.c
index b5020d07..091fcd6f 100644
--- a/receiver.c
+++ b/receiver.c
@@ -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);