diff options
author | George Wilson <[email protected]> | 2012-12-21 14:57:09 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2013-01-08 10:35:44 -0800 |
commit | 1eb5bfa3dcdaecb19543d9df13131374a7a42947 (patch) | |
tree | ab0fafd17c371d778d5b195583709abd628d2c24 /cmd/ztest/ztest.c | |
parent | 753c38392ddff9d3cf140bb4d28f3bfba52c92d2 (diff) |
Illumos #3145, #3212
3145 single-copy arc
3212 ztest: race condition between vdev_online() and spa_vdev_remove()
Reviewed by: Matt Ahrens <[email protected]>
Reviewed by: Adam Leventhal <[email protected]>
Reviewed by: Eric Schrock <[email protected]>
Reviewed by: Justin T. Gibbs <[email protected]>
Approved by: Eric Schrock <[email protected]>
References:
illumos-gate/commit/9253d63df408bb48584e0b1abfcc24ef2472382e
illumos changeset: 13840:97fd5cdf328a
https://www.illumos.org/issues/3145
https://www.illumos.org/issues/3212
Ported-by: Brian Behlendorf <[email protected]>
Closes #989
Closes #1137
Diffstat (limited to 'cmd/ztest/ztest.c')
-rw-r--r-- | cmd/ztest/ztest.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c index c9fdf466f..07b81cc27 100644 --- a/cmd/ztest/ztest.c +++ b/cmd/ztest/ztest.c @@ -4965,7 +4965,18 @@ ztest_fault_inject(ztest_ds_t *zd, uint64_t id) if (islog) (void) rw_exit(&ztest_name_lock); } else { + /* + * Ideally we would like to be able to randomly + * call vdev_[on|off]line without holding locks + * to force unpredictable failures but the side + * effects of vdev_[on|off]line prevent us from + * doing so. We grab the ztest_vdev_lock here to + * prevent a race between injection testing and + * aux_vdev removal. + */ + mutex_enter(&ztest_vdev_lock); (void) vdev_online(spa, guid0, 0, NULL); + mutex_exit(&ztest_vdev_lock); } } |