On Mon, Aug 11, 2025 at 06:17:56PM +0200, Christoph Hellwig wrote: > On Mon, Aug 11, 2025 at 09:27:18AM -0600, Keith Busch wrote: > > I initially tried to copy the nsegs usage in the request, but there are > > multiple places (iomap, xfs, and btrfs) that split to hardware limits > > without a request, so I'm not sure where the result is supposed to go to > > be referenced later. Or do those all call the same split function later > > in the generic block layer, in which case it shouldn't matter if the > > upper layers already called it? > > Yes, we'll always end up calling into __bio_split_to_limits in blk-mq, > no matter if someone split before. The upper layer splits are only > for zone append users that can't later be split, but > __bio_split_to_limits is stilled called on them to count the segments > and to assert that they don't need splitting. Zone write plugging presents a problem. For the same reason that "__bi_nr_segments" exists, I have to stash this result somewhere in the bio struct. I mentioned earlier I just need one byte, and there's a byte hole in the bio already, so won't need to increase the size.