mm: Clean up filemap_write_and_wait()
Subsystems (3)
PATCH 1/1 mm: Clean up filemap_write_and_wait()
From: Ira Weiny <[email protected]>
At some point filemap_write_and_wait() and filemap_write_and_wait_range() got the exact same implementation with the exception of the range being specified in *_range()
Similar to other functions in fs.h which call *_range(..., 0, LLONG_MAX), change filemap_write_and_wait() to be a static inline which calls filemap_write_and_wait_range()
--- include/linux/fs.h | 6 +++++- mm/filemap.c | 34 ++++++---------------------------- 2 files changed, 11 insertions(+), 29 deletions(-)
include/linux/fs.h +5 -1
@@ -2745,7 +2745,6 @@ static inline int filemap_fdatawait(struct address_space *mapping)extern bool filemap_range_has_page (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); extern int __filemap_fdatawrite_range(struct address_space *mapping,
@@ -2755,6 +2754,11 @@ extern int filemap_fdatawrite_range(struct address_space *mapping,extern int filemap_check_errors (struct address_space *mapping);extern void __filemap_set_wb_err (struct address_space *mapping,int err); +static inline int filemap_write_and_wait (struct address_space *mapping) +{ +return filemap_write_and_wait_range (mapping,0 ,LLONG_MAX ); +} +extern int __must_check file_fdatawait_range (struct file *file,loff_t lstart,loff_t lend);extern int __must_check file_check_and_advance_wb_err (struct file *file);
mm/filemap.c +6 -28
@@ -632,33 +632,6 @@ static bool mapping_needs_writeback(struct address_space *mapping)return mapping->nrpages; } -int filemap_write_and_wait (struct address_space *mapping) -{ -int err =0 ; - -if (mapping_needs_writeback (mapping)) { - err =filemap_fdatawrite (mapping); -/* -* Even if the above returned error, the pages may be -* written partially (e.g. -ENOSPC), so we wait for it. -* But the -EIO is special case, it may indicate the worst -* thing (e.g. bug) happened, so we avoid waiting for it. -*/ -if (err != -EIO ) { -int err2 =filemap_fdatawait (mapping); -if (!err) - err = err2; - }else { -/* Clear any previously stored errors */ -filemap_check_errors (mapping); - } - }else { - err =filemap_check_errors (mapping); - } -return err; -} -EXPORT_SYMBOL (filemap_write_and_wait); -/** * filemap_write_and_wait_range - write out & wait on a file range * @mapping: the address_space for the pages
@@ -680,7 +653,12 @@ int filemap_write_and_wait_range(struct address_space *mapping,if (mapping_needs_writeback (mapping)) { err =__filemap_fdatawrite_range (mapping, lstart, lend,WB_SYNC_ALL ); -/* See comment of filemap_write_and_wait() */ +/* +* Even if the above returned error, the pages may be +* written partially (e.g. -ENOSPC), so we wait for it. +* But the -EIO is special case, it may indicate the worst +* thing (e.g. bug) happened, so we avoid waiting for it. +*/ if (err != -EIO ) {int err2 =filemap_fdatawait_range (mapping, lstart, lend);
Signature · 1 line
2.21.0
Quoted 11 lines · On 20.11.19 г. 8:23 ч., [email protected] wrote:
From: Ira Weiny <[email protected]>
At some point
filemap_write_and_wait()andfilemap_write_and_wait_range()got the exact same implementation with the exception of the range being specified in*_range()Similar to other functions in
fs.hwhich call *_range(..., 0,LLONG_MAX), changefilemap_write_and_wait()to be a static inline which callsfilemap_write_and_wait_range()Signed-off-by Ira Weiny <[email protected]>
Quoted 9 lines · On Tue, Nov 19, 2019 at 10:23:34PM -0800, [email protected] wrote:
At some point
filemap_write_and_wait()andfilemap_write_and_wait_range()got the exact same implementation with the exception of the range being specified in*_range()Similar to other functions in
fs.hwhich call *_range(..., 0,LLONG_MAX), changefilemap_write_and_wait()to be a static inline which callsfilemap_write_and_wait_range()Signed-off-by Ira Weiny <[email protected]>