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>
This commit is contained in:
parent
86d710146f
commit
d3bccb6f4b
2 changed files with 22 additions and 0 deletions
|
@ -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);
|
||||
|
|
20
mm/filemap.c
20
mm/filemap.c
|
@ -306,6 +306,26 @@ int wait_on_page_writeback_range(struct address_space *mapping,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
Loading…
Reference in a new issue