block: remove the segment size check in bio_will_gap [Linux 5.2]

block: remove the segment size check in bio_will_gap [Linux 5.2]

This Linux kernel change "block: remove the segment size check in bio_will_gap" is included in the Linux 5.2 release. This change is authored by Christoph Hellwig <hch [at] lst.de> on Tue May 21 09:01:42 2019 +0200. The commit for this change in Linux stable tree is 200a9af (patch).

block: remove the segment size check in bio_will_gap

We fundamentally do not have a maximum segement size for devices with a
virt boundary.  So don't bother checking it, especially given that the
existing checks didn't properly work to start with as we never fully
update the front/back segment size and miss the bi_seg_front_size that
wuld have been required for some cases.

Signed-off-by: Christoph Hellwig <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>

There are 19 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 block/blk-merge.c | 19 +------------------
 1 file changed, 1 insertion(+), 18 deletions(-)

diff --git a/block/blk-merge.c b/block/blk-merge.c
index 80a5a0f..eee2c02 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -12,23 +12,6 @@

 #include "blk.h"

-/*
- * Check if the two bvecs from two bios can be merged to one segment.  If yes,
- * no need to check gap between the two bios since the 1st bio and the 1st bvec
- * in the 2nd bio can be handled in one segment.
- */
-static inline bool bios_segs_mergeable(struct request_queue *q,
-       struct bio *prev, struct bio_vec *prev_last_bv,
-       struct bio_vec *next_first_bv)
-{
-   if (!biovec_phys_mergeable(q, prev_last_bv, next_first_bv))
-       return false;
-   if (prev->bi_seg_back_size + next_first_bv->bv_len >
-           queue_max_segment_size(q))
-       return false;
-   return true;
-}
-
 static inline bool bio_will_gap(struct request_queue *q,
        struct request *prev_rq, struct bio *prev, struct bio *next)
 {
@@ -60,7 +43,7 @@ static inline bool bio_will_gap(struct request_queue *q,
     */
    bio_get_last_bvec(prev, &pb);
    bio_get_first_bvec(next, &nb);
-   if (bios_segs_mergeable(q, prev, &pb, &nb))
+   if (biovec_phys_mergeable(q, &pb, &nb))
        return false;
    return __bvec_gap_to_prev(q, &pb, nb.bv_offset);
 }

Leave a Reply

Your email address will not be published. Required fields are marked *