Linux block layer
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Jinyoung Choi <j-young.choi@samsung.com>, linux-block@vger.kernel.org
Subject: [PATCH 1/8] block: tidy up the bio full checks in bio_add_hw_page
Date: Mon, 24 Jul 2023 09:54:26 -0700	[thread overview]
Message-ID: <20230724165433.117645-2-hch@lst.de> (raw)
In-Reply-To: <20230724165433.117645-1-hch@lst.de>

bio_add_hw_page already checks if the number of bytes trying to be added
even fit into max_hw_sectors limit of the queue.   Remove the call to
bio_full and just do a check for the smaller of the number of segments
in the bio and the queue max segments limit, and do this cheap check
before the more expensive gap to previous check.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 block/bio.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/block/bio.c b/block/bio.c
index 8672179213b939..72488ecea47acf 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -1014,6 +1014,10 @@ int bio_add_hw_page(struct request_queue *q, struct bio *bio,
 		if (bio_try_merge_hw_seg(q, bio, page, len, offset, same_page))
 			return len;
 
+		if (bio->bi_vcnt >=
+		    min(bio->bi_max_vecs, queue_max_segments(q)))
+			return 0;
+
 		/*
 		 * If the queue doesn't support SG gaps and adding this segment
 		 * would create a gap, disallow it.
@@ -1023,12 +1027,6 @@ int bio_add_hw_page(struct request_queue *q, struct bio *bio,
 			return 0;
 	}
 
-	if (bio_full(bio, len))
-		return 0;
-
-	if (bio->bi_vcnt >= queue_max_segments(q))
-		return 0;
-
 	bvec_set_page(&bio->bi_io_vec[bio->bi_vcnt], page, len, offset);
 	bio->bi_vcnt++;
 	bio->bi_iter.bi_size += len;
-- 
2.39.2


  reply	other threads:[~2023-07-24 16:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-24 16:54 rationalize the flow in bio_add_page and friends v2 Christoph Hellwig
2023-07-24 16:54 ` Christoph Hellwig [this message]
2023-07-25  1:41   ` [PATCH 1/8] block: tidy up the bio full checks in bio_add_hw_page Jinyoung Choi
2023-07-24 16:54 ` [PATCH 2/8] block: use SECTOR_SHIFT bio_add_hw_page Christoph Hellwig
2023-07-24 16:54 ` [PATCH 3/8] block: move the BIO_CLONED checks out of __bio_try_merge_page Christoph Hellwig
2023-07-24 16:54 ` [PATCH 4/8] block: move the bi_vcnt check " Christoph Hellwig
2023-07-24 16:54 ` [PATCH 5/8] block: move the bi_size overflow check in __bio_try_merge_page Christoph Hellwig
2023-07-24 16:54 ` [PATCH 6/8] block: downgrade a bio_full call in bio_add_page Christoph Hellwig
2023-07-24 16:54 ` [PATCH 7/8] block: move the bi_size update out of __bio_try_merge_page Christoph Hellwig
2023-07-24 16:54 ` [PATCH 8/8] block: don't pass a bio to bio_try_merge_hw_seg Christoph Hellwig
2023-07-25  1:55 ` rationalize the flow in bio_add_page and friends v2 Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2023-05-12 13:38 rationalize the flow in bio_add_page and friends Christoph Hellwig
2023-05-12 13:38 ` [PATCH 1/8] block: tidy up the bio full checks in bio_add_hw_page Christoph Hellwig
2023-05-17  7:18   ` Jinyoung CHOI

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230724165433.117645-2-hch@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=j-young.choi@samsung.com \
    --cc=linux-block@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox