- Added a new block_size arg to map_file(). Use it to set the
[rsync/rsync.git] / generator.c
index 6eb65d2..b431cb7 100644 (file)
@@ -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;
@@ -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;