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

Re: [PATCH 3/6] builtin/grep: simplify how we preload packs

From
Taylor Blau <me@ttaylorr.com>
Date
Oct 8, 2025, 20:43 UTC
Message-ID
<aObNDRTffcWsYGZ4@nand.local>
In-Reply-To
<20251007-pks-packfiles-convert-get-all-v1-3-428227657a89@pks.im>
On Tue, Oct 07, 2025 at 02:41:09PM +0200, Patrick Steinhardt wrote:
Show 10 quoted lines
> When using multiple threads in git-grep(1) we eagerly preload both the
> gitmodules file as well as the packfiles so that the threads won't race
> with one another to initialize these data structures.
>
> For packfiles, this is done by calling `packfile_store_get_packs()`,
> which first loads our packfiles and then returns a pointer to the first
> such packfile. This pointer is ignored though, as all we really care
> about is that `packfile_store_prepare()` was called.
>
> Historyically, that function was file-local to "packfile.c", but that
s/Historyically/Historically
Show 19 quoted lines
> changed with 4188332569 (packfile: move `get_multi_pack_index()` into
> "midx.c", 2025-09-02). We can thus simplify the code by calling that
> function directly.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
>  builtin/grep.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/builtin/grep.c b/builtin/grep.c
> index 13841fbf00..53cccf2d25 100644
> --- a/builtin/grep.c
> +++ b/builtin/grep.c
> @@ -1214,7 +1214,7 @@ int cmd_grep(int argc,
>  		if (recurse_submodules)
>  			repo_read_gitmodules(the_repository, 1);
>  		if (startup_info->have_repository)
> -			(void)packfile_store_get_packs(the_repository->objects->packfiles);
> +			packfile_store_prepare(the_repository->objects->packfiles);

Makes sense. That function literally calls packfile_store_prepare() on its argument, and then returns store->packs. Since we don't care about the result as you note, calling packfile_store_prepare() directly makes sense.

Thanks, Taylor

Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 8 of 27 in “packfile: remove `packfile_store_get_packs()`”
  1. 0/6 packfile: remove `packfile_store_get_packs()`Patrick Steinhardt, Oct 7, 2025
  2. 1/6 object-name: convert to use `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 7, 2025
  3. Taylor BlauOct 8, 2025
  4. 2/6 builtin/gc: convert to use `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 7, 2025
  5. Taylor BlauOct 8, 2025
  6. Patrick SteinhardtOct 9, 2025
  7. 3/6 builtin/grep: simplify how we preload packsPatrick Steinhardt, Oct 7, 2025
  8. Taylor BlauOct 8, 2025
  9. 4/6 packfile: drop `packfile_store_get_packs()`Patrick Steinhardt, Oct 7, 2025
  10. Taylor BlauOct 8, 2025
  11. 5/6 packfile: introduce macro to iterate through packsPatrick Steinhardt, Oct 7, 2025
  12. Taylor BlauOct 8, 2025
  13. Patrick SteinhardtOct 9, 2025
  14. 6/6 packfile: rename `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 7, 2025
  15. Taylor BlauOct 8, 2025
  16. Patrick SteinhardtOct 9, 2025
  17. 0/6 packfile: remove `packfile_store_get_packs()`Patrick Steinhardt, Oct 9, 2025
  18. 1/6 object-name: convert to use `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 9, 2025
  19. Justin ToblerOct 14, 2025
  20. 2/6 builtin/gc: convert to use `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 9, 2025
  21. 3/6 builtin/grep: simplify how we preload packsPatrick Steinhardt, Oct 9, 2025
  22. 4/6 packfile: drop `packfile_store_get_packs()`Patrick Steinhardt, Oct 9, 2025
  23. Justin ToblerOct 14, 2025
  24. 5/6 packfile: introduce macro to iterate through packsPatrick Steinhardt, Oct 9, 2025
  25. Justin ToblerOct 14, 2025
  26. 6/6 packfile: rename `packfile_store_get_all_packs()`Patrick Steinhardt, Oct 9, 2025
  27. Justin ToblerOct 14, 2025

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.