@matheusbsbs / matheus-bagliano / commits / bf87489624
Fork 0

pack-objects: don't use too many threads with few objects

If there are few objects to deltify, they might be split amongst threads so that there is simply no other objects left to delta against within the same thread. Let's use the same 2*window treshold as used for the final load balancing to allow extra threads to be created. This fixes the benign t5300 test failure. Signed-off-by: Nicolas Pitre <nico@cam.org> Tested-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nicolas Pitre committed Dec 13, 2008 at 15:06 UTC bf874896240cb00b22cd4f6cbcc143b17cc7fe0e
1 file changed +4
builtin-pack-objects.c
+4
@@ -1620,6 +1620,10 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
1620 for (i = 0; i < delta_search_threads; i++) {
1621 unsigned sub_size = list_size / (delta_search_threads - i);
1622
1623 + /* don't use too small segments or no deltas will be found */
1624 + if (sub_size < 2*window && i+1 < delta_search_threads)
1625 + sub_size = 0;
1626 +
1627 p[i].window = window;
1628 p[i].depth = depth;
1629 p[i].processed = processed;