summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/dsl_pool.c
diff options
context:
space:
mode:
authorAlek Pinchuk <apinchuk@datto.com>2019-11-22 12:16:17 -0700
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-11-26 14:27:07 -0700
commitc5832a5333c189dfa346a3c1edac9fa39e1de4cb (patch)
treedf32cfc8f1fbee1e7647d9601fe3cbdb3a4f3d4c /usr/src/uts/common/fs/zfs/dsl_pool.c
parente2336878c3b2087bcf5c52436847f37afaec8666 (diff)
downloadillumos-joyent-c5832a5333c189dfa346a3c1edac9fa39e1de4cb.tar.gz
12002 async unlinked drain
Portions contributed by: Jerry Jelinek <jerry.jelinek@joyent.com> Portions contributed by: Roman Strashkin <roman.strashkin@nexenta.com> Portions contributed by: Saso Kiselkov <saso.kiselkov@nexenta.com> Reviewed by: Jorgen Lundman <lundman@lundman.net> Reviewed by: Tom Caputi <tcaputi@datto.com> Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed by: Matt Ahrens <mahrens@delphix.com> Reviewed by: Paul Dagnelie <pcd@delphix.com> Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com> Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com> Reviewed by: C Fraire <cfraire@me.com> Reviewed by: Kody Kantor <kody.kantor@joyent.com> Approved by: Dan McDonald <danmcd@joyent.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, 10 insertions, 0 deletions
diff --git a/usr/src/uts/common/fs/zfs/dsl_pool.c b/usr/src/uts/common/fs/zfs/dsl_pool.c
index abc69ec57c..bc6f9aff77 100644
--- a/usr/src/uts/common/fs/zfs/dsl_pool.c
+++ b/usr/src/uts/common/fs/zfs/dsl_pool.c
@@ -221,6 +221,9 @@ dsl_pool_open_impl(spa_t *spa, uint64_t txg)
dp->dp_vnrele_taskq = taskq_create("zfs_vn_rele_taskq", 1, minclsyspri,
1, 4, 0);
+ dp->dp_unlinked_drain_taskq = taskq_create("z_unlinked_drain",
+ max_ncpus, minclsyspri, max_ncpus, INT_MAX,
+ TASKQ_PREPOPULATE | TASKQ_DYNAMIC);
return (dp);
}
@@ -402,6 +405,7 @@ dsl_pool_close(dsl_pool_t *dp)
rrw_destroy(&dp->dp_config_rwlock);
mutex_destroy(&dp->dp_lock);
+ taskq_destroy(dp->dp_unlinked_drain_taskq);
taskq_destroy(dp->dp_vnrele_taskq);
if (dp->dp_blkstats != NULL)
kmem_free(dp->dp_blkstats, sizeof (zfs_all_blkstats_t));
@@ -1077,6 +1081,12 @@ dsl_pool_vnrele_taskq(dsl_pool_t *dp)
return (dp->dp_vnrele_taskq);
}
+taskq_t *
+dsl_pool_unlinked_drain_taskq(dsl_pool_t *dp)
+{
+ return (dp->dp_unlinked_drain_taskq);
+}
+
/*
* Walk through the pool-wide zap object of temporary snapshot user holds
* and release them.