X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ecc81fce17f2e32fbe33c0050693899ce4d6c3cf..8b115ac8dc8ddf15a54096f01ae17848033801d1:/sender.c diff --git a/sender.c b/sender.c index c5dffc1c..a2d0a862 100644 --- a/sender.c +++ b/sender.c @@ -27,6 +27,7 @@ extern int dry_run; extern int am_server; extern int am_daemon; extern int protocol_version; +extern int make_backups; extern struct stats stats; @@ -120,6 +121,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) struct file_struct *file; int phase = 0; struct stats initial_stats; + int save_make_backups = make_backups; int j; if (verbose > 2) @@ -136,6 +138,8 @@ void send_files(struct file_list *flist, int f_out, int f_in) write_int(f_out, -1); if (verbose > 2) rprintf(FINFO, "send_files phase=%d\n", phase); + /* inplace resends run without a backup file */ + make_backups = 0; continue; } break; @@ -208,7 +212,11 @@ void send_files(struct file_list *flist, int f_out, int f_in) return; } - mbuf = st.st_size ? map_file(fd, st.st_size, s->blength) : NULL; + if (st.st_size) { + OFF_T map_size = MAX(s->blength * 3, MAX_MAP_SIZE); + mbuf = map_file(fd, st.st_size, map_size, s->blength); + } else + mbuf = NULL; if (verbose > 2) { rprintf(FINFO, "send_files mapped %s of size %.0f\n", @@ -249,6 +257,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) safe_fname(fname)); } } + make_backups = save_make_backups; if (verbose > 2) rprintf(FINFO, "send files finished\n");