On Mon, Jan 13, 2020 at 04:42:10PM +0000, Chris Mason wrote: > Btrfs basically does this now, honestly iomap isn't that far away. > Given how sensible iomap is for this, I'd rather see us pile into that > abstraction than try to pass pagevecs for large ranges. Otherwise, if I completely misread this at first and thought you were proposing we pass a bio_vec to ->readahead. Initially, this is a layering violation, completely unnecessary to have all these extra offset/size fields being allocated and passed around. But ... the bio_vec and the skb_frag_t are now the same data structure, so both block and network use it. It may make sense to have this as the common data structure for 'unit of IO'. The bio supports having the bi_vec allocated externally to the data structure while the skbuff would need to copy the array. Maybe we need a more neutral name than bio_vec so as to not upset people. page_frag, perhaps [1]. [1] Yes, I know about the one in include/linux/mm_types_task.h