diff options
| author | Miklos Szeredi <mszeredi@suse.cz> | 2007-05-11 01:22:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-11 11:29:35 -0400 |
| commit | 0ea971801625184a91a6d80ea85e53875caa0bf5 (patch) | |
| tree | 6f4144b7ba809fccfe6d75314df8c348596c9a01 /include/linux | |
| parent | e10cc1df1d2014f68a4bdcf73f6dd122c4561f94 (diff) | |
consolidate generic_writepages and mpage_writepages
Clean up massive code duplication between mpage_writepages() and
generic_writepages().
The new generic function, write_cache_pages() takes a function pointer
argument, which will be called for each page to be written.
Maybe cifs_writepages() too can use this infrastructure, but I'm not
touching that with a ten-foot pole.
The upcoming page writeback support in fuse will also want this.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Acked-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mpage.h | 1 | ||||
| -rw-r--r-- | include/linux/writeback.h | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/mpage.h b/include/linux/mpage.h index cc5fb75af78a..068a0c9946af 100644 --- a/include/linux/mpage.h +++ b/include/linux/mpage.h | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #ifdef CONFIG_BLOCK | 12 | #ifdef CONFIG_BLOCK |
| 13 | 13 | ||
| 14 | struct writeback_control; | 14 | struct writeback_control; |
| 15 | typedef int (writepage_t)(struct page *page, struct writeback_control *wbc); | ||
| 16 | 15 | ||
| 17 | int mpage_readpages(struct address_space *mapping, struct list_head *pages, | 16 | int mpage_readpages(struct address_space *mapping, struct list_head *pages, |
| 18 | unsigned nr_pages, get_block_t get_block); | 17 | unsigned nr_pages, get_block_t get_block); |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index daa6c125f66e..050915b59576 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -111,9 +111,15 @@ balance_dirty_pages_ratelimited(struct address_space *mapping) | |||
| 111 | balance_dirty_pages_ratelimited_nr(mapping, 1); | 111 | balance_dirty_pages_ratelimited_nr(mapping, 1); |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | typedef int (*writepage_t)(struct page *page, struct writeback_control *wbc, | ||
| 115 | void *data); | ||
| 116 | |||
| 114 | int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0); | 117 | int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0); |
| 115 | extern int generic_writepages(struct address_space *mapping, | 118 | int generic_writepages(struct address_space *mapping, |
| 116 | struct writeback_control *wbc); | 119 | struct writeback_control *wbc); |
| 120 | int write_cache_pages(struct address_space *mapping, | ||
| 121 | struct writeback_control *wbc, writepage_t writepage, | ||
| 122 | void *data); | ||
| 117 | int do_writepages(struct address_space *mapping, struct writeback_control *wbc); | 123 | int do_writepages(struct address_space *mapping, struct writeback_control *wbc); |
| 118 | int sync_page_range(struct inode *inode, struct address_space *mapping, | 124 | int sync_page_range(struct inode *inode, struct address_space *mapping, |
| 119 | loff_t pos, loff_t count); | 125 | loff_t pos, loff_t count); |
