diff options
Diffstat (limited to 'mm/filemap.c')
-rw-r--r-- | mm/filemap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index e5711b2728f4..49bc9720fb00 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -515,6 +515,9 @@ int filemap_write_and_wait(struct address_space *mapping) | |||
515 | int err2 = filemap_fdatawait(mapping); | 515 | int err2 = filemap_fdatawait(mapping); |
516 | if (!err) | 516 | if (!err) |
517 | err = err2; | 517 | err = err2; |
518 | } else { | ||
519 | /* Clear any previously stored errors */ | ||
520 | filemap_check_errors(mapping); | ||
518 | } | 521 | } |
519 | } else { | 522 | } else { |
520 | err = filemap_check_errors(mapping); | 523 | err = filemap_check_errors(mapping); |
@@ -549,6 +552,9 @@ int filemap_write_and_wait_range(struct address_space *mapping, | |||
549 | lstart, lend); | 552 | lstart, lend); |
550 | if (!err) | 553 | if (!err) |
551 | err = err2; | 554 | err = err2; |
555 | } else { | ||
556 | /* Clear any previously stored errors */ | ||
557 | filemap_check_errors(mapping); | ||
552 | } | 558 | } |
553 | } else { | 559 | } else { |
554 | err = filemap_check_errors(mapping); | 560 | err = filemap_check_errors(mapping); |