summaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-12-21 11:00:33 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-21 11:17:26 -0800
commit3e67c0987d7567ad666641164a153dca9a43b11d (patch)
treee8bd583fc8fe6e9e2e8533319a30577c0081f70e /block/elevator.c
parent921320210bd2ec4f17053d283355b73048ac0e56 (diff)
[PATCH] truncate: clear page dirtiness before running try_to_free_buffers()
truncate presently invalidates the dirty page's buffer_heads then shoots down the page. But try_to_free_buffers() will now bale out because the page is dirty. Net effect: the LRU gets filled with dirty pages which have invalidated buffer_heads attached. They have no ->mapping and hence cannot be cleaned. The machine leaks memory at an enormous rate. Fix this by cleaning the page before running try_to_free_buffers(), so try_to_free_buffers() can do its work. Also, remember to do dirty-page-acoounting in cancel_dirty_page() so the machine won't wedge up trying to write non-existent dirty pages. Probably still wrong, but now less so. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'block/elevator.c')
0 files changed, 0 insertions, 0 deletions