• Linus Torvalds's avatar
    Resurrect 'try_to_free_buffers()' VM hackery · ecdfc978
    Linus Torvalds authored
    It's not pretty, but it appears that ext3 with data=journal will clean
    pages without ever actually telling the VM that they are clean.  This,
    in turn, will result in the VM (and balance_dirty_pages() in particular)
    to never realize that the pages got cleaned, and wait forever for an
    event that already happened.
    
    Technically, this seems to be a problem with ext3 itself, but it used to
    be hidden by 'try_to_free_buffers()' noticing this situation on its own,
    and just working around the filesystem problem.
    
    This commit re-instates that hack, in order to avoid a regression for
    the 2.6.20 release. This fixes bugzilla 7844:
    
    	http://bugzilla.kernel.org/show_bug.cgi?id=7844
    
    Peter Zijlstra points out that we should probably retain the debugging
    code that this removes from cancel_dirty_page(), and I agree, but for
    the imminent release we might as well just silence the warning too
    (since it's not a new bug: anything that triggers that warning has been
    around forever).
    Acked-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
    Acked-by: default avatarJens Axboe <jens.axboe@oracle.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Andrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ecdfc978
buffer.c 80 KB