If dp->get_page() returns an non-zero offset, the bio might need an
additional bvec to deal with the offset. For example, if remaining is
exactly one page size, but there is an offset, the memory will span
two pages.

Signed-off-by: Benjamin Marzinski <[email protected]>
---
 drivers/md/dm-io.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
index 7409490259d1..3333943fe288 100644
--- a/drivers/md/dm-io.c
+++ b/drivers/md/dm-io.c
@@ -347,7 +347,7 @@ static void do_region(const blk_opf_t opf, unsigned int 
region,
                        break;
                default:
                        num_bvecs = bio_max_segs(dm_sector_div_up(remaining,
-                                               (PAGE_SIZE >> SECTOR_SHIFT)));
+                                               (PAGE_SIZE >> SECTOR_SHIFT)) + 
1);
                }
 
                bio = bio_alloc_bioset(where->bdev, num_bvecs, opf, GFP_NOIO,
-- 
2.45.0


Reply via email to