diff options
author | Olaf Faaland <[email protected]> | 2017-07-24 08:48:28 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-07-25 12:25:05 -0400 |
commit | ffb195c256f8a74a87c3834258ec90c513d66adb (patch) | |
tree | 07c0c43142ed997d8d5105ca05c802a859b8cd77 /tests/runfiles | |
parent | f43615d0cc22d7db496c1291c84e64e269ca51d9 (diff) |
Release SCL_STATE in map_write_done()
The config lock must be held for the duration of the MMP write.
Since the I/Os are executed via map_nowait(), the done function
is the only place where we know the write has completed.
Since SCL_STATE is taken as reader, overlapping I/Os do not
create a deadlock. The refcount is simply increased when new
I/Os are queued and decreased when I/Os complete.
Test case added which exercises the probe IO call path to
verify the fix and prevent a regression.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Olaf Faaland <[email protected]>
Closes #6394
Diffstat (limited to 'tests/runfiles')
-rw-r--r-- | tests/runfiles/linux.run | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index e556f1e8c..842f6dd0c 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -412,7 +412,8 @@ tests = ['mmap_write_001_pos', 'mmap_read_001_pos'] [tests/functional/mmp] tests = ['mmp_on_thread', 'mmp_on_uberblocks', 'mmp_on_off', 'mmp_interval', - 'mmp_active_import', 'mmp_inactive_import', 'mmp_exported_import'] + 'mmp_active_import', 'mmp_inactive_import', 'mmp_exported_import', + 'mmp_write_uberblocks'] [tests/functional/mount] tests = ['umount_001', 'umountall_001'] |