On Fri, 2017-04-14 at 00:06 +0800, Ming Lei wrote: > But if one rq starts with non-aligned buffer(the 1st bvec's > bv_offset isn't zero) and if we allow to merge, it is quite > difficult to respect sg gap limit, especially the segment > can't be at maximum segment size, otherwise the segment > ends in unaligned virt boundary. This patch trys to avoid the > issue by not allowing to merge if the req starts with non-aligned > buffer. Hello Ming, Why is it considered difficult to detect whether or not a gap exists if the offset of the first bio is non-zero? Please note that a thoroughly tested version of gap detection code that supports non-zero offsets for the first element is already upstream. See also ib_map_mr_sg() and ib_sg_to_pages() in drivers/infiniband/core/verbs.c. Thanks, Bart.