>> - bio = iomap_dio_alloc_bio(iter, dio, 1, REQ_OP_WRITE | REQ_SYNC | REQ_IDLE); >> + if (len > PAGE_SIZE) { >> + page = mm_get_huge_zero_page(current->mm); >> + if (likely(page)) >> + huge_page = true; >> + } >> + >> + if (!huge_page) >> + page = ZERO_PAGE(0); >> + >> + fallback = ((len > PAGE_SIZE) && !huge_page); >> + > That is pointless. > Bios can handle pages larger than PAGE_SIZE. Yes, I know BIOs can handle large pages. But the point here is if we fail to allocate a huge zero page that can cover the complete large FSB ( > page size), then we need to use the statically allocated ZERO_PAGE (see the original patch) for multiple offsets covering the range. Unless we have an API that can return a zero folio with arbitrary order(see also the reply from Willy), we can't use a bio with one vec for LBS support. -- Pankaj