Re: [PATCH v2 6/8] repack: track the preferred pack explicitly in MIDX write steps
- From
Jeff King <peff@peff.net>
- Date
- Oct 2, 2026, 23:28 UTC
- Message-ID
- <20261002232834.GE834759@coredump.intra.peff.net>
- In-Reply-To
- <a85dbcd04c7957756848e5f3102744d20b509fc4.1790827875.git.me@ttaylorr.com>
On Wed, Sep 30, 2026 at 11:11:58PM -0500, Taylor Blau wrote:
Show 8 quoted lines
> A MIDX write step marks preferred packs in its string-list entries and > chooses the last marked entry when executing the step. That makes the > choice depend on list order, preventing the list from being sorted for > membership checks. > > Record the last candidate directly in the step, borrowing its name from > the write list. This preserves preferred-pack selection while allowing > the list to be sorted without changing that choice.
This is certainly cleaner, though it looks like the existing code works by marking item->util and then doing a linear search for it. So wouldn't that work even after sorting?
Show 6 quoted lines
> @@ -719,7 +713,7 @@ static int repack_make_midx_compaction_plan(struct repack_write_midx_opts *opts, > > item = string_list_append(&step.u.write, buf.buf); > if (p->multi_pack_index || i == opts->geometry->pack_nr - 1) > - item->util = (void *)1; /* mark as preferred */ > + step.preferred_pack = item->string;
I am certainly happy to see these gross casts go away, though.
-Peff