On 4/18/22 6:19 PM, Linus Torvalds wrote: > On Mon, Apr 18, 2022 at 3:12 PM Jens Axboe <axboe@xxxxxxxxx> wrote: >> >> Hmm yes. But doesn't preemption imply a full barrier? As long as we >> assign the plug at the end, we should be fine. And just now looking that >> up, there's even already a comment to that effect in blk_start_plug(). >> So barring any weirdness with that, maybe that's the solution. > > My worry is more about the code that adds new cb_list entries to the > plug, racing with then some random preemption event that flushes the > plug. > > preemption itself is perfectly fine wrt any per-thread data updates > etc, but if preemption then also *changes* the data that is updated, > that's not great. > > So that worries me. Yes, and the same is true for eg merge traversal. We'd then need to disable preempt for that as well... It may be the best option in terms of making this issue go away without having callers working around it. I don't have a good answer to this right now, I'll think about it. -- Jens Axboe