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