diff options
author | Jan Kara <jack@suse.cz> | 2009-08-17 19:30:27 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2009-09-14 17:08:14 +0200 |
commit | d3bccb6f4b886060aa0f58976b92b77d951f5434 (patch) | |
tree | b5f9eb43890da173a078e883d51c23b8c27ceaa6 | |
parent | 86d710146fb9975f04c505ec78caa43d227c1018 (diff) | |
download | blackbird-obmc-linux-d3bccb6f4b886060aa0f58976b92b77d951f5434.tar.gz blackbird-obmc-linux-d3bccb6f4b886060aa0f58976b92b77d951f5434.zip |
vfs: Introduce filemap_fdatawait_range
This simple helper saves some filesystems conversion from byte offset
to page numbers and also makes the fdata* interface more complete.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r-- | include/linux/fs.h | 2 | ||||
-rw-r--r-- | mm/filemap.c | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index a79f48373e7e..beb0e2774b2e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2086,6 +2086,8 @@ extern int write_inode_now(struct inode *, int); extern int filemap_fdatawrite(struct address_space *); extern int filemap_flush(struct address_space *); extern int filemap_fdatawait(struct address_space *); +extern int filemap_fdatawait_range(struct address_space *, loff_t lstart, + loff_t lend); extern int filemap_write_and_wait(struct address_space *mapping); extern int filemap_write_and_wait_range(struct address_space *mapping, loff_t lstart, loff_t lend); diff --git a/mm/filemap.c b/mm/filemap.c index ccea3b665c12..65b2e50efcd0 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -307,6 +307,26 @@ int wait_on_page_writeback_range(struct address_space *mapping, } /** + * filemap_fdatawait_range - wait for all under-writeback pages to complete in a given range + * @mapping: address space structure to wait for + * @start: offset in bytes where the range starts + * @end: offset in bytes where the range ends (inclusive) + * + * Walk the list of under-writeback pages of the given address space + * in the given range and wait for all of them. + * + * This is just a simple wrapper so that callers don't have to convert offsets + * to page indexes themselves + */ +int filemap_fdatawait_range(struct address_space *mapping, loff_t start, + loff_t end) +{ + return wait_on_page_writeback_range(mapping, start >> PAGE_CACHE_SHIFT, + end >> PAGE_CACHE_SHIFT); +} +EXPORT_SYMBOL(filemap_fdatawait_range); + +/** * sync_page_range - write and wait on all pages in the passed range * @inode: target inode * @mapping: target address_space |