On Tue, Aug 17, 2021 at 06:06:12AM +0100, Christoph Hellwig wrote: > On Mon, Aug 16, 2021 at 07:40:48PM +0800, Ming Lei wrote: > > > > > > > > 0 ~ 254: each bvec's length is 512 > > > > 255: bvec's length is 8192 > > > > > > > > the total length is just 512*255 + 8192 = 138752 bytes = 271 sectors, but it > > > > still may need 257 bvecs, which can't be allocated via bio_alloc_bioset(). > > > > > > Yes, we still need the rounding magic that alloc_behind_master_bio uses > > > here. > > > > But it is wrong to use max sectors to limit number of bvecs(segments), isn't it? > > The raid1 write behind code cares about the size ofa bio it can reach by > adding order 0 pages to it. The bvecs are part of that and I think the > calculation in the patch documents that a well. Thinking of further, your and Guoqing's patch are correct & enough since bio_copy_data() just copies bytes(sectors) stream from fs bio to the write behind bio. Thanks, Ming