diff options
author | Matthew Ahrens <[email protected]> | 2014-09-17 08:59:43 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-10-07 11:24:24 -0700 |
commit | e022864d19ee124c88f6fb9018e4b2d2cec76a08 (patch) | |
tree | cd062dd917f66afce6fcdfd38f5da8548dde0c39 /include/sys | |
parent | 07a3312f170ac56cb480b0df9fdf4c83f116b59b (diff) |
Illumos 5176 - lock contention on godfather zio
5176 lock contention on godfather zio
Reviewed by: Adam Leventhal <[email protected]>
Reviewed by: Alex Reece <[email protected]>
Reviewed by: Christopher Siden <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: Richard Elling <[email protected]>
Reviewed by: Bayard Bell <[email protected]>
Approved by: Garrett D'Amore <[email protected]>
References:
https://www.illumos.org/issues/5176
https://github.com/illumos/illumos-gate/commit/6f834bc
Porting notes:
Under Linux max_ncpus is defined as num_possible_cpus(). This is
largest number of cpu ids which might be available during the life
time of the system boot. This value can be larger than the number
of present cpus if CONFIG_HOTPLUG_CPU is defined.
Ported by: Turbo Fredriksson <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #2711
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/spa_impl.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/sys/spa_impl.h b/include/sys/spa_impl.h index cd6aeef47..1cb535b9f 100644 --- a/include/sys/spa_impl.h +++ b/include/sys/spa_impl.h @@ -204,7 +204,8 @@ struct spa { uint64_t spa_failmode; /* failure mode for the pool */ uint64_t spa_delegation; /* delegation on/off */ list_t spa_config_list; /* previous cache file(s) */ - zio_t *spa_async_zio_root; /* root of all async I/O */ + /* per-CPU array of root of async I/O: */ + zio_t **spa_async_zio_root; zio_t *spa_suspend_zio_root; /* root of all suspended I/O */ kmutex_t spa_suspend_lock; /* protects suspend_zio_root */ kcondvar_t spa_suspend_cv; /* notification of resume */ |