Re: [PATCH 1/3] commit-reach: deduplicate queue entries in paint_down_to_common
From: Jeff King <hidden>
Date: 2026-05-25 10:02:17
On Mon, May 25, 2026 at 09:53:09AM +0200, Kristofer Karlsson wrote:
Good catch Jeff! I think it's possible that I missed the flag cleanup case here, but it's also possible that I got lucky and it worked anyway.
Well, you did add it to ALL_FLAGS, so it might have been your subconscious making you lucky. :)
That said, I think the observation in the other email thread/commit is key here. I will reply back in that one, but it seems like this can all be simplified using Jeff's idea with an amortized O(1) solution by caching a known non-stale entry in the queue, and thus becomes obsolete. I will post a new patchset when the discussion slows down.
Nifty, thanks.
As for general flag management, I will spend some more time thinking about it. I don't fully trust static code analysis to work, but some cheap assertion based model might give a nice trade-off.
I think it would be really nice if we had per-operation flags kept outside of the structs completely. If you're a masochist, I fiddled around a bit with using a hash instead in this thread: https://lore.kernel.org/git/20250826055210.GA1031277@coredump.intra.peff.net/ (local) It's sadly (but not surprisingly) quite slow. I do wonder how a slab would work there, but it would take a bit more surgery. We only allocate slab ids for commits, and we'd have to do so for all objects if we want to hold flags. Probably a dead-end, but it would be neat if all of these flag allocation worries just went away. -Peff