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/20241220154831.1086649-11-axboe@kernel.dk Signed-off-by: Jens Axboe <axboe@kernel.dk> Cc: Brian Foster <bfoster@redhat.com> Cc: Chris Mason <clm@meta.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
fb7d3bc414
commit
dddc559f2e
2 changed files with 20 additions and 0 deletions
|
@ -2878,6 +2878,8 @@ extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
|
|||
extern int __must_check file_check_and_advance_wb_err(struct file *file);
|
||||
extern int __must_check file_write_and_wait_range(struct file *file,
|
||||
loff_t start, loff_t end);
|
||||
int filemap_fdatawrite_range_kick(struct address_space *mapping, loff_t start,
|
||||
loff_t end);
|
||||
|
||||
static inline int file_write_and_wait(struct file *file)
|
||||
{
|
||||
|
|
18
mm/filemap.c
18
mm/filemap.c
|
@ -440,6 +440,24 @@ int filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
|
|||
}
|
||||
EXPORT_SYMBOL(filemap_fdatawrite_range);
|
||||
|
||||
/**
|
||||
* filemap_fdatawrite_range_kick - start writeback on a range
|
||||
* @mapping: target address_space
|
||||
* @start: index to start writeback on
|
||||
* @end: last (non-inclusive) index for writeback
|
||||
*
|
||||
* This is a non-integrity writeback helper, to start writing back folios
|
||||
* for the indicated range.
|
||||
*
|
||||
* Return: %0 on success, negative error code otherwise.
|
||||
*/
|
||||
int filemap_fdatawrite_range_kick(struct address_space *mapping, loff_t start,
|
||||
loff_t end)
|
||||
{
|
||||
return __filemap_fdatawrite_range(mapping, start, end, WB_SYNC_NONE);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(filemap_fdatawrite_range_kick);
|
||||
|
||||
/**
|
||||
* filemap_flush - mostly a non-blocking flush
|
||||
* @mapping: target address_space
|
||||
|
|
Loading…
Add table
Reference in a new issue