lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 14 Jan 2020 17:12:24 +0100 From: Christoph Hellwig <hch@....de> To: linux-xfs@...r.kernel.org, linux-fsdevel@...r.kernel.org, Waiman Long <longman@...hat.com>, Peter Zijlstra <peterz@...radead.org>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Will Deacon <will@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>, linux-ext4@...r.kernel.org, cluster-devel@...hat.com Cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org Subject: [PATCH 11/12] xfs: don't set IOMAP_DIO_SYNCHRONOUS for unaligned I/O Now that i_rwsem is held until asynchronous writes complete, there is no need to force them to execute synchronously, as the i_rwsem protection is exactly the same as for synchronous writes. Signed-off-by: Christoph Hellwig <hch@....de> --- fs/xfs/xfs_file.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index d0ee7d2932e4..3a734ad4bb10 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -510,9 +510,6 @@ xfs_file_dio_aio_write( } if (iocb->ki_flags & IOCB_NOWAIT) { - /* unaligned dio always waits, bail */ - if (unaligned_io) - return -EAGAIN; if (!xfs_ilock_nowait(ip, iolock)) return -EAGAIN; } else { @@ -526,14 +523,11 @@ xfs_file_dio_aio_write( /* * If we are doing unaligned I/O, we can't allow any other overlapping - * I/O in-flight at the same time or we risk data corruption. Wait for - * all other I/O to drain before we submit and execute the I/O - * synchronously to prevent subsequent overlapping I/O. If the I/O is - * aligned, demote the iolock if we had to take the exclusive lock in - * xfs_file_aio_write_checks() for other reasons. + * If the I/O is aligned, demote the iolock if we had to take the + * exclusive lock in xfs_file_aio_write_checks() for other reasons. */ if (unaligned_io) { - dio_flags = IOMAP_DIO_RWSEM_EXCL | IOMAP_DIO_SYNCHRONOUS; + dio_flags = IOMAP_DIO_RWSEM_EXCL; } else { if (iolock == XFS_IOLOCK_EXCL) { xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); -- 2.24.1
Powered by blists - more mailing lists