On Mon, Apr 18, 2022 at 06:30:16PM -0600, Jens Axboe wrote: > 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... One is only supposed to disable preemption for short and bounded things, otherwise we'll get people complaining their latencies are going bad.