./configure (optional if already run)
make
-based-on: 3bd9f51917ed5718275c6132006be155239a0550
+based-on: 28b519c93b6db30b6520d46f8cd65160213fddd2
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
int preserve_links = 0;
int preserve_hard_links = 0;
int preserve_acls = 0;
-@@ -733,6 +734,7 @@ void usage(enum logcode F)
+@@ -743,6 +744,7 @@ void usage(enum logcode F)
rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n");
rprintf(F," --delay-updates put all updated files into place at transfer's end\n");
rprintf(F," -m, --prune-empty-dirs prune empty directory chains from the file-list\n");
rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n");
rprintf(F," --usermap=STRING custom username mapping\n");
rprintf(F," --groupmap=STRING custom groupname mapping\n");
-@@ -994,6 +996,7 @@ static struct poptOption long_options[] = {
+@@ -1005,6 +1007,7 @@ static struct poptOption long_options[] = {
{"no-timeout", 0, POPT_ARG_VAL, &io_timeout, 0, 0, 0 },
{"contimeout", 0, POPT_ARG_INT, &connect_timeout, 0, 0, 0 },
{"no-contimeout", 0, POPT_ARG_VAL, &connect_timeout, 0, 0, 0 },
{"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
{"rsync-path", 0, POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
{"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
-@@ -2622,6 +2625,9 @@ void server_options(char **args, int *argc_p)
+@@ -2633,6 +2636,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = tmpdir;
}
extern int basis_dir_cnt;
extern int make_backups;
extern int cleanup_got_literal;
-@@ -360,6 +361,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -384,6 +385,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
if (sum_end(file_sum1) != checksum_len)
overflow_exit("checksum_len"); /* Impossible... */
+int do_fsync = 0;
int modify_window = 0;
+ int preallocate_files = 0;
int module_id = -1;
- int relative_paths = 0;
diff --git a/util.c b/util.c
--- a/util.c
+++ b/util.c
extern int modify_window;
extern int relative_paths;
extern int preserve_times;
-@@ -370,6 +371,13 @@ int copy_file(const char *source, const char *dest, int ofd, mode_t mode)
- full_fname(source));
+@@ -406,6 +407,13 @@ int copy_file(const char *source, const char *dest, int ofd, mode_t mode)
}
+ #endif
+ if (do_fsync && fsync(ofd) < 0) {
+ rsyserr(FERROR, errno, "fsync failed on %s",