On Thu, Jan 06, 2022 at 03:46:54PM +0800, brookxu wrote: > Hi Ming: > > I think it may be due to other reasons, I test this patch seems work fine, > Can you verify it in your environment? Your patch can't cover the issue Ning Li reported. > > > From 2c7305042e71d0f53ca50a8a3f2eebe6a2dcdb86 Mon Sep 17 00:00:00 2001 > From: Chunguang Xu <brookxu@xxxxxxxxxxx> > Date: Thu, 6 Jan 2022 15:18:50 +0800 > Subject: [PATCH] blk-throtl: avoid double charge of bio IOPS due to split > > After commit 900e08075202("block: move queue enter logic into > blk_mq_submit_bio()"), submit_bio_checks() is moved from the > entrance of the IO stack to the specific submit_bio() entrance. > Therefore, the IO may be splited before entering blk-throtl, so > we need to check whether the BIO is throttled, and only need > to update the io_split_cnt for the throttled bio to avoid > double charge. Actually since commit 900e08075202, your commit 4f1e9630afe6 ("blk-throtl: optimize IOPS throttle for large IO scenarios") doesn't need any more, because split bio is always sent to submit_bio_checks(). But I don't think that way is reasonable, especially precise driver tag and request is consumed by each throttling, so the following patch is posted: https://lore.kernel.org/linux-block/20220104134223.590803-1-ming.lei@xxxxxxxxxx/T/#u Thanks, Ming