summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/dsl_pool.c
diff options
context:
space:
mode:
authorArne Jansen <jansen@webgods.de>2015-05-06 09:07:55 -0700
committerMatthew Ahrens <mahrens@delphix.com>2015-05-09 10:02:31 -0700
commit12380e1e701fda28c9e9f32d01cafb54af279eb5 (patch)
treec3f78a5d76e6f646c0176ec7752dfb076ed1125e /usr/src/uts/common/fs/zfs/dsl_pool.c
parent00208914d51cd2f8ec864d0b732aa94a0e13a2ed (diff)
downloadillumos-joyent-12380e1e701fda28c9e9f32d01cafb54af279eb5.tar.gz
5269 zpool import slow
Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: George Wilson <george@delphix.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/uts/common/fs/zfs/dsl_pool.c')
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_pool.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/zfs/dsl_pool.c b/usr/src/uts/common/fs/zfs/dsl_pool.c
index 2e7f798485..8c5d820ede 100644
--- a/usr/src/uts/common/fs/zfs/dsl_pool.c
+++ b/usr/src/uts/common/fs/zfs/dsl_pool.c
@@ -758,7 +758,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 */
@@ -812,7 +812,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
@@ -1056,3 +1056,9 @@ 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));
+}