On 3/10/22 5:36 PM, Jens Axboe wrote:
I'm assuming you have a plug setup for doing the reads, which is why you see the big difference (or there would be none). But blk_mq_flush_plug_list() should really take care of this when the plug is flushed, requests should be merged at that point. And from your description, doesn't sound like they are at all.
Maybe you need a list sort in blk_mq_flush_plug_list(). If you round-robin all the drives, then we'll hit that "run queue" path for each of them when we flush.