On Wed, May 09, 2018 at 09:47:58AM +0200, Christoph Hellwig wrote: > +/** > + * __bio_try_merge_page - try adding data to an existing bvec > + * @bio: destination bio > + * @page: page to add > + * @len: length of the range to add > + * @off: offset into @page > + * > + * Try adding the data described at @page + @offset to the last bvec of @bio. > + * Return %true on success or %false on failure. This can happen frequently > + * for file systems with a block size smaller than the page size. > + */ Could we make this: /** * __bio_try_merge_page() - Try appending data to an existing bvec. * @bio: Destination bio. * @page: Page to add. * @len: Length of the data to add. * @off: Offset of the data in @page. * * Try to add the data at @page + @off to the last bvec of @bio. This is * a useful optimisation for file systems with a block size smaller than * the page size. * * Context: Any context. * Return: %true on success or %false on failure. */ (page, len, off) is a bit weird to me. Usually we do (page, off, len). > +/** > + * __bio_add_page - add page to a bio in a new segment > + * @bio: destination bio > + * @page: page to add > + * @len: length of the range to add > + * @off: offset into @page > + * > + * Add the data at @page + @offset to @bio as a new bvec. The caller must > + * ensure that @bio has space for another bvec. > + */ /** * __bio_add_page - Add page to a bio in a new segment. * @bio: Destination bio. * @page: Page to add. * @len: Length of the data to add. * @off: Offset of the data in @page. * * Add the data at @page + @off to @bio as a new bvec. The caller must * ensure that @bio has space for another bvec. * * Context: Any context. */ > +static inline bool bio_full(struct bio *bio) > +{ > + return bio->bi_vcnt >= bio->bi_max_vecs; > +} I really like this helper.