• Andrew Morton's avatar
    [PATCH] use buffer_boundary() for writeback scheduling hints · 343893e6
    Andrew Morton authored
    This is the replacement for write_mapping_buffers().
    
    Whenever the mpage code sees that it has just written a block which had
    buffer_boundary() set, it assumes that the next block is dirty
    filesystem metadata.  (This is a good assumption - that's what
    buffer_boundary is for).
    
    So we do a lookup in the blockdev mapping for the next block and it if
    is present and dirty, then schedule it for IO.
    
    So the indirect blocks in the blockdev mapping get merged with the data
    blocks in the file mapping.
    
    This is a bit more general than the write_mapping_buffers() approach.
    write_mapping_buffers() required that the fs carefully maintain the
    correct buffers on the mapping->private_list, and that the fs call
    write_mapping_buffers(), and the implementation was generally rather
    yuk.
    
    This version will "just work" for filesystems which implement
    buffer_boundary correctly.  Currently this is ext2, ext3 and some
    not-yet-merged reiserfs patches.  JFS implements buffer_boundary() but
    does not use ext2-like layouts - so there will be no change there.
    
    Works nicely.
    343893e6
mpage.c 17.4 KB