- Limit the maximum block size we compute for a file.
authorWayne Davison <wayned@samba.org>
Fri, 16 Jul 2004 18:04:23 +0000 (18:04 +0000)
committerWayne Davison <wayned@samba.org>
Fri, 16 Jul 2004 18:04:23 +0000 (18:04 +0000)
- Set max_map_size based on the current file's block size (so that
  map_ptr() is more efficient with large blocks).

generator.c

index ffd7a0d..72b6905 100644 (file)
@@ -52,6 +52,7 @@ extern int only_existing;
 extern int orig_umask;
 extern int safe_symlinks;
 extern unsigned int block_size;
 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;
 
 
 extern struct exclude_list_struct server_exclude_list;
 
@@ -162,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);
                        c >>= 1;
                } while (c >= 8);       /* round to multiple of 8 */
                blength = MAX(blength, BLOCK_SIZE);
+               blength = MIN(blength, MAX_MAP_SIZE);
        }
        }
+       max_map_size = MIN(MAX_MAP_SIZE, blength * 32);
 
        if (protocol_version < 27) {
                s2length = csum_length;
 
        if (protocol_version < 27) {
                s2length = csum_length;