summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2014-02-17 17:11:38 +0000
committeravg <avg@FreeBSD.org>2014-02-17 17:11:38 +0000
commit51714698c30564bf94b9e62fd46b2a1d5616c7e5 (patch)
treea610550b00fbf853249cb8cdfdc2400785ca1069 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
parent92000681d74b0aa6a7484fbba39edf34a2ec6a96 (diff)
downloadFreeBSD-src-51714698c30564bf94b9e62fd46b2a1d5616c7e5.zip
FreeBSD-src-51714698c30564bf94b9e62fd46b2a1d5616c7e5.tar.gz
MFC r258717: MFV r258371,r258372: 4101 metaslab_debug should allow for
fine-grained control
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
index eec4d3a..d9ecb50 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
@@ -497,6 +497,18 @@ spa_deadman(void *arg)
{
spa_t *spa = arg;
+ /*
+ * Disable the deadman timer if the pool is suspended.
+ */
+ if (spa_suspended(spa)) {
+#ifdef illumos
+ VERIFY(cyclic_reprogram(spa->spa_deadman_cycid, CY_INFINITY));
+#else
+ /* Nothing. just don't schedule any future callouts. */
+#endif
+ return;
+ }
+
zfs_dbgmsg("slow spa_sync: started %llu seconds ago, calls %llu",
(gethrtime() - spa->spa_sync_starttime) / NANOSEC,
++spa->spa_deadman_calls);
@@ -1068,7 +1080,7 @@ spa_vdev_config_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error, char *tag)
txg_wait_synced(spa->spa_dsl_pool, txg);
if (vd != NULL) {
- ASSERT(!vd->vdev_detached || vd->vdev_dtl_smo.smo_object == 0);
+ ASSERT(!vd->vdev_detached || vd->vdev_dtl_sm == NULL);
spa_config_enter(spa, SCL_ALL, spa, RW_WRITER);
vdev_free(vd);
spa_config_exit(spa, SCL_ALL, spa);
@@ -1750,7 +1762,7 @@ spa_init(int mode)
#endif /* illumos */
refcount_sysinit();
unique_init();
- space_map_init();
+ range_tree_init();
zio_init();
lz4_init();
dmu_init();
@@ -1780,7 +1792,7 @@ spa_fini(void)
dmu_fini();
lz4_fini();
zio_fini();
- space_map_fini();
+ range_tree_fini();
unique_fini();
refcount_fini();
OpenPOWER on IntegriCloud