summaryrefslogtreecommitdiffstats
path: root/include/sys
diff options
context:
space:
mode:
authorGeorge Wilson <[email protected]>2013-05-06 10:14:52 -0700
committerBrian Behlendorf <[email protected]>2013-05-06 12:39:34 -0700
commit55d85d5a8c45c4559a4a0e675c37b0c3afb19c2f (patch)
treede4e1e0564aa00bb1dcb8b91c15e9655f7f36248 /include/sys
parent5853fe790d1df58c5dd85ea52c5e165b6d43013c (diff)
Illumos #3329, #3330, #3331, #3335
3329 spa_sync() spends 10-20% of its time in spa_free_sync_cb() 3330 space_seg_t should have its own kmem_cache 3331 deferred frees should happen after sync_pass 1 3335 make SYNC_PASS_* constants tunable Reviewed by: Adam Leventhal <[email protected]> Reviewed by: Matt Ahrens <[email protected]> Reviewed by: Christopher Siden <[email protected]> Reviewed by: Eric Schrock <[email protected]> Reviewed by: Richard Lowe <[email protected]> Reviewed by: Dan McDonald <[email protected]> Approved by: Eric Schrock <[email protected]> References: illumos/illumos-gate@01f55e48fb4d524eaf70687728aa51b7762e2e97 https://www.illumos.org/issues/3329 https://www.illumos.org/issues/3330 https://www.illumos.org/issues/3331 https://www.illumos.org/issues/3335 Ported-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'include/sys')
-rw-r--r--include/sys/metaslab_impl.h5
-rw-r--r--include/sys/spa.h8
-rw-r--r--include/sys/space_map.h6
-rw-r--r--include/sys/zio_impl.h5
4 files changed, 16 insertions, 8 deletions
diff --git a/include/sys/metaslab_impl.h b/include/sys/metaslab_impl.h
index 658359478..386f6240c 100644
--- a/include/sys/metaslab_impl.h
+++ b/include/sys/metaslab_impl.h
@@ -21,7 +21,10 @@
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
- * Copyright (c) 2011 by Delphix. All rights reserved.
+ */
+
+/*
+ * Copyright (c) 2012 by Delphix. All rights reserved.
*/
#ifndef _SYS_METASLAB_IMPL_H
diff --git a/include/sys/spa.h b/include/sys/spa.h
index ca9fb2438..8f2af8af2 100644
--- a/include/sys/spa.h
+++ b/include/sys/spa.h
@@ -486,13 +486,7 @@ extern int spa_scan_stop(spa_t *spa);
extern void spa_sync(spa_t *spa, uint64_t txg); /* only for DMU use */
extern void spa_sync_allpools(void);
-/*
- * DEFERRED_FREE must be large enough that regular blocks are not
- * deferred. XXX so can't we change it back to 1?
- */
-#define SYNC_PASS_DEFERRED_FREE 2 /* defer frees after this pass */
-#define SYNC_PASS_DONT_COMPRESS 4 /* don't compress after this pass */
-#define SYNC_PASS_REWRITE 1 /* rewrite new bps after this pass */
+extern int zfs_sync_pass_deferred_free;
/* spa namespace global mutex */
extern kmutex_t spa_namespace_lock;
diff --git a/include/sys/space_map.h b/include/sys/space_map.h
index 332299724..cbe75afd1 100644
--- a/include/sys/space_map.h
+++ b/include/sys/space_map.h
@@ -23,6 +23,10 @@
* Use is subject to license terms.
*/
+/*
+ * Copyright (c) 2012 by Delphix. All rights reserved.
+ */
+
#ifndef _SYS_SPACE_MAP_H
#define _SYS_SPACE_MAP_H
@@ -136,6 +140,8 @@ struct space_map_ops {
typedef void space_map_func_t(space_map_t *sm, uint64_t start, uint64_t size);
+extern void space_map_init(void);
+extern void space_map_fini(void);
extern void space_map_create(space_map_t *sm, uint64_t start, uint64_t size,
uint8_t shift, kmutex_t *lp);
extern void space_map_destroy(space_map_t *sm);
diff --git a/include/sys/zio_impl.h b/include/sys/zio_impl.h
index d90bd8bd5..2d062d091 100644
--- a/include/sys/zio_impl.h
+++ b/include/sys/zio_impl.h
@@ -23,6 +23,10 @@
* Use is subject to license terms.
*/
+/*
+ * Copyright (c) 2012 by Delphix. All rights reserved.
+ */
+
#ifndef _ZIO_IMPL_H
#define _ZIO_IMPL_H
@@ -143,6 +147,7 @@ enum zio_stage {
#define ZIO_FREE_PIPELINE \
(ZIO_INTERLOCK_STAGES | \
ZIO_STAGE_FREE_BP_INIT | \
+ ZIO_STAGE_ISSUE_ASYNC | \
ZIO_STAGE_DVA_FREE)
#define ZIO_DDT_FREE_PIPELINE \