Kernel work update
Matthew Dillon
dillon at apollo.backplane.com
Sat Feb 4 23:46:51 PST 2006
I am making good progress on the BIO conversion... that is, changing
all the VFS and DEV strategy code to take a layerable struct bio
instead of a struct buf and to disassociate the VM and vnode backing
store for the original struct buf from the actual I/O. This work
is similar to work FreeBSD did and represents a big cleanup to the
I/O subsystem, but I am making our BIO's far more lightweight then
what FreeBSD did with theirs. The main advantages of the work are:
(1) To remove the logical vs disk vs physical layer braindamage in the
current struct buf and instead to layer the block number translations
with a stack of BIO's. The BIO stack associated with a BUF can remain
intact after the fact to serve as a block translation cache.
(2) To disconnect VFS and DEV I/O strategy calls from the struct buf's
original vnode, allowing us to stack an arbitrary number of layers.
I have finished the preliminary patch to the point where I can compile
LINT without error. I am about to start testing. I should have
something presentable in another 2-3 days.
This is stage 1 of 2. Stage 2 will be to convert block numbers into
64 bit offsets for all I/O's and will prestage the initial Cache Coherency
subsystem (which has to be offset based for sanity's sake), as well as
give high level system calls the ability to directly access the buffer
cache and cut out a few thousand instructions from the code path for
cached read()'s.
-Matt
More information about the Kernel
mailing list