From 315e700e50a7334c8ad4858c7e10aeaad9c68f64 Mon Sep 17 00:00:00 2001 From: delphij Date: Fri, 5 Jul 2013 03:54:13 +0000 Subject: [PATCH] MFC r251635: illumos #3747 txg commit callbacks don't work sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c: Fix commit callbacks by moving them to the task's list. Previously, list_move_tail() returned without doing anything because the task list was passed as the source rather than destination. cddl/contrib/opensolaris/cmd/ztest/ztest.c: Check the commit callback threshold correctly. Submitted by: will Reviewed by: Matthew Ahrens , Christopher Siden Sponsored by: Spectra Logic git-svn-id: svn://svn.freebsd.org/base/stable/9@252760 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- cddl/contrib/opensolaris/cmd/ztest/ztest.c | 2 +- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cddl/contrib/opensolaris/cmd/ztest/ztest.c b/cddl/contrib/opensolaris/cmd/ztest/ztest.c index ef776a4c7..94a5bd084 100644 --- a/cddl/contrib/opensolaris/cmd/ztest/ztest.c +++ b/cddl/contrib/opensolaris/cmd/ztest/ztest.c @@ -4509,7 +4509,7 @@ ztest_dmu_commit_callbacks(ztest_ds_t *zd, uint64_t id) */ tmp_cb = list_head(&zcl.zcl_callbacks); if (tmp_cb != NULL && - tmp_cb->zcd_txg > txg - ZTEST_COMMIT_CALLBACK_THRESH) { + (txg - ZTEST_COMMIT_CALLBACK_THRESH) > tmp_cb->zcd_txg) { fatal(0, "Commit callback threshold exceeded, oldest txg: %" PRIu64 ", open txg: %" PRIu64 "\n", tmp_cb->zcd_txg, txg); } diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c index bbf2f824c..18c722e56 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c @@ -439,7 +439,7 @@ txg_dispatch_callbacks(dsl_pool_t *dp, uint64_t txg) list_create(cb_list, sizeof (dmu_tx_callback_t), offsetof(dmu_tx_callback_t, dcb_node)); - list_move_tail(&tc->tc_callbacks[g], cb_list); + list_move_tail(cb_list, &tc->tc_callbacks[g]); (void) taskq_dispatch(tx->tx_commit_cb_taskq, (task_func_t *) txg_do_callbacks, cb_list, TQ_SLEEP); -- 2.45.0