On Mon, Jan 22, 2024 at 11:05:20PM +1100, Dave Chinner wrote: > I haven't looked at what using vmalloc means for packing the buffer > into a bio - we currently use bio_add_page(), so does that mean we > have to use some variant of virt_to_page() to break the vmalloc > region up into it's backing pages to feed them to the bio? Or is > there some helper that I'm unaware of that does it all for us > magically? We have a kmem_to_page helper for chuking any kind of kernel virtual address space into pages. xfs_rw_bdev in fs/xfs/xfs_bio_io.c uses that for a bio, we should probably hav an async version of that and maybe move it to the block layer instead of duplicating the logic in various places. > Yeah, that's kind of where I'm going with this. Large folios already > turn off unmapped buffers, and I'd really like to get rid of that > page straddling mess that unmapped buffers require in the buffer > item dirty region tracking. That means we have to get rid of > unmapped buffers.... I actually have an old series to kill unmapped buffers and use vmalloc, but decided I'd need use folios for the fast path instead of paying the vmalloc overhead. I can dust it off and you can decide if you want to pick up parts of it.