| 
									
										
										
										
											2009-02-09 12:05:46 -08:00
										 |  |  | #include <linux/bio.h>
 | 
					
						
							|  |  |  | #include <linux/io.h>
 | 
					
						
							| 
									
										
										
										
											2012-01-19 10:24:31 +11:00
										 |  |  | #include <linux/export.h>
 | 
					
						
							| 
									
										
										
										
											2009-02-09 12:05:46 -08:00
										 |  |  | #include <xen/page.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool xen_biovec_phys_mergeable(const struct bio_vec *vec1, | 
					
						
							|  |  |  | 			       const struct bio_vec *vec2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	unsigned long mfn1 = pfn_to_mfn(page_to_pfn(vec1->bv_page)); | 
					
						
							|  |  |  | 	unsigned long mfn2 = pfn_to_mfn(page_to_pfn(vec2->bv_page)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return __BIOVEC_PHYS_MERGEABLE(vec1, vec2) && | 
					
						
							|  |  |  | 		((mfn1 == mfn2) || ((mfn1+1) == mfn2)); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-11-04 15:41:27 -04:00
										 |  |  | EXPORT_SYMBOL(xen_biovec_phys_mergeable); |