Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3bccb6f authored by Jan Kara's avatar Jan Kara
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 86d71014
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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