• Andrew Morton's avatar
    [PATCH] no-buffer-head ext2 option · b1ad1f4e
    Andrew Morton authored
    Implements a new set of block address_space_operations which will never
    attach buffer_heads to file pagecache.  These can be turned on for ext2
    with the `nobh' mount option.
    
    During write-intensive testing on a 7G machine, total buffer_head
    storage remained below 0.3 megabytes.  And those buffer_heads are
    against ZONE_NORMAL pagecache and will be reclaimed by ZONE_NORMAL
    memory pressure.
    
    This work is, of course, a special for the huge highmem machines.
    Possibly it obsoletes the buffer_heads_over_limit stuff (which doesn't
    work terribly well), but that code is simple, and will provide relief
    for other filesystems.
    
    
    It should be noted that the nobh_prepare_write() function and the
    PageMappedToDisk() infrastructure is what is needed to solve the
    problem of user data corruption when the filesystem which backs a
    sparse MAP_SHARED mapping runs out of space.  We can use this code in
    filemap_nopage() to ensure that all mapped pages have space allocated
    on-disk.  Deliver SIGBUS on ENOSPC.
    
    This will require a new address_space op, I expect.
    b1ad1f4e
page_alloc.c 34.1 KB