diff options
author | Arne Jansen <[email protected]> | 2015-05-06 09:07:55 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-06-09 13:48:02 -0700 |
commit | 9c43027b3f18769f2ace16eaa222ac8b301501f4 (patch) | |
tree | 90a3577807c203ca9022234405b30e7a7fdcad2d /module/zfs/dsl_pool.c | |
parent | d050c627b5fdfaf72eac90bc07e03fcb2d8a123f (diff) |
Illumos 5269 - zpool import slow
5269 zpool import slow
Reviewed by: Matthew Ahrens <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: Dan McDonald <[email protected]>
Approved by: Dan McDonald <[email protected]>
References:
https://www.illumos.org/issues/5269
https://github.com/illumos/illumos-gate/commit/12380e1e
Ported-by: DHE <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #3396
Diffstat (limited to 'module/zfs/dsl_pool.c')
-rw-r--r-- | module/zfs/dsl_pool.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/module/zfs/dsl_pool.c b/module/zfs/dsl_pool.c index 13961918e..7d84d8bf4 100644 --- a/module/zfs/dsl_pool.c +++ b/module/zfs/dsl_pool.c @@ -755,7 +755,7 @@ dsl_pool_upgrade_clones(dsl_pool_t *dp, dmu_tx_t *tx) ASSERT(dp->dp_origin_snap != NULL); VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, upgrade_clones_cb, - tx, DS_FIND_CHILDREN)); + tx, DS_FIND_CHILDREN | DS_FIND_SERIALIZE)); } /* ARGSUSED */ @@ -810,7 +810,7 @@ dsl_pool_upgrade_dir_clones(dsl_pool_t *dp, dmu_tx_t *tx) VERIFY0(bpobj_open(&dp->dp_free_bpobj, dp->dp_meta_objset, obj)); VERIFY0(dmu_objset_find_dp(dp, dp->dp_root_dir_obj, - upgrade_dir_clones_cb, tx, DS_FIND_CHILDREN)); + upgrade_dir_clones_cb, tx, DS_FIND_CHILDREN | DS_FIND_SERIALIZE)); } void @@ -1055,6 +1055,12 @@ dsl_pool_config_held(dsl_pool_t *dp) return (RRW_LOCK_HELD(&dp->dp_config_rwlock)); } +boolean_t +dsl_pool_config_held_writer(dsl_pool_t *dp) +{ + return (RRW_WRITE_HELD(&dp->dp_config_rwlock)); +} + #if defined(_KERNEL) && defined(HAVE_SPL) EXPORT_SYMBOL(dsl_pool_config_enter); EXPORT_SYMBOL(dsl_pool_config_exit); |