X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/f38bd4a07235e63dbfa02a8d72850556ae8810fb..b6609cafae8188e083ab2ff4aac3b40651278e8f:/generator.c diff --git a/generator.c b/generator.c index b8968925..b431cb74 100644 --- a/generator.c +++ b/generator.c @@ -47,10 +47,12 @@ extern int link_dest; extern int whole_file; extern int local_server; extern int list_only; +extern int read_batch; extern int only_existing; extern int orig_umask; extern int safe_symlinks; extern unsigned int block_size; +extern unsigned int max_map_size; extern struct exclude_list_struct server_exclude_list; @@ -161,7 +163,9 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len) c >>= 1; } while (c >= 8); /* round to multiple of 8 */ blength = MAX(blength, BLOCK_SIZE); + blength = MIN(blength, MAX_MAP_SIZE); } + max_map_size = MAX(MAX_MAP_SIZE, blength * 32); if (protocol_version < 27) { s2length = csum_length; @@ -205,7 +209,7 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len) * * Generate approximately one checksum every block_len bytes. */ -static void generate_and_send_sums(struct map_struct *buf, size_t len, int f_out) +static void generate_and_send_sums(struct map_struct *buf, OFF_T len, int f_out) { size_t i; struct sum_struct sum; @@ -394,6 +398,9 @@ static void recv_generator(char *fname, struct file_struct *file, int i, } #endif + if (read_batch) + return; + if (preserve_hard_links && hard_link_check(file, HL_CHECK_MASTER)) return;