From b2ab468dded24a090dba9fc8396b3d394011ce14 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 28 Mar 2018 10:19:22 -0700 Subject: Fix mmap / libaio deadlock Calling uiomove() in mappedread() under the page lock can result in a deadlock if the user space page needs to be faulted in. Resolve the issue by dropping the page lock before the uiomove(). The inode range lock protects against concurrent updates via zfs_read() and zfs_write(). Reviewed-by: Albert Lee Reviewed-by: Chunwei Chen Signed-off-by: Brian Behlendorf Closes #7335 Closes #7339 --- tests/runfiles/linux.run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/runfiles/linux.run') diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 7c2ca84bf..185293716 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -572,7 +572,7 @@ tests = ['migration_001_pos', 'migration_002_pos', 'migration_003_pos', tags = ['functional', 'migration'] [tests/functional/mmap] -tests = ['mmap_write_001_pos', 'mmap_read_001_pos'] +tests = ['mmap_write_001_pos', 'mmap_read_001_pos', 'mmap_libaio_001_pos'] tags = ['functional', 'mmap'] [tests/functional/mmp] -- cgit v1.2.3