[PATCH v2 for-6.18/block 00/16] block: fix ordering of recursive split IO

Yu Kuai posted 16 patches 3 weeks, 1 day ago
block/bio.c                 |  2 +-
block/blk-cgroup.h          |  6 ----
block/blk-core.c            | 19 ++++++-----
block/blk-crypto-fallback.c | 16 ++++------
block/blk-iolatency.c       | 19 +++++------
block/blk-merge.c           | 64 +++++++++++++++++++++++++------------
block/blk-mq-debugfs.c      |  1 +
block/blk-mq.c              | 10 ++++++
block/blk-throttle.c        |  2 +-
block/blk.h                 | 45 ++------------------------
drivers/md/md-linear.c      | 14 ++------
drivers/md/raid0.c          | 30 ++++++-----------
drivers/md/raid1.c          | 38 ++++++++--------------
drivers/md/raid1.h          |  4 ++-
drivers/md/raid10.c         | 54 ++++++++++++++-----------------
drivers/md/raid10.h         |  2 ++
drivers/md/raid5.c          | 10 +++---
include/linux/blk_types.h   |  7 ++--
include/linux/blkdev.h      |  3 ++
19 files changed, 148 insertions(+), 198 deletions(-)
[PATCH v2 for-6.18/block 00/16] block: fix ordering of recursive split IO
Posted by Yu Kuai 3 weeks, 1 day ago
From: Yu Kuai <yukuai3@huawei.com>

Changes from v1:
 - fix compile failure if CONFIG_BLOCK_CGROUP is disabled in patch 2;
 - change the words:
   fix disordered split IO -> fix ordering of split IO
 - add review tag from Bart and Christoph
Changes from RFC v3:
 - initialize bio->issue_time_ns in blk_mq_submit_bio, patch 2;
 - set/clear new queue_flag when iolatency is enabled/disabled, patch 3;
 - fix compile problem for md-linear, patch 12;
 - make should_fail_bio() non-static, and open code new helper, patch 14;
 - remove the checking for zoned disk, patch 15;
Changes from RFC v2:
 - add patch 1,2 to cleanup bio_issue;
 - add patch 3,4 to fix missing processing for split bio first;
 - bypass zoned device in patch 14;
Changes from RFC:
 - export a new helper bio_submit_split_bioset() instead of
export bio_submit_split() directly;
 - don't set no merge flag in the new helper;
 - add patch 7 and patch 10;
 - add patch 8 to skip bio checks for resubmitting split bio;

patch 1-5 cleanup bio_issue, and fix missing processing for split bio;
patch 6 export a bio split helper;
patch 7-13 unify bio split code;
path 14,15 convert the helper to insert split bio to the head of current
bio list;
patch 16 is a follow cleanup for raid0;

Yu Kuai (16):
  block: cleanup bio_issue
  block: initialize bio issue time in blk_mq_submit_bio()
  blk-mq: add QUEUE_FLAG_BIO_ISSUE_TIME
  md: fix mssing blktrace bio split events
  blk-crypto: fix missing blktrace bio split events
  block: factor out a helper bio_submit_split_bioset()
  md/raid0: convert raid0_handle_discard() to use
    bio_submit_split_bioset()
  md/raid1: convert to use bio_submit_split_bioset()
  md/raid10: add a new r10bio flag R10BIO_Returned
  md/raid10: convert read/write to use bio_submit_split_bioset()
  md/raid5: convert to use bio_submit_split_bioset()
  md/md-linear: convert to use bio_submit_split_bioset()
  blk-crypto: convert to use bio_submit_split_bioset()
  block: skip unnecessary checks for split bio
  block: fix ordering of recursive split IO
  md/raid0: convert raid0_make_request() to use
    bio_submit_split_bioset()

 block/bio.c                 |  2 +-
 block/blk-cgroup.h          |  6 ----
 block/blk-core.c            | 19 ++++++-----
 block/blk-crypto-fallback.c | 16 ++++------
 block/blk-iolatency.c       | 19 +++++------
 block/blk-merge.c           | 64 +++++++++++++++++++++++++------------
 block/blk-mq-debugfs.c      |  1 +
 block/blk-mq.c              | 10 ++++++
 block/blk-throttle.c        |  2 +-
 block/blk.h                 | 45 ++------------------------
 drivers/md/md-linear.c      | 14 ++------
 drivers/md/raid0.c          | 30 ++++++-----------
 drivers/md/raid1.c          | 38 ++++++++--------------
 drivers/md/raid1.h          |  4 ++-
 drivers/md/raid10.c         | 54 ++++++++++++++-----------------
 drivers/md/raid10.h         |  2 ++
 drivers/md/raid5.c          | 10 +++---
 include/linux/blk_types.h   |  7 ++--
 include/linux/blkdev.h      |  3 ++
 19 files changed, 148 insertions(+), 198 deletions(-)

-- 
2.39.2
Re: [PATCH v2 for-6.18/block 00/16] block: fix ordering of recursive split IO
Posted by Jens Axboe 3 weeks, 1 day ago
On Wed, 10 Sep 2025 14:30:40 +0800, Yu Kuai wrote:
> Changes from v1:
>  - fix compile failure if CONFIG_BLOCK_CGROUP is disabled in patch 2;
>  - change the words:
>    fix disordered split IO -> fix ordering of split IO
>  - add review tag from Bart and Christoph
> Changes from RFC v3:
>  - initialize bio->issue_time_ns in blk_mq_submit_bio, patch 2;
>  - set/clear new queue_flag when iolatency is enabled/disabled, patch 3;
>  - fix compile problem for md-linear, patch 12;
>  - make should_fail_bio() non-static, and open code new helper, patch 14;
>  - remove the checking for zoned disk, patch 15;
> Changes from RFC v2:
>  - add patch 1,2 to cleanup bio_issue;
>  - add patch 3,4 to fix missing processing for split bio first;
>  - bypass zoned device in patch 14;
> Changes from RFC:
>  - export a new helper bio_submit_split_bioset() instead of
> export bio_submit_split() directly;
>  - don't set no merge flag in the new helper;
>  - add patch 7 and patch 10;
>  - add patch 8 to skip bio checks for resubmitting split bio;
> 
> [...]

Applied, thanks!

[01/16] block: cleanup bio_issue
        commit: 1733e88874838ddebf7774440c285700865e6b08
[02/16] block: initialize bio issue time in blk_mq_submit_bio()
        commit: 1f963bdd6420b6080bcfd0ee84a75c96f35545a6
[03/16] blk-mq: add QUEUE_FLAG_BIO_ISSUE_TIME
        commit: ea3d1f104db60f9d5074b33819ccea3c216e0bee
[04/16] md: fix mssing blktrace bio split events
        commit: 22f166218f7313e8fe2d19213b5f4b3265f8c39e
[05/16] blk-crypto: fix missing blktrace bio split events
        commit: 06d712d297649f48ebf1381d19bd24e942813b37
[06/16] block: factor out a helper bio_submit_split_bioset()
        commit: e37b5596a19be9a150cb194ec32e78f295a3574b
[07/16] md/raid0: convert raid0_handle_discard() to use bio_submit_split_bioset()
        commit: 5b38ee5a4a12cfdefd848f7ec09da3e9007ad55f
[08/16] md/raid1: convert to use bio_submit_split_bioset()
        commit: a6fcc160d6fd9b4ddd229e351518daee21eecad7
[09/16] md/raid10: add a new r10bio flag R10BIO_Returned
        commit: deeeab3028afebf2f13428f69dcba9f572f0463b
[10/16] md/raid10: convert read/write to use bio_submit_split_bioset()
        commit: 6fc07785d9b89255bba45fc84475bb32f9737a90
[11/16] md/raid5: convert to use bio_submit_split_bioset()
        commit: 9e8a5b37c9ea3ae9db9028ea756ececf221d9a5a
[12/16] md/md-linear: convert to use bio_submit_split_bioset()
        commit: 6529d41d87827f9a27f6c0c6d34c2b77b250b6c6
[13/16] blk-crypto: convert to use bio_submit_split_bioset()
        commit: e3290419d9be6cbd7a42c0691504dd66825cabf5
[14/16] block: skip unnecessary checks for split bio
        commit: 0b64682e78f7a53ea863e368b1aa66f05767858d
[15/16] block: fix ordering of recursive split IO
        commit: b2f5974079d82a4761f002e80601064d4e39a81f
[16/16] md/raid0: convert raid0_make_request() to use bio_submit_split_bioset()
        commit: e0ed2bca7bef9267da0928a8ed6d1de41f19ecf6

Best regards,
-- 
Jens Axboe