diff options
author | Miaohe Lin <linmiaohe@huawei.com> | 2022-06-27 15:23:51 +0200 |
---|---|---|
committer | akpm <akpm@linux-foundation.org> | 2022-07-30 03:07:14 +0200 |
commit | ccac11da679bc283a5fe3db694d9f4f40245a07e (patch) | |
tree | 4bfd681823e2f89286d24ac5546bca5015df21ae /mm | |
parent | mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region (diff) | |
download | linux-ccac11da679bc283a5fe3db694d9f4f40245a07e.tar.xz linux-ccac11da679bc283a5fe3db694d9f4f40245a07e.zip |
filemap: minor cleanup for filemap_write_and_wait_range
Restructure the logic in filemap_write_and_wait_range to simplify the code
and make it more consistent with file_write_and_wait_range. No functional
change intended.
Link: https://lkml.kernel.org/r/20220627132351.55680-1-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/filemap.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index ffdfbc8b0e3c..cd59f055e29d 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -667,7 +667,7 @@ EXPORT_SYMBOL_GPL(filemap_range_has_writeback); int filemap_write_and_wait_range(struct address_space *mapping, loff_t lstart, loff_t lend) { - int err = 0; + int err = 0, err2; if (mapping_needs_writeback(mapping)) { err = __filemap_fdatawrite_range(mapping, lstart, lend, @@ -678,18 +678,12 @@ int filemap_write_and_wait_range(struct address_space *mapping, * 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); - if (!err) - err = err2; - } else { - /* Clear any previously stored errors */ - filemap_check_errors(mapping); - } - } else { - err = filemap_check_errors(mapping); + if (err != -EIO) + __filemap_fdatawait_range(mapping, lstart, lend); } + err2 = filemap_check_errors(mapping); + if (!err) + err = err2; return err; } EXPORT_SYMBOL(filemap_write_and_wait_range); |