]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/zil.c
Implement large_dnode pool feature
[mirror_zfs.git] / module / zfs / zil.c
index 289b23c7f488a44755be6c59f4929ac0b618ff36..988ffec292f3d649915a38d3781ddfd4b84b555b 100644 (file)
@@ -1372,7 +1372,8 @@ zil_itx_assign(zilog_t *zilog, itx_t *itx, dmu_tx_t *tx)
                itxg->itxg_sod += itx->itx_sod;
        } else {
                avl_tree_t *t = &itxs->i_async_tree;
-               uint64_t foid = ((lr_ooo_t *)&itx->itx_lr)->lr_foid;
+               uint64_t foid =
+                   LR_FOID_GET_OBJ(((lr_ooo_t *)&itx->itx_lr)->lr_foid);
                itx_async_node_t *ian;
                avl_index_t where;
 
@@ -1918,7 +1919,8 @@ zil_close(zilog_t *zilog)
        mutex_exit(&zilog->zl_lock);
        if (txg)
                txg_wait_synced(zilog->zl_dmu_pool, txg);
-       ASSERT(!zilog_is_dirty(zilog));
+       if (txg < spa_freeze_txg(zilog->zl_spa))
+               ASSERT(!zilog_is_dirty(zilog));
 
        taskq_destroy(zilog->zl_clean_taskq);
        zilog->zl_clean_taskq = NULL;
@@ -2122,7 +2124,7 @@ zil_replay_log_record(zilog_t *zilog, lr_t *lr, void *zra, uint64_t claim_txg)
         */
        if (TX_OOO(txtype)) {
                error = dmu_object_info(zilog->zl_os,
-                   ((lr_ooo_t *)lr)->lr_foid, NULL);
+                   LR_FOID_GET_OBJ(((lr_ooo_t *)lr)->lr_foid), NULL);
                if (error == ENOENT || error == EEXIST)
                        return (0);
        }