Messages in this thread | | | Date | Wed, 1 Nov 2023 22:48:55 +0000 | From | Al Viro <> | Subject | Re: [PATCH] rxrpc_find_service_conn_rcu: use read_seqbegin() rather than read_seqbegin_or_lock() |
| |
On Wed, Nov 01, 2023 at 10:52:15PM +0100, Oleg Nesterov wrote:
> > Why would you want to force that "switch to locked on the second pass" policy > > on every possible caller? > > Because this is what (I think) read_seqbegin_or_lock() is supposed to do. > It should take the lock for writing if the lockless access failed. At least > according to the documentation.
Not really - it's literally seqbegin or lock, depending upon what the caller tells it... IMO the mistake in docs is the insistence on using do-while loop for its users.
Take a look at d_walk() and try to shoehorn that into your variant. Especially the D_WALK_NORETRY handling...
| |