]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
block: Remove redundant plug in __submit_bio()
authorWen Xiong <wenxiong@linux.ibm.com>
Tue, 16 Jun 2026 14:31:21 +0000 (10:31 -0400)
committerJens Axboe <axboe@kernel.dk>
Tue, 16 Jun 2026 16:06:27 +0000 (10:06 -0600)
The patch removes the automatic plug/unplug operations from __submit_bio()
that were added to cache nsecs time when no explicit plug is used.

The plug mechanism is most effective when batching multiple I/O
operations together. Creating a plug for every bio submission
provides minimal benefit while adding function call overhead and
stack usage for every I/O operation.

Below is performance comparison with the latest upstream kernel.

Iotype  qd nj  rmix  mpstat busy  mpstat busy without plug
Randrw  1  20  100       53%                 24%
Randrw  1  40  100       70%                 24%
Randrw  1  20  70        40%                 24%
Randrw  1  40  70        60%                 26%
Randrw  1  20  0         14%                 6%
Randrw  1  40  0         20%                 7%

Fixes: 060406c61c7c ("block: add plug while submitting IO")
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Reviewed-by: Ming Lei <tom.leiming@gmail.com>
Link: https://patch.msgid.link/20260616143121.878021-1-wenxiong@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c

index 73a41df98c9a3ca18a19c2e4db0269ff8e0fe6be..365641266c9e822ba137a47d14060672a5f29559 100644 (file)
@@ -669,11 +669,6 @@ static inline blk_status_t blk_check_zone_append(struct request_queue *q,
 
 static void __submit_bio(struct bio *bio)
 {
-       /* If plug is not used, add new plug here to cache nsecs time. */
-       struct blk_plug plug;
-
-       blk_start_plug(&plug);
-
        if (!bdev_test_flag(bio->bi_bdev, BD_HAS_SUBMIT_BIO)) {
                blk_mq_submit_bio(bio);
        } else if (likely(bio_queue_enter(bio) == 0)) {
@@ -686,8 +681,6 @@ static void __submit_bio(struct bio *bio)
                        disk->fops->submit_bio(bio);
                blk_queue_exit(disk->queue);
        }
-
-       blk_finish_plug(&plug);
 }
 
 /*