// SPDX-License-Identifier: GPL-2.0 | |
#include <linux/bio.h> | |
#include <linux/export.h> | |
#include <xen/xen.h> | |
#include <xen/page.h> | |
/* check if @page can be merged with 'vec1' */ | |
bool xen_biovec_phys_mergeable(const struct bio_vec *vec1, | |
const struct page *page) | |
{ | |
#if XEN_PAGE_SIZE == PAGE_SIZE | |
unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page)); | |
unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page)); | |
return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2; | |
#else | |
/* | |
* XXX: Add support for merging bio_vec when using different page | |
* size in Xen and Linux. | |
*/ | |
return false; | |
#endif | |
} |