In the Linux kernel, the following vulnerability has been resolved: dm: fix unconditional IO throttle caused by REQPREFLUSH When a bio with REQPREFLUSH is submitted to dm, _sendemptyflush() generates a flushbio with REQOPWRITE | REQPREFLUSH | REQSYNC, which causes the flushbio to be throttled by wbtwait(). An example from v5.4, similar problem also exists in upstream: crash> bt 2091206 PID: 2091206 TASK: ffff2050df92a300 CPU: 109 COMMAND: "kworker/u260:0" #0 [ffff800084a2f7f0] _switchto at ffff80004008aeb8 #1 [ffff800084a2f820] _schedule at ffff800040bfa0c4 #2 [ffff800084a2f880] schedule at ffff800040bfa4b4 #3 [ffff800084a2f8a0] ioschedule at ffff800040bfa9c4 #4 [ffff800084a2f8c0] rqqoswait at ffff8000405925bc #5 [ffff800084a2f940] wbtwait at ffff8000405bb3a0 #6 [ffff800084a2f9a0] _rqqosthrottle at ffff800040592254 #7 [ffff800084a2f9c0] blkmqmakerequest at ffff80004057cf38 #8 [ffff800084a2fa60] genericmakerequest at ffff800040570138 #9 [ffff800084a2fae0] submitbio at ffff8000405703b4 #10 [ffff800084a2fb50] xlogwriteiclog at ffff800001280834 [xfs] #11 [ffff800084a2fbb0] xlogsync at ffff800001280c3c [xfs] #12 [ffff800084a2fbf0] xlogstatereleaseiclog at ffff800001280df4 [xfs] #13 [ffff800084a2fc10] xlogwrite at ffff80000128203c [xfs] #14 [ffff800084a2fcd0] xlogcilpush at ffff8000012846dc [xfs] #15 [ffff800084a2fda0] xlogcilpushwork at ffff800001284a2c [xfs] #16 [ffff800084a2fdb0] processonework at ffff800040111d08 #17 [ffff800084a2fe00] workerthread at ffff8000401121cc #18 [ffff800084a2fe70] kthread at ffff800040118de4 After commit 2def2845cc33 ("xfs: don't allow log IO to be throttled"), the metadata submitted by xlogwriteiclog() should not be throttled. But due to the existence of the dm layer, throttling flushbio indirectly causes the metadata bio to be throttled. Fix this by conditionally adding REQIDLE to flushbio.biopf, which makes wbtshouldthrottle() return false to avoid wbtwait().