/* If sync_mode is WB_SYNC_ALL then this is a "data integrity" operation, as opposed to a regular memory cleansing writeback. The difference between these two operations is that if a dirty page/buffer is encountered, it must be waited upon, and not just skipped over.  */
int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end, int sync_mode)
/* If sync_mode is WB_SYNC_ALL then this is a "data integrity" operation, as opposed to a regular memory cleansing writeback. The difference between these two operations is that if a dirty page/buffer is encountered, it must be waited upon, and not just skipped over.  */
int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end, int sync_mode)
{
	int ret;
	struct writeback_control wbc = {
		.sync_mode = sync_mode,
		.nr_to_write = LONG_MAX,
		.range_start = start,
		.range_end = end,
	};
	if (!mapping_cap_writeback_dirty(mapping))
		return 0;
	ret = do_writepages(mapping, &wbc);
	return ret;
}