On 2/28/19 6:58 AM, Christoph Hellwig wrote: > On Thu, Feb 28, 2019 at 11:24:21AM +0800, Ming Lei wrote: >> bio_for_each_bvec is used in fast path of bio splitting and sg mapping, >> and what we want to do is to iterate over multi-page bvecs, instead of pages. >> However, bvec_iter_advance() is invisble for this requirement, and >> always advance by page size. >> >> This way isn't efficient for multipage bvec iterator, also bvec_iter_len() >> isn't as fast as mp_bvec_iter_len(). >> >> So advance by multi-page bvec's length instead of page size for bio_for_each_bvec(). >> >> More than 1% IOPS improvement can be observed in io_uring test on null_blk. > > We've been there before, and I still insist that there is not good > reason ever to clamp the iteration to page size in bvec_iter_advance. > Callers that iterate over it already do that in the callers. > > So here is a resurretion and rebase of my patch from back then to > just do the right thing: Care to resend as a proper patch? -- Jens Axboe