From: Justin Tobler <jltobler@gmail.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/5] loose: load loose object map for the correct source
Date: Tue, 28 Jul 2026 15:14:05 -0500 [thread overview]
Message-ID: <amkMipjGA_7cwpOR@denethor> (raw)
In-Reply-To: <20260724-pks-odb-create-on-disk-v1-1-3b3d265d979b@pks.im>
On 26/07/24 05:48AM, Patrick Steinhardt wrote:
> When loading the loose object map via `load_one_loose_object_map()` we
> pass in both a repository and the corresponding source. We ultimately
> don't really respect the passed-in source though as we instead always
> load the map via the common directory. This doesn't make any sense
> though, as the function is called in a loop through all sources, and as
> such the expectation is that we'll load the map that belongs to the
> given source.
>
> Fix this bug by instead loading the map via the loose source's path.
IIUC the primary source is always being used, does this mean that
repositories using a compat hash and alternates are currently broken?
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> loose.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/loose.c b/loose.c
> index bf01d3e42d..9dad75373b 100644
> --- a/loose.c
> +++ b/loose.c
> @@ -61,9 +61,11 @@ static int insert_loose_map(struct odb_source_loose *loose,
> return inserted;
> }
>
> -static int load_one_loose_object_map(struct repository *repo, struct odb_source_loose *loose)
> +static int load_one_loose_object_map(struct odb_source_loose *loose)
> {
> - struct strbuf buf = STRBUF_INIT, path = STRBUF_INIT;
> + struct repository *repo = loose->base.odb->repo;
Ok, we really only need the repository to know the hash algo, but we can
get this from the loose source.
> + struct strbuf buf = STRBUF_INIT;
> + char *path;
> FILE *fp;
> int ret = -1;
>
> @@ -78,10 +80,10 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source_
> insert_loose_map(loose, repo->hash_algo->empty_blob, repo->compat_hash_algo->empty_blob);
> insert_loose_map(loose, repo->hash_algo->null_oid, repo->compat_hash_algo->null_oid);
>
> - repo_common_path_replace(repo, &path, "objects/loose-object-idx");
> - fp = fopen(path.buf, "rb");
> + path = xstrfmt("%s/loose-object-idx", loose->base.path);
Now we use the correct path per source. Looks good.
-Justin
next prev parent reply other threads:[~2026-07-28 20:14 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-24 3:48 [PATCH 0/5] odb: make creation of object database pluggable Patrick Steinhardt
2026-07-24 3:48 ` [PATCH 1/5] loose: load loose object map for the correct source Patrick Steinhardt
2026-07-24 17:26 ` Junio C Hamano
2026-07-28 20:14 ` Justin Tobler [this message]
2026-07-24 3:48 ` [PATCH 2/5] setup: detangle loading of loose object maps Patrick Steinhardt
2026-07-24 18:41 ` Junio C Hamano
2026-07-28 20:32 ` Justin Tobler
2026-07-24 3:48 ` [PATCH 3/5] setup: defer object database creation Patrick Steinhardt
2026-07-24 18:50 ` Junio C Hamano
2026-07-28 21:13 ` Justin Tobler
2026-07-24 3:48 ` [PATCH 4/5] odb/source: introduce function to map source type to name Patrick Steinhardt
2026-07-26 20:34 ` Junio C Hamano
2026-07-24 3:48 ` [PATCH 5/5] odb: make creation of on-disk structures pluggable Patrick Steinhardt
2026-07-26 20:42 ` Junio C Hamano
2026-07-28 21:23 ` Justin Tobler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=amkMipjGA_7cwpOR@denethor \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.