summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2002-11-21 19:32:14 -0800
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-11-21 19:32:14 -0800
commit53bf7bef7cc35c02054aae79d838ace99dcea35b (patch)
treef4c4da02be7ef9ab0dae65494163486f564a47cf /include/linux
parent5fa9d488fb0dbc8b5583be8e59d8b3091fbcb5e9 (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 'include/linux')
-rw-r--r--include/linux/fs.h6
-rw-r--r--include/linux/pagevec.h1
2 files changed, 0 insertions, 7 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 5183f5f7c91c..f39d21e5bcd9 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -285,9 +285,6 @@ struct address_space_operations {
/* Write back some dirty pages from this mapping. */
int (*writepages)(struct address_space *, struct writeback_control *);
- /* Perform a writeback as a memory-freeing operation. */
- int (*vm_writeback)(struct page *, struct writeback_control *);
-
/* Set a page dirty */
int (*set_page_dirty)(struct page *page);
@@ -1256,9 +1253,6 @@ extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin);
extern loff_t remote_llseek(struct file *file, loff_t offset, int origin);
extern int generic_file_open(struct inode * inode, struct file * filp);
-extern int generic_vm_writeback(struct page *page,
- struct writeback_control *wbc);
-
static inline void do_generic_file_read(struct file * filp, loff_t *ppos,
read_descriptor_t * desc,
read_actor_t actor)
diff --git a/include/linux/pagevec.h b/include/linux/pagevec.h
index dbfa3ab99699..2a332eed3d82 100644
--- a/include/linux/pagevec.h
+++ b/include/linux/pagevec.h
@@ -21,7 +21,6 @@ void __pagevec_release_nonlru(struct pagevec *pvec);
void __pagevec_free(struct pagevec *pvec);
void __pagevec_lru_add(struct pagevec *pvec);
void __pagevec_lru_add_active(struct pagevec *pvec);
-void pagevec_deactivate_inactive(struct pagevec *pvec);
void pagevec_strip(struct pagevec *pvec);
unsigned int pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
pgoff_t start, unsigned int nr_pages);