xfs: fix IOCB_NOWAIT handling in xfs_file_dio_aio_read
Direct I/O reads can also be used with RWF_NOWAIT & co. Fix the inode locking in xfs_file_dio_aio_read to take IOCB_NOWAIT into account. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
ca78eee7b4
commit
7b53b868a1
@ -187,7 +187,12 @@ xfs_file_dio_aio_read(
|
||||
|
||||
file_accessed(iocb->ki_filp);
|
||||
|
||||
if (iocb->ki_flags & IOCB_NOWAIT) {
|
||||
if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
|
||||
return -EAGAIN;
|
||||
} else {
|
||||
xfs_ilock(ip, XFS_IOLOCK_SHARED);
|
||||
}
|
||||
ret = iomap_dio_rw(iocb, to, &xfs_read_iomap_ops, NULL,
|
||||
is_sync_kiocb(iocb));
|
||||
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
|
||||
|
Loading…
Reference in New Issue
Block a user