diff options
author | Theodore Ts'o <tytso@mit.edu> | 2019-11-06 00:21:09 +0300 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2019-11-06 00:21:09 +0300 |
commit | 8d0d47ea1640b23678306c007ccc813b5b930af4 (patch) | |
tree | 79c4be5111bb6c1cbf495ea8d98e008da46cb6c2 /fs/xfs/xfs_file.c | |
parent | a6d4040846bff49c7e870cee5693245f87f2cfce (diff) | |
parent | 378f32bab3714f04c4e0c3aee4129f6703805550 (diff) | |
download | linux-8d0d47ea1640b23678306c007ccc813b5b930af4.tar.xz |
Merge branch 'mb/dio' into master
Diffstat (limited to 'fs/xfs/xfs_file.c')
-rw-r--r-- | fs/xfs/xfs_file.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 1ffb179f35d2..c0620135a279 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -188,7 +188,7 @@ xfs_file_dio_aio_read( file_accessed(iocb->ki_filp); xfs_ilock(ip, XFS_IOLOCK_SHARED); - ret = iomap_dio_rw(iocb, to, &xfs_iomap_ops, NULL); + ret = iomap_dio_rw(iocb, to, &xfs_iomap_ops, NULL, is_sync_kiocb(iocb)); xfs_iunlock(ip, XFS_IOLOCK_SHARED); return ret; @@ -547,15 +547,12 @@ xfs_file_dio_aio_write( } trace_xfs_file_direct_write(ip, count, iocb->ki_pos); - ret = iomap_dio_rw(iocb, from, &xfs_iomap_ops, &xfs_dio_write_ops); - /* - * If unaligned, this is the only IO in-flight. If it has not yet - * completed, wait on it before we release the iolock to prevent - * subsequent overlapping IO. + * If unaligned, this is the only IO in-flight. Wait on it before we + * release the iolock to prevent subsequent overlapping IO. */ - if (ret == -EIOCBQUEUED && unaligned_io) - inode_dio_wait(inode); + ret = iomap_dio_rw(iocb, from, &xfs_iomap_ops, &xfs_dio_write_ops, + is_sync_kiocb(iocb) || unaligned_io); out: xfs_iunlock(ip, iolock); |