aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/dsl_pool.c
diff options
context:
space:
mode:
authorMatthew Ahrens <[email protected]>2017-04-24 09:34:36 -0700
committerBrian Behlendorf <[email protected]>2017-05-10 13:52:22 -0400
commit4747a7d3d48ee307176dbd4a70c3be42b9f10dc0 (patch)
tree0f04fa2bebc46f7c19a544e8c1bafab0297148ef /module/zfs/dsl_pool.c
parent335b251ac1a1f8ba8434450dc0f24986bc44f688 (diff)
OpenZFS 8063 - verify that we do not attempt to access inactive txg
Authored by: Matthew Ahrens <[email protected]> Reviewed by: Serapheim Dimitropoulos <[email protected]> Reviewed by: Pavel Zakharov <[email protected]> Approved by: Robert Mustacchi <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Ported-by: George Melikov <[email protected]> A standard practice in ZFS is to keep track of "per-txg" state. Any of the 3 active TXG's (open, quiescing, syncing) can have different values for this state. We should assert that we do not attempt to modify other (inactive) TXG's. Porting Notes: - ASSERTV added to txg_sync_waiting() for unused variable. OpenZFS-issue: https://www.illumos.org/issues/8063 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/01acb46 Closes #6109
Diffstat (limited to 'module/zfs/dsl_pool.c')
-rw-r--r--module/zfs/dsl_pool.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/module/zfs/dsl_pool.c b/module/zfs/dsl_pool.c
index c98938f3c..97eb0cced 100644
--- a/module/zfs/dsl_pool.c
+++ b/module/zfs/dsl_pool.c
@@ -161,13 +161,13 @@ dsl_pool_open_impl(spa_t *spa, uint64_t txg)
rrw_init(&dp->dp_config_rwlock, B_TRUE);
txg_init(dp, txg);
- txg_list_create(&dp->dp_dirty_datasets,
+ txg_list_create(&dp->dp_dirty_datasets, spa,
offsetof(dsl_dataset_t, ds_dirty_link));
- txg_list_create(&dp->dp_dirty_zilogs,
+ txg_list_create(&dp->dp_dirty_zilogs, spa,
offsetof(zilog_t, zl_dirty_link));
- txg_list_create(&dp->dp_dirty_dirs,
+ txg_list_create(&dp->dp_dirty_dirs, spa,
offsetof(dsl_dir_t, dd_dirty_link));
- txg_list_create(&dp->dp_sync_tasks,
+ txg_list_create(&dp->dp_sync_tasks, spa,
offsetof(dsl_sync_task_t, dst_node));
dp->dp_sync_taskq = taskq_create("dp_sync_taskq",