Files
mirror_zfs/module/zfs
Gordon Ross ef3c1dea70 Illumos #764: panic in zfs:dbuf_sync_list
Hypothesis about what's going on here.

At some time in the past, something, i.e. dnode_reallocate()
calls one of:
dbuf_rm_spill(dn, tx);

These will do:
dbuf_rm_spill(dnode_t *dn, dmu_tx_t *tx)
dbuf_free_range(dn, DMU_SPILL_BLKID, DMU_SPILL_BLKID, tx)
dbuf_undirty(db, tx)

Currently dbuf_undirty can leave a spill block in dn_dirty_records[],
(it having been put there previously by dbuf_dirty) and free it.
Sometime later, dbuf_sync_list trips over this reference to free'd
(and typically reused) memory.

Also, dbuf_undirty can call dnode_clear_range with a bogus
block ID. It needs to test for DMU_SPILL_BLKID, similar to
how dnode_clear_range is called in dbuf_dirty().

References to Illumos issue and patch:
- https://www.illumos.org/issues/764
- https://github.com/illumos/illumos-gate/commit/3f2366c2bb

Reviewed by: George Wilson <gwilson@zfsmail.com>
Reviewed by: Mark.Maybe@oracle.com
Reviewed by: Albert Lee <trisk@nexenta.com
Approved by: Garrett D'Amore <garrett@nexenta.com>

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #340
2011-08-01 12:09:11 -07:00
..
2011-07-08 12:44:11 -07:00
2010-08-31 08:38:35 -07:00
2010-08-26 14:24:34 -07:00
2011-05-31 12:17:27 -07:00
2011-05-31 12:17:27 -07:00
2010-08-26 14:24:34 -07:00
2010-08-31 13:41:58 -07:00
2011-02-18 09:31:25 -08:00
2010-08-31 13:41:57 -07:00
2010-08-31 13:41:58 -07:00
2011-05-04 10:02:37 -07:00
2011-02-10 09:27:22 -08:00
2010-08-31 08:38:45 -07:00
2011-07-19 11:55:42 -07:00
2010-08-31 13:41:58 -07:00
2010-08-31 13:41:58 -07:00
2011-05-04 10:02:37 -07:00
2011-02-23 12:52:51 -08:00
2011-05-04 10:02:37 -07:00
2010-08-31 13:41:58 -07:00
2011-05-04 10:02:37 -07:00
2010-08-31 08:38:46 -07:00
2010-08-31 08:38:49 -07:00
2011-04-29 12:36:13 -07:00
2010-08-31 08:38:45 -07:00
2010-12-07 16:05:25 -08:00
2011-02-10 09:27:20 -08:00
2010-08-31 13:41:59 -07:00
2010-08-31 13:41:58 -07:00
2010-08-31 13:41:58 -07:00
2010-08-31 13:41:58 -07:00
2011-05-04 10:02:37 -07:00
2010-08-27 15:34:02 -07:00
2011-05-04 10:02:37 -07:00
2010-08-27 15:28:32 -07:00
2011-05-04 10:02:37 -07:00
2010-08-31 08:38:44 -07:00
2010-08-27 15:28:32 -07:00
2011-05-04 10:02:37 -07:00
2010-08-31 13:41:58 -07:00
2010-08-31 08:38:46 -07:00
2011-07-01 13:36:39 -07:00
2010-08-31 13:41:58 -07:00
2011-07-01 13:36:39 -07:00
2010-10-12 14:55:02 -07:00
2011-03-02 11:44:34 -08:00
2011-03-02 11:44:34 -08:00
2010-08-31 13:41:50 -07:00
2011-03-03 11:29:15 -08:00
2011-03-02 11:44:34 -08:00
2011-05-04 10:02:37 -07:00
2011-05-04 10:02:37 -07:00
2011-05-31 12:17:27 -07:00
2011-07-19 16:17:01 -07:00
2011-07-20 14:07:13 -07:00
2011-07-01 13:36:39 -07:00
2011-07-01 13:36:39 -07:00
2010-09-17 16:24:15 -07:00
2011-05-02 08:54:40 -07:00