From: Patrick Steinhardt <ps@pks.im>
To: Taylor Blau <ttaylorr@openai.com>
Cc: Kristofer Karlsson <krka@spotify.com>,
'@com-79390.smtp.subspace.kernel.org,
Taylor Blau <me@ttaylorr.com>,
Kristofer Karlsson via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org
Subject: Re: [PATCH 2/2] commit-graph: propagate topo_levels slab to all chain layers
Date: Mon, 13 Jul 2026 08:16:31 +0200 [thread overview]
Message-ID: <alSCv5I94qjbSucQ@pks.im> (raw)
In-Reply-To: <alFuxPQQcFxseAzh@com-79390>
On Fri, Jul 10, 2026 at 03:14:28PM -0700, Taylor Blau wrote:
> On Tue, Jul 07, 2026 at 04:57:13PM +0200, Kristofer Karlsson wrote:
> > (b) Move topo_levels to struct object_database. Since
> > fill_commit_graph_info() can already reach the odb via
> > g->odb_source->odb, no signature changes are needed.
> > The write side becomes a single assignment:
> >
> > ctx.r->objects->topo_levels = &topo_levels;
> >
> > and cleanup becomes:
> >
> > ctx.r->objects->topo_levels = NULL;
> >
> > No chain walk needed and the diff is fairly small.
> > I am not sure about the semantics of it though -- should the odb
> > have a reference to topo_levels?
>
> This seems to be the most promising approach, though I'd be curious what
> Patrick's thoughts are. The commit-slab API is really a property of the
> object database, but we treat these as a global as I do not recall them
> yet being touched by the ODB refactoring effort.
I was investigating several times whether we can remove them from global
scope and move them into the object database indeed. The answer is that
it's somewhat complicated because we reuse the slab for multiple
different things, and detangling that has proven to be a bit of a mess.
The other question here is whether commit graphs really are a property
of the object database itself, or whether they are rather a property of
a given backend. Sure, we can only have a single commit graph at any
point in time, so they feel like they are at the object database level.
But is the current implementation of a commit graph really the best for
all potential backends out there?
If you take for example a distributed backend to store objects, then you
probably don't want to have a single local commit graph that is stored
in ".git/objects/info". Furthermore, the current format may not even be
the best one to store the cached information, either.
So ultimately, I can see one of two approaches:
- Either we make the commit graph itself pluggable as a standalone
mechanism, too.
- Or we treat it as a property of the object backend.
I haven't fully made up my mind yet. But I guess detangling the current
mess that we have with the commit graphs would help regardless of which
direction we eventually go into.
Thanks!
Patrick
next prev parent reply other threads:[~2026-07-13 6:16 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 9:59 [PATCH 0/2] commit-graph: fix topo_levels slab propagation regression Kristofer Karlsson via GitGitGadget
2026-07-07 9:59 ` [PATCH 1/2] commit-graph: add trace2 instrumentation for generation DFS Kristofer Karlsson via GitGitGadget
2026-07-07 13:46 ` Taylor Blau
2026-07-07 14:08 ` Kristofer Karlsson
2026-07-10 22:09 ` Taylor Blau
2026-07-10 22:28 ` Junio C Hamano
2026-07-10 22:56 ` Taylor Blau
2026-07-11 21:18 ` Junio C Hamano
2026-07-13 19:55 ` Kristofer Karlsson
2026-07-13 20:42 ` Junio C Hamano
2026-07-13 22:17 ` Kristofer Karlsson
2026-07-07 16:55 ` Junio C Hamano
2026-07-07 17:39 ` Kristofer Karlsson
2026-07-07 9:59 ` [PATCH 2/2] commit-graph: propagate topo_levels slab to all chain layers Kristofer Karlsson via GitGitGadget
2026-07-07 13:49 ` Taylor Blau
2026-07-07 14:02 ` Kristofer Karlsson
2026-07-07 14:57 ` Kristofer Karlsson
2026-07-10 22:14 ` Taylor Blau
2026-07-13 6:16 ` Patrick Steinhardt [this message]
2026-07-14 3:31 ` Taylor Blau
2026-07-07 17:00 ` Junio C Hamano
2026-07-07 17:42 ` Kristofer Karlsson
2026-07-07 20:13 ` Junio C Hamano
2026-07-09 13:43 ` Patrick Steinhardt
2026-07-09 15:02 ` [PATCH v2 0/2] commit-graph: fix topo_levels slab propagation regression Kristofer Karlsson via GitGitGadget
2026-07-09 15:03 ` [PATCH v2 1/2] commit-graph: add trace2 instrumentation for generation DFS Kristofer Karlsson via GitGitGadget
2026-07-09 15:03 ` [PATCH v2 2/2] commit-graph: propagate topo_levels slab to all chain layers Kristofer Karlsson via GitGitGadget
2026-07-10 22:15 ` [PATCH v2 0/2] commit-graph: fix topo_levels slab propagation regression Taylor Blau
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=alSCv5I94qjbSucQ@pks.im \
--to=ps@pks.im \
--cc='@com-79390.smtp.subspace.kernel.org \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=krka@spotify.com \
--cc=me@ttaylorr.com \
--cc=ttaylorr@openai.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox