Commit 43a511c4 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher
Browse files

gfs2: Prevent direct-I/O write fallback errors from getting lost



When a direct I/O write falls entirely and falls back to buffered I/O and the
buffered I/O fails, the write failed with return value 0 instead of the error
number reported by the buffered I/O. Fix that.

Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
parent d07f6ca9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -911,8 +911,11 @@ static ssize_t gfs2_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
		current->backing_dev_info = inode_to_bdi(inode);
		buffered = iomap_file_buffered_write(iocb, from, &gfs2_iomap_ops);
		current->backing_dev_info = NULL;
		if (unlikely(buffered <= 0))
		if (unlikely(buffered <= 0)) {
			if (!ret)
				ret = buffered;
			goto out_unlock;
		}

		/*
		 * We need to ensure that the page cache pages are written to