aboutsummaryrefslogtreecommitdiffstats
path: root/mm/filemap.c
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2022-06-28 16:54:05 +1000
committerStephen Rothwell <sfr@canb.auug.org.au>2022-06-28 16:54:05 +1000
commit5f9df76887bf8170e8844f1907c13fbbb30e9c36 (patch)
tree3b940f7e1c36605af69ffe3a3e9bc8fa53bd12a1 /mm/filemap.c
parent8f850ad6cf932b8b5125f9585cb397e08403cccd (diff)
parent84b494dcbcc015419e629ced664d3b737e83336e (diff)
downloadlinux-next-akpm.tar.gz
Merge branch 'mm-everything' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mmakpm-baseakpm
# Conflicts: # include/linux/pagevec.h
Diffstat (limited to 'mm/filemap.c')
-rw-r--r--mm/filemap.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/mm/filemap.c b/mm/filemap.c
index 8ccb868c3d9520..b561619cfafeba 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);