diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c index fe4c2eedcf..dcdc911d06 100644 --- a/module/zfs/dbuf.c +++ b/module/zfs/dbuf.c @@ -1037,6 +1037,7 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t *tx) * transaction group won't leak out when we sync the older txg. */ dr = kmem_zalloc(sizeof (dbuf_dirty_record_t), KM_SLEEP); + list_link_init(&dr->dr_dirty_node); if (db->db_level == 0) { void *data_old = db->db_buf; diff --git a/module/zfs/dnode.c b/module/zfs/dnode.c index e96c7dd833..0cc67db59d 100644 --- a/module/zfs/dnode.c +++ b/module/zfs/dnode.c @@ -283,6 +283,13 @@ dnode_create(objset_impl_t *os, dnode_phys_t *dnp, dmu_buf_impl_t *db, dn->dn_dbuf = db; dn->dn_phys = dnp; + list_link_init(&dn->dn_link); + { + int i; + for (i = 0; i < TXG_SIZE; i++) + list_link_init(&dn->dn_dirty_link[i]); + } + if (dnp->dn_datablkszsec) dnode_setdblksz(dn, dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT); dn->dn_indblkshift = dnp->dn_indblkshift; diff --git a/module/zfs/include/sys/dbuf.h b/module/zfs/include/sys/dbuf.h index 75ce27264e..bea71f06f1 100644 --- a/module/zfs/include/sys/dbuf.h +++ b/module/zfs/include/sys/dbuf.h @@ -85,9 +85,6 @@ struct dmu_tx; * etc. */ -#define LIST_LINK_INACTIVE(link) \ - ((link)->list_next == NULL && (link)->list_prev == NULL) - struct dmu_buf_impl; typedef enum override_states {