git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 12/12] pack-bitmap: don't rely on bitmap_git->reuse_objects

From
Christian Couder <christian.couder@gmail.com>
Date
Dec 18, 2019, 11:25 UTC
Message-ID
<20191218112547.4974-13-chriscool@tuxfamily.org>
In-Reply-To
<20191218112547.4974-1-chriscool@tuxfamily.org>
From: Jeff King <peff@peff.net>

We no longer compute bitmap_git->reuse_objects, so we cannot rely on it anymore to terminate the loop early; we have to iterate to the end.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 pack-bitmap.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/pack-bitmap.c b/pack-bitmap.c
index a1d43d367a..5a8689cdf8 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -629,7 +629,7 @@ static void show_objects_for_type(
 	enum object_type object_type,
 	show_reachable_fn show_reach)
 {
-	size_t pos = 0, i = 0;
+	size_t i = 0;
 	uint32_t offset;
 
 	struct ewah_iterator it;
@@ -637,13 +637,15 @@ static void show_objects_for_type(
 
 	struct bitmap *objects = bitmap_git->result;
 
-	if (bitmap_git->reuse_objects == bitmap_git->pack->num_objects)
-		return;
-
 	ewah_iterator_init(&it, type_filter);
 
-	while (i < objects->word_alloc && ewah_iterator_next(&filter, &it)) {
+	for (i = 0; i < objects->word_alloc &&
+			ewah_iterator_next(&filter, &it); i++) {
 		eword_t word = objects->words[i] & filter;
+		size_t pos = (i * BITS_IN_EWORD);
+
+		if (!word)
+			continue;
 
 		for (offset = 0; offset < BITS_IN_EWORD; ++offset) {
 			struct object_id oid;
@@ -655,9 +657,6 @@ static void show_objects_for_type(
 
 			offset += ewah_bit_ctz64(word >> offset);
 
-			if (pos + offset < bitmap_git->reuse_objects)
-				continue;
-
 			entry = &bitmap_git->pack->revindex[pos + offset];
 			nth_packed_object_oid(&oid, bitmap_git->pack, entry->nr);
 
@@ -666,9 +665,6 @@ static void show_objects_for_type(
 
 			show_reach(&oid, object_type, 0, hash, bitmap_git->pack, entry->offset);
 		}
-
-		pos += BITS_IN_EWORD;
-		i++;
 	}
 }
 
-- 
2.24.1.498.g561400140f
Previous: Christian CouderNext: Christian Couder
Message 12 of 13 in “Rewrite packfile reuse code”
  1. 00/12 Rewrite packfile reuse codeChristian Couder, Dec 18, 2019
  2. 01/12 builtin/pack-objects: report reused packfile objectsChristian Couder, Dec 18, 2019
  3. 03/12 ewah/bitmap: introduce bitmap_word_alloc()Christian Couder, Dec 18, 2019
  4. 02/12 packfile: expose get_delta_base()Christian Couder, Dec 18, 2019
  5. 04/12 pack-bitmap: introduce bitmap_walk_contains()Christian Couder, Dec 18, 2019
  6. 05/12 pack-bitmap: uninteresting oid can be outside bitmapped packfileChristian Couder, Dec 18, 2019
  7. 06/12 pack-bitmap: simplify bitmap_has_oid_in_uninteresting()Christian Couder, Dec 18, 2019
  8. 09/12 builtin/pack-objects: introduce obj_is_packed()Christian Couder, Dec 18, 2019
  9. 07/12 csum-file: introduce hashfile_total()Christian Couder, Dec 18, 2019
  10. 08/12 pack-objects: introduce pack.allowPackReuseChristian Couder, Dec 18, 2019
  11. 10/12 pack-objects: improve partial packfile reuseChristian Couder, Dec 18, 2019
  12. 12/12 pack-bitmap: don't rely on bitmap_git->reuse_objectsChristian Couder, Dec 18, 2019
  13. 11/12 pack-objects: add checks for duplicate objectsChristian Couder, Dec 18, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.