3747 txg commit callbacks don't work
Reviewed by: Matthew Ahrens <
[email protected]>
Reviewed by: Eric Schrock <
[email protected]>
Approved by: Christopher Siden <
[email protected]>
--- a/usr/src/cmd/ztest/ztest.c Tue Jun 11 09:13:47 2013 -0800
+++ b/usr/src/cmd/ztest/ztest.c Tue Jun 11 09:13:51 2013 -0800
@@ -4507,7 +4507,7 @@
*/
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);
}
--- a/usr/src/uts/common/fs/zfs/txg.c Tue Jun 11 09:13:47 2013 -0800
+++ b/usr/src/uts/common/fs/zfs/txg.c Tue Jun 11 09:13:51 2013 -0800
@@ -435,7 +435,7 @@
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);