Skip to content

Commit dddc559

Browse files
axboeakpm00
authored andcommitted
mm/filemap: add filemap_fdatawrite_range_kick() helper
Works like filemap_fdatawrite_range(), except it's a non-integrity data writeback and hence only starts writeback on the specified range. Will help facilitate generically starting uncached writeback from generic_write_sync(), as header dependencies preclude doing this inline from fs.h. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]> Cc: Brian Foster <[email protected]> Cc: Chris Mason <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: Kirill A. Shutemov <[email protected]> Cc: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent fb7d3bc commit dddc559

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

include/linux/fs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2878,6 +2878,8 @@ extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
28782878
extern int __must_check file_check_and_advance_wb_err(struct file *file);
28792879
extern int __must_check file_write_and_wait_range(struct file *file,
28802880
loff_t start, loff_t end);
2881+
int filemap_fdatawrite_range_kick(struct address_space *mapping, loff_t start,
2882+
loff_t end);
28812883

28822884
static inline int file_write_and_wait(struct file *file)
28832885
{

mm/filemap.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,24 @@ int filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
440440
}
441441
EXPORT_SYMBOL(filemap_fdatawrite_range);
442442

443+
/**
444+
* filemap_fdatawrite_range_kick - start writeback on a range
445+
* @mapping: target address_space
446+
* @start: index to start writeback on
447+
* @end: last (non-inclusive) index for writeback
448+
*
449+
* This is a non-integrity writeback helper, to start writing back folios
450+
* for the indicated range.
451+
*
452+
* Return: %0 on success, negative error code otherwise.
453+
*/
454+
int filemap_fdatawrite_range_kick(struct address_space *mapping, loff_t start,
455+
loff_t end)
456+
{
457+
return __filemap_fdatawrite_range(mapping, start, end, WB_SYNC_NONE);
458+
}
459+
EXPORT_SYMBOL_GPL(filemap_fdatawrite_range_kick);
460+
443461
/**
444462
* filemap_flush - mostly a non-blocking flush
445463
* @mapping: target address_space

0 commit comments

Comments
 (0)