diff --git a/block/blk.h b/block/blk.h index b998a7761faf3..a99b1ff202c31 100644 --- a/block/blk.h +++ b/block/blk.h @@ -402,6 +402,8 @@ static inline bool bio_may_need_split(struct bio *bio, bv = __bvec_iter_bvec(bio->bi_io_vec, bio->bi_iter); if (bio->bi_iter.bi_size > bv->bv_len - bio->bi_iter.bi_bvec_done) return true; + if ((bv->bv_offset | bv->bv_len) & lim->dma_alignment) + return true; return bv->bv_len + bv->bv_offset > lim->max_fast_segment_size; }