> +/* > + * Estimate the number of vectors we need based on the current page size; > + * if we're wrong we'll end up doing an overly large allocation or needing > + * to do a second allocation, neither of which is a big deal. > + */ > +static unsigned int iomap_nr_vecs(struct page *page, loff_t length) > +{ > + return (length + thp_size(page) - 1) >> page_shift(page); > +} With the multipage bvecs a huge page (or any physically contigous piece of memory) will always use one or less (if merged into the previous) bio_vec. So this can be simplified and optimized.