bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP
[ Upstream commitf826ec7966] It is possible for physically contiguous folios to have discontiguous struct pages if SPARSEMEM is enabled and SPARSEMEM_VMEMMAP is not. This is correctly handled by folio_page_idx(), so remove this open-coded implementation. Fixes:640d1930be(block: Add bio_for_each_folio_all()) Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Link: https://lore.kernel.org/r/20250612144126.2849931-1-willy@infradead.org Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
51c695986f
commit
9e263d9459
+1
-1
@@ -294,7 +294,7 @@ static inline void bio_first_folio(struct folio_iter *fi, struct bio *bio,
|
||||
|
||||
fi->folio = page_folio(bvec->bv_page);
|
||||
fi->offset = bvec->bv_offset +
|
||||
PAGE_SIZE * (bvec->bv_page - &fi->folio->page);
|
||||
PAGE_SIZE * folio_page_idx(fi->folio, bvec->bv_page);
|
||||
fi->_seg_count = bvec->bv_len;
|
||||
fi->length = min(folio_size(fi->folio) - fi->offset, fi->_seg_count);
|
||||
fi->_next = folio_next(fi->folio);
|
||||
|
||||
Reference in New Issue
Block a user