Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbeaf951 authored by Jeff Layton's avatar Jeff Layton
Browse files

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: default avatarJeff Layton <jlayton@redhat.com>
parent 76341cab
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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);