Re: [PATCH v2 01/26] rculist: introduce list_next_or_null_rr_rcu()

From: Linus Torvalds
Date: Mon May 21 2018 - 10:22:25 EST


On Mon, May 21, 2018 at 6:51 AM Roman Penyaev <
roman.penyaev@xxxxxxxxxxxxxxxx> wrote:

> No, I continue from the pointer, which I assigned on the previous IO
> in order to send IO fairly and keep load balanced.

Right. And that's exactly what has both me and Paul nervous. You're no
longer in the RCU domain. You're using a pointer where the lifetime has
nothing to do with RCU any more.

Can it be done? Sure. But you need *other* locking for it (that you haven't
explained), and it's fragile as hell.

It's probably best to not use RCU for it at all, but depend on that "other
locking" that you have to have anyway, to keep the pointer valid over the
non-RCU region.

Linus