size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, struct iov_iter *i) { if (i->type & ITER_BVEC) return copy_page_to_iter_bvec(page, offset, bytes, i); else return copy_page_to_iter_iovec(page, offset, bytes, i); }
size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, struct iov_iter *i) { if (i->type & (ITER_BVEC|ITER_KVEC)) { void *kaddr = kmap_atomic(page); size_t wanted = copy_to_iter(kaddr + offset, bytes, i); kunmap_atomic(kaddr); return wanted; } else return copy_page_to_iter_iovec(page, offset, bytes, i); }