On 2026-10-13 08:48, Boqun Feng wrote:
On Tue, Oct 13, 2026 at 03:40:36PM +0800, Lai Jiangshan wrote:
[...]

This breaks the forward-progress argument used by the underlying
hazptr implementation: after removing an object from publication,
there should not be a continuing stream of new readers acquiring
that same object. Here, the bucket is never unpublished.

For example, let B be the bucket containing key K:

   Updater                    Reader                 Scan kthread
   -------                    ------                 ------------
   Unlink K from B
   hazptr_synchronize(B)
                              Acquire B
                                                     Observe B;
                                                     retain waiter
                              Release B
                              Acquire B again
                                                     Observe B;
                                                     retain waiter
                              Release B
                              ...                    ...


This is more of an implementation issue,
I agree with Boqun about the point that this is really an implementation
issue.

If we care about forward progress in the scenario of a repeated
address reuse, we just need to wire up a "0/1" low bit phase tag and
make hazptr acquire pick it up and set it within its hazptr slot. This
will ensure forward progress in that scenario. hazptr synchronzie
would therefore flip this phase between 0 and 1, and check that the
pointer it's looking for is not set in the other phase, in alternance,
handling both phases within one synchronize. Indeed, this phase concept
comes from the realm of RCU implementations.

I think that the overall mindset so far has been "RCU does this" and
"Hazard pointers do this" as if those were entirely predefined
mechanisms. I think the way forward is not "one or the other", but
rather to combine the strengths of each of those mechanisms into
something better.

Thanks,

Mathieu

--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com

Reply via email to