Thread (26 messages) 26 messages, 5 authors, 2026-05-26

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help