mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
mm: clear AS_EIO/AS_ENOSPC when writeback initiation fails
filemap_write_and_wait{_range} will return an error if writeback initiation fails, but won't clear errors in the address_space. This is particularly problematic on DAX, as filemap_fdatawrite* is effectively synchronous there. Ensure that we clear the AS_EIO/AS_ENOSPC flags when filemap_fdatawrite* returns an error. Signed-off-by: Jeff Layton <jlayton@redhat.com>
This commit is contained in:
parent
76341cabbd
commit
cbeaf9510a
@ -515,6 +515,9 @@ int filemap_write_and_wait(struct address_space *mapping)
|
||||
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);
|
||||
@ -549,6 +552,9 @@ int filemap_write_and_wait_range(struct address_space *mapping,
|
||||
lstart, lend);
|
||||
if (!err)
|
||||
err = err2;
|
||||
} else {
|
||||
/* Clear any previously stored errors */
|
||||
filemap_check_errors(mapping);
|
||||
}
|
||||
} else {
|
||||
err = filemap_check_errors(mapping);
|
||||
|
Loading…
Reference in New Issue
Block a user