On 2022-06-29 00:46, Christoph Hellwig wrote: > On Wed, Jun 15, 2022 at 10:12:28AM -0600, Logan Gunthorpe wrote: >> Consecutive zone device pages should not be merged into the same sgl >> or bvec segment with other types of pages or if they belong to different >> pgmaps. Otherwise getting the pgmap of a given segment is not possible >> without scanning the entire segment. This helper returns true either if >> both pages are not zone device pages or both pages are zone device >> pages with the same pgmap. >> >> Add a helper to determine if zone device pages are mergeable and use >> this helper in page_is_mergeable(). > > Any reason not to simply set REQ_NOMERGE for these requests? We > can't merge for passthrough requests anyway, and genrally don't merge > for direct I/O either, so adding all this overhead seems a bit pointless. Hmm, I suppose we could also ensure that REQ_NOMERGE is set in a bio before setting FOLL_PCI_P2PDMA in bio_map_user_iov() and __bio_iov_iter_get_pages(). Assuming it's always set for any direct I/O. I'll look into it. Logan