diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-11-21 19:32:14 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-11-21 19:32:14 -0800 |
| commit | 53bf7bef7cc35c02054aae79d838ace99dcea35b (patch) | |
| tree | f4c4da02be7ef9ab0dae65494163486f564a47cf /fs/block_dev.c | |
| parent | 5fa9d488fb0dbc8b5583be8e59d8b3091fbcb5e9 (diff) | |
[PATCH] Remove mapping->vm_writeback
The vm_writeback address_space operation was designed to provide the VM
with a "clustered writeout" capability. It allowed the filesystem to
perform more intelligent writearound decisions when the VM was trying
to clean a particular page.
I can't say I ever saw any real benefit from this - not much writeout
actually happens on that path - quite a lot of work has gone into
minimising it actually.
The default ->vm_writeback a_op which I provided wrote back the pages
in ->dirty_pages order. But there is one scenario in which this causes
problems - writing a single 4G file with mem=4G. We end up with all of
ZONE_NORMAL full of dirty pages, but all writeback effort is against
highmem pages. (Because there is about 1.5G of dirty memory total).
Net effect: the machine stalls ZONE_NORMAL allocation attempts until
the ->dirty_pages writeback advances onto ZONE_NORMAL pages.
This can be fixed most sweetly with additional radix-tree
infrastructure which will be quite complex. Later.
So this patch dumps it all, and goes back to using writepage
against individual pages as they come off the LRU.
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index ee5d3161ee7b..d024df4bd465 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -758,7 +758,6 @@ struct address_space_operations def_blk_aops = { .prepare_write = blkdev_prepare_write, .commit_write = blkdev_commit_write, .writepages = generic_writepages, - .vm_writeback = generic_vm_writeback, .direct_IO = blkdev_direct_IO, }; |
