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>
This commit is contained in:
@@ -576,9 +576,9 @@ xfs_file_dio_write_unaligned(
|
|||||||
* don't even bother trying the fast path in this case.
|
* don't even bother trying the fast path in this case.
|
||||||
*/
|
*/
|
||||||
if (iocb->ki_pos > isize || iocb->ki_pos + count >= isize) {
|
if (iocb->ki_pos > isize || iocb->ki_pos + count >= isize) {
|
||||||
retry_exclusive:
|
|
||||||
if (iocb->ki_flags & IOCB_NOWAIT)
|
if (iocb->ki_flags & IOCB_NOWAIT)
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
retry_exclusive:
|
||||||
iolock = XFS_IOLOCK_EXCL;
|
iolock = XFS_IOLOCK_EXCL;
|
||||||
flags = IOMAP_DIO_FORCE_WAIT;
|
flags = IOMAP_DIO_FORCE_WAIT;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user