Matt Dillon posted about the beginning of the BUF/BIO work that he and Hiten Pandya will be starting. Matt’s post is pasted in here:
Hiten, with my help, is starting to work on the BUF/BIO infrastructure
changes needed to get rid of the required KVA mappings for I/O requests.
Things are going to look ugly before they look better but we’ve broken
them up into (hopefully) manageable and testable stages. I’m guessing
two-three months to completion.
Basically what this work is doing is
* Moving the I/O subsystem from KVA mapped buffers to page lists,
using XIO to manage the page lists.
* Making KVA mappings optional in the buffer cache and I/O subsystem
* The Target device becomes responsible for mapping (but can use the
MSFBUF code to do it in one simple call), with the idea that most
target devices will be using BUSDMA and not require an actual KVA
mapping. (Being able to avoid KVA mappings is a BIG deal for
performance and overhead).
* Using a chain of BIO’s under a BUF to cache block translations
(e.g. file offset -> filesystem block number -> partition block number),
which will allow us to layer block devices completely arbitrarily.
* Converting I/O block numbers to 64 bit offsets across the board.