On Mon, Jan 10, 2022 at 12:45:01PM -0500, Brian Foster wrote: > With regard to the iterators, my understanding was that > bio_for_each_segment_all() walks the multipage bvecs but > bio_for_each_segment() does not, but that could certainly be wrong as I > find the iterators a bit confusing. Either way, the most recent test > with the ioend granular filter implies that a single ioend can still > become a soft lockup vector from non-atomic context. the segment iterators iterate over the pages segments, the bvec iterators over the multi-page bvecs. The _all suffix means it iterates over the whole bio independent of clones and partial submission state and is for use in the cmpletion handlers. The version without it are for use in the block drivers.