From: Kaixu Xia <kaixuxia@tencent.com>
Date: Sun, 22 May 2022 06:47:11 +0000 (+1000)
Subject: xfs: reduce IOCB_NOWAIT judgment for retry exclusive unaligned DIO
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=93e6aa4329d07fa01e1016446464c666c5b49b5c;p=linux.git

xfs: reduce IOCB_NOWAIT judgment for retry exclusive unaligned DIO

Retry unaligned DIO with exclusive blocking semantics only when the
IOCB_NOWAIT flag is not set. If we are doing nonblocking user I/O,
propagate the error directly.

Signed-off-by: Kaixu Xia <kaixuxia@tencent.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
---

diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index af954a5b71f8b..e2f2a3a94634b 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -576,9 +576,9 @@ xfs_file_dio_write_unaligned(
 	 * don't even bother trying the fast path in this case.
 	 */
 	if (iocb->ki_pos > isize || iocb->ki_pos + count >= isize) {
-retry_exclusive:
 		if (iocb->ki_flags & IOCB_NOWAIT)
 			return -EAGAIN;
+retry_exclusive:
 		iolock = XFS_IOLOCK_EXCL;
 		flags = IOMAP_DIO_FORCE_WAIT;
 	}