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

[PATCH 2/3] object-store: factor out odb_clear_loose_cache()

From
René Scharfe <l.s.r@web.de>
Date
Jan 6, 2019, 16:45 UTC
Message-ID
<6e8c3e47-4f11-e26f-64a6-ea4cfd8e2942@web.de>
In-Reply-To
<3512c798-aa42-6fba-ee82-d33a8985be91@web.de>

Add and use a function for emptying the loose object cache, so callers don't have to know any of its implementation details.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
 object-store.h | 3 +++
 object.c       | 2 +-
 packfile.c     | 7 ++-----
 sha1-file.c    | 7 +++++++
 4 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/object-store.h b/object-store.h
index 7236c571c0..709bf856b6 100644
--- a/object-store.h
+++ b/object-store.h
@@ -61,6 +61,9 @@ void odb_load_loose_cache(struct object_directory *odb, int subdir_nr);
 struct oid_array *odb_loose_cache(struct object_directory *odb,
 				  const struct object_id *oid);
 
+/* Empty the loose object cache for the specified object directory. */
+void odb_clear_loose_cache(struct object_directory *odb);
+
 struct packed_git {
 	struct packed_git *next;
 	struct list_head mru;
diff --git a/object.c b/object.c
index 79d636091c..a5c5cf830f 100644
--- a/object.c
+++ b/object.c
@@ -485,7 +485,7 @@ struct raw_object_store *raw_object_store_new(void)
 static void free_object_directory(struct object_directory *odb)
 {
 	free(odb->path);
-	oid_array_clear(&odb->loose_objects_cache);
+	odb_clear_loose_cache(odb);
 	free(odb);
 }
 
diff --git a/packfile.c b/packfile.c
index 8c6b47cc77..0fe9c21bf1 100644
--- a/packfile.c
+++ b/packfile.c
@@ -994,11 +994,8 @@ void reprepare_packed_git(struct repository *r)
 {
 	struct object_directory *odb;
 
-	for (odb = r->objects->odb; odb; odb = odb->next) {
-		oid_array_clear(&odb->loose_objects_cache);
-		memset(&odb->loose_objects_subdir_seen, 0,
-		       sizeof(odb->loose_objects_subdir_seen));
-	}
+	for (odb = r->objects->odb; odb; odb = odb->next)
+		odb_clear_loose_cache(odb);
 
 	r->objects->approximate_object_count_valid = 0;
 	r->objects->packed_git_initialized = 0;
diff --git a/sha1-file.c b/sha1-file.c
index cb8583b634..2f965b2688 100644
--- a/sha1-file.c
+++ b/sha1-file.c
@@ -2178,6 +2178,13 @@ void odb_load_loose_cache(struct object_directory *odb, int subdir_nr)
 	strbuf_release(&buf);
 }
 
+void odb_clear_loose_cache(struct object_directory *odb)
+{
+	oid_array_clear(&odb->loose_objects_cache);
+	memset(&odb->loose_objects_subdir_seen, 0,
+	       sizeof(odb->loose_objects_subdir_seen));
+}
+
 static int check_stream_sha1(git_zstream *stream,
 			     const char *hdr,
 			     unsigned long size,
-- 
2.20.1
Previous: René ScharfeNext: René Scharfe
Message 17 of 45 in “What's cooking in git.git (Dec 2018, #02; Fri, 28)”
  1. Junio C HamanoDec 28, 2018
  2. Elijah NewrenDec 28, 2018
  3. Johannes SchindelinJan 3, 2019
  4. Elijah NewrenJan 7, 2019
  5. ag/sequencer-reduce-rewriting-todo, was Re: What's cooking in git.git (Dec 2018, #02; Fri, 28)Alban Gruin, Dec 28, 2018
  6. Junio C HamanoDec 28, 2018
  7. Denton LiuDec 29, 2018
  8. ps/stash-in-c, was Re: What's cooking in git.git (Dec 2018, #02; Fri, 28)Johannes Schindelin, Jan 3, 2019
  9. jk/loose-object-cacheRené Scharfe, Jan 6, 2019
  10. 1/3 object-store: factor out odb_loose_cache()René Scharfe, Jan 6, 2019
  11. Jeff KingJan 7, 2019
  12. René ScharfeJan 7, 2019
  13. René ScharfeJan 7, 2019
  14. Philip OakleyJan 7, 2019
  15. Jeff KingJan 7, 2019
  16. René ScharfeJan 7, 2019
  17. 2/3 object-store: factor out odb_clear_loose_cache()René Scharfe, Jan 6, 2019
  18. 3/3 object-store: use one oid_array per subdirectory for loose cacheRené Scharfe, Jan 6, 2019
  19. Ævar Arnfjörð BjarmasonJan 6, 2019
  20. René ScharfeJan 6, 2019
  21. 0/11 jk/loose-object-cache sha1/object_id fixupsJeff King, Jan 7, 2019
  22. 01/11 sha1-file: fix outdated sha1 comment referencesJeff King, Jan 7, 2019
  23. 02/11 update comment references to sha1_object_info()Jeff King, Jan 7, 2019
  24. 03/11 http: use struct object_id instead of bare sha1Jeff King, Jan 7, 2019
  25. 04/11 sha1-file: modernize loose object file functionsJeff King, Jan 7, 2019
  26. 05/11 sha1-file: modernize loose header/stream functionsJeff King, Jan 7, 2019
  27. 06/11 sha1-file: convert pass-through functions to object_idJeff King, Jan 7, 2019
  28. 07/11 convert has_sha1_file() callers to has_object_file()Jeff King, Jan 7, 2019
  29. 08/11 sha1-file: drop has_sha1_file()Jeff King, Jan 7, 2019
  30. 09/11 sha1-file: prefer "loose object file" to "sha1 file" in messagesJeff King, Jan 7, 2019
  31. 10/11 sha1-file: avoid "sha1 file" for generic use in messagesJeff King, Jan 7, 2019
  32. 11/11 prefer "hash mismatch" to "sha1 mismatch"Jeff King, Jan 7, 2019
  33. René ScharfeJan 8, 2019
  34. Junio C HamanoJan 8, 2019
  35. Jeff KingJan 8, 2019
  36. Junio C HamanoJan 8, 2019
  37. Derrick StoleeJan 8, 2019
  38. Junio C HamanoJan 8, 2019
  39. Jeff KingJan 8, 2019
  40. Stefan BellerJan 9, 2019
  41. Stefan BellerJan 9, 2019
  42. Jeff KingJan 10, 2019
  43. 4/3 object-store: retire odb_load_loose_cache()René Scharfe, Jan 7, 2019
  44. Junio C HamanoJan 7, 2019
  45. Junio C HamanoJan 7, 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.