diff mbox series

xfs: reduce IOCB_NOWAIT judgment for retry exclusive unaligned DIO

Message ID 1652889671-30156-1-git-send-email-kaixuxia@tencent.com (mailing list archive)
State Accepted
Headers show
Series xfs: reduce IOCB_NOWAIT judgment for retry exclusive unaligned DIO | expand

Commit Message

Kaixu Xia May 18, 2022, 4:01 p.m. UTC
From: Kaixu Xia <kaixuxia@tencent.com>

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>
---
 fs/xfs/xfs_file.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Chaitanya Kulkarni May 18, 2022, 8:38 p.m. UTC | #1
On 5/18/22 09:01, xiakaixu1987@gmail.com wrote:
> From: Kaixu Xia <kaixuxia@tencent.com>
> 
> 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>
> ---

Looks good.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>

-ck

>   fs/xfs/xfs_file.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 5bddb1e9e0b3..250a3f97400d 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;
>   	}
diff mbox series

Patch

diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 5bddb1e9e0b3..250a3f97400d 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;
 	}