diff options
Diffstat (limited to 'fs/xfs/xfs_file.c')
| -rw-r--r-- | fs/xfs/xfs_file.c | 25 | 
1 files changed, 15 insertions, 10 deletions
| diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 309e26c9dddb..6526ef0e2a23 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -237,11 +237,13 @@ xfs_file_dax_read(  	if (!count)  		return 0; /* skip atime */ -	if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) { -		if (iocb->ki_flags & IOCB_NOWAIT) +	if (iocb->ki_flags & IOCB_NOWAIT) { +		if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))  			return -EAGAIN; +	} else {  		xfs_ilock(ip, XFS_IOLOCK_SHARED);  	} +  	ret = dax_iomap_rw(iocb, to, &xfs_iomap_ops);  	xfs_iunlock(ip, XFS_IOLOCK_SHARED); @@ -259,9 +261,10 @@ xfs_file_buffered_aio_read(  	trace_xfs_file_buffered_read(ip, iov_iter_count(to), iocb->ki_pos); -	if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) { -		if (iocb->ki_flags & IOCB_NOWAIT) +	if (iocb->ki_flags & IOCB_NOWAIT) { +		if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))  			return -EAGAIN; +	} else {  		xfs_ilock(ip, XFS_IOLOCK_SHARED);  	}  	ret = generic_file_read_iter(iocb, to); @@ -552,9 +555,10 @@ xfs_file_dio_aio_write(  		iolock = XFS_IOLOCK_SHARED;  	} -	if (!xfs_ilock_nowait(ip, iolock)) { -		if (iocb->ki_flags & IOCB_NOWAIT) +	if (iocb->ki_flags & IOCB_NOWAIT) { +		if (!xfs_ilock_nowait(ip, iolock))  			return -EAGAIN; +	} else {  		xfs_ilock(ip, iolock);  	} @@ -606,9 +610,10 @@ xfs_file_dax_write(  	size_t			count;  	loff_t			pos; -	if (!xfs_ilock_nowait(ip, iolock)) { -		if (iocb->ki_flags & IOCB_NOWAIT) +	if (iocb->ki_flags & IOCB_NOWAIT) { +		if (!xfs_ilock_nowait(ip, iolock))  			return -EAGAIN; +	} else {  		xfs_ilock(ip, iolock);  	} @@ -764,7 +769,7 @@ xfs_file_fallocate(  	enum xfs_prealloc_flags	flags = 0;  	uint			iolock = XFS_IOLOCK_EXCL;  	loff_t			new_size = 0; -	bool			do_file_insert = 0; +	bool			do_file_insert = false;  	if (!S_ISREG(inode->i_mode))  		return -EINVAL; @@ -825,7 +830,7 @@ xfs_file_fallocate(  			error = -EINVAL;  			goto out_unlock;  		} -		do_file_insert = 1; +		do_file_insert = true;  	} else {  		flags |= XFS_PREALLOC_SET; | 
