cluster01.patch - bug fix for file clustering code

Matthew Dillon dillon at
Tue Mar 7 12:57:10 PST 2006

    This patch is fairly straightforward but needs some additinoal testing
    before I commit it.  I intend to commit it on Friday.  I found it
    while working on the block number -> 64 bit offset BUF/BIO conversion.


    Basically the problem being addressed here is in a bit of the asynchronous
    read-ahead code.  The code is improperly issuing BMAPs for data blocks
    whos related buffers have not been acquired, then acquiring the buffers
    and unconditionally setting the block translation field after the
    fact.  If the buffer is reallocated to a different block inbetween
    then a stale translation can wind up being assigned to it.  If the
    buffer is later dirtied, then the filesystem could become corrupted.

    The sequence of events required to produce corruption would occur
    fairly rarely, which is a similar M.O. to the dirbad panics.
    Unfortunately, as before, there is no smoking gun here so the bug might
    or might not be related.

    The same bug exists in FreeBSD-current.


More information about the Kernel mailing list