Re: [PATCH rcu 14/16] rxrpc: Use call_rcu_hurry() instead of call_rcu()

From: Joel Fernandes
Date: Wed Nov 30 2022 - 17:48:03 EST


Hi David,

On Wed, Nov 30, 2022 at 7:09 PM David Howells <dhowells@xxxxxxxxxx> wrote:
>
> Note that this conflicts with my patch:
>
> rxrpc: Don't hold a ref for connection workqueue
> https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit/?h=rxrpc-next&id=450b00011290660127c2d76f5c5ed264126eb229
>
> which should render it unnecessary. It's a little ahead of yours in the
> net-next queue, if that means anything.

Could you clarify why it is unnecessary?

After your patch, you are still doing a wake up in your call_rcu() callback:

- ASSERTCMP(refcount_read(&conn->ref), ==, 0);
+ if (atomic_dec_and_test(&rxnet->nr_conns))
+ wake_up_var(&rxnet->nr_conns);
+}

Are you saying the code can now tolerate delays? What if the RCU
callback is invoked after arbitrarily long delays making the sleeping
process to wait?

If you agree, you can convert the call_rcu() to call_rcu_hurry() in
your patch itself. Would you be willing to do that? If not, that's
totally OK and I can send a patch later once yours is in (after
further testing).

Thanks,

- Joel