All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Karthik Nayak <karthik.188@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 04/16] odb/source-packed: start converting to a proper `struct odb_source`
Date: Tue, 9 Jun 2026 12:47:42 +0200	[thread overview]
Message-ID: <aifvTmsPzaVdC8Yq@pks.im> (raw)
In-Reply-To: <aifAVpxanV31KUpC@pks.im>

On Tue, Jun 09, 2026 at 09:27:25AM +0200, Patrick Steinhardt wrote:
> On Mon, Jun 08, 2026 at 08:29:04AM -0700, Karthik Nayak wrote:
> > Patrick Steinhardt <ps@pks.im> writes:
> > > diff --git a/odb/source-packed.c b/odb/source-packed.c
> > > index 12e785be48..f81a990cbd 100644
> > > --- a/odb/source-packed.c
> > > +++ b/odb/source-packed.c
> > > +	CALLOC_ARRAY(packed, 1);
> > > +	odb_source_init(&packed->base, parent->base.odb, ODB_SOURCE_PACKED,
> > > +			parent->base.path, parent->base.local);
> > > +	packed->files = parent;
> > > +	strmap_init(&packed->packs_by_path);
> > > +
> > > +	packed->base.free = odb_source_packed_free;
> > > +
> > > +	if (!is_absolute_path(parent->base.path))
> > > +		chdir_notify_register(NULL, odb_source_packed_reparent, packed);
> > > +
> > 
> > Tangent: seems like no one sets the 'name' field within
> > `chdir_notify_register()`. It is meant for tracing purposes, but if no
> > one is using it, we might as well remove it...? Perhaps #leftoverbits
> 
> There are some callers: `chdir_notify_reparent()` calls
> `chdir_notify_register()` with a name, and the reference backends call
> that function with names.
> 
> Ultimately though I think that this infrastructure is somewhat misguided
> overall: we use this to update relative paths after chdir(3p), but if we
> stored absolute paths in the first place then we wouldn't have to care
> about the paths changing at all.
> 
> I plan to revisit this infra for the object database going forward: we
> expose and use `struct odb_source::path` in various other subsystems,
> including user-facing ones. This is inherently wrong though, as there
> may be sources that don't even have an on-disk path. So there's a need
> to drop that field and make it an internal implementation detail of the
> source's backend. And once we've done that, we can just as well start to
> store absolute paths.
> 
> For the reference backends we can already do that refactoring now-ish.
> I'll send a patch series later today.

Well, as ever so often I went down the rabbit hole and discovered way
more than I wanted:

  - We never free the `struct repository::refs_private` field.

  - We create the refdb multiple times in case we have "onbranch"
    conditionals and never free them.

  - The chicken-and-egg problem we have with "onbranch" and refdb
    creation is awkward.

So I'm now sitting at 11 patches to fix all of those bugs, and I'll also
have to make changes to "setup.c" to fix them. So I'll first have to
wait for ps/setup-centralize-odb-creation to land.

Patrick

  reply	other threads:[~2026-06-09 10:47 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-04 11:25 [PATCH 00/16] odb: make packed object source a proper `struct odb_source` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 01/16] packfile: rename `struct packfile_store` to `odb_source_packed` Patrick Steinhardt
2026-06-05 14:25   ` Karthik Nayak
2026-06-08  6:23     ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 02/16] packfile: move packed source into "odb/" subsystem Patrick Steinhardt
2026-06-08 15:09   ` Karthik Nayak
2026-06-09  7:27     ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 03/16] odb/source-packed: store pointer to "files" instead of generic source Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 04/16] odb/source-packed: start converting to a proper `struct odb_source` Patrick Steinhardt
2026-06-08 15:29   ` Karthik Nayak
2026-06-09  7:27     ` Patrick Steinhardt
2026-06-09 10:47       ` Patrick Steinhardt [this message]
2026-06-04 11:25 ` [PATCH 05/16] odb/source-packed: wire up `close()` callback Patrick Steinhardt
2026-06-08 15:31   ` Karthik Nayak
2026-06-04 11:25 ` [PATCH 06/16] odb/source-packed: wire up `reprepare()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 07/16] packfile: use higher-level interface to implement `has_object_pack()` Patrick Steinhardt
2026-06-08 16:07   ` Karthik Nayak
2026-06-04 11:25 ` [PATCH 08/16] odb/source-packed: wire up `read_object_info()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 09/16] odb/source-packed: wire up `read_object_stream()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 10/16] odb/source-packed: wire up `for_each_object()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 11/16] odb/source-packed: wire up `count_objects()` callback Patrick Steinhardt
2026-06-08 16:12   ` Karthik Nayak
2026-06-09  7:27     ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 12/16] odb/source-packed: wire up `find_abbrev_len()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 13/16] odb/source-packed: wire up `freshen_object()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 14/16] odb/source-packed: stub out remaining functions Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 15/16] midx: refactor interfaces to work on "packed" source Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 16/16] odb/source-packed: drop pointer to "files" parent source Patrick Steinhardt
2026-06-08 16:15 ` [PATCH 00/16] odb: make packed object source a proper `struct odb_source` Karthik Nayak
2026-06-09  7:27   ` Patrick Steinhardt
2026-06-09  8:50 ` [PATCH v2 00/17] " Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 01/17] packfile: rename `struct packfile_store` to `odb_source_packed` Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 02/17] packfile: split out packfile list logic Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 03/17] packfile: move packed source into "odb/" subsystem Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 04/17] odb/source-packed: store pointer to "files" instead of generic source Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 05/17] odb/source-packed: start converting to a proper `struct odb_source` Patrick Steinhardt
2026-06-09  8:50   ` [PATCH v2 06/17] odb/source-packed: wire up `close()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 07/17] odb/source-packed: wire up `reprepare()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 08/17] packfile: use higher-level interface to implement `has_object_pack()` Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 09/17] odb/source-packed: wire up `read_object_info()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 10/17] odb/source-packed: wire up `read_object_stream()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 11/17] odb/source-packed: wire up `for_each_object()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 12/17] odb/source-packed: wire up `count_objects()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 13/17] odb/source-packed: wire up `find_abbrev_len()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 14/17] odb/source-packed: wire up `freshen_object()` callback Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 15/17] odb/source-packed: stub out remaining functions Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 16/17] midx: refactor interfaces to work on "packed" source Patrick Steinhardt
2026-06-09  8:51   ` [PATCH v2 17/17] odb/source-packed: drop pointer to "files" parent source Patrick Steinhardt

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=aifvTmsPzaVdC8Yq@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=karthik.188@gmail.com \
    /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.