Go to file
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
cmd Provide a rc.d script for archlinux 2011-07-11 14:12:23 -07:00
config Fix the configure CONFIG_* option detection 2011-07-22 15:07:16 -07:00
dracut Wrap dracut scripts to 79 chars 2011-07-31 11:28:44 -07:00
etc Add .gitignore for zfs.<distro> init scripts 2011-08-01 10:27:54 -07:00
include Provide a rc.d script for archlinux 2011-07-11 14:12:23 -07:00
lib Provide a rc.d script for archlinux 2011-07-11 14:12:23 -07:00
man Update 'zpool import' man page 2011-07-19 11:24:20 -07:00
module Illumos #764: panic in zfs:dbuf_sync_list 2011-08-01 12:09:11 -07:00
patches Add build system 2010-08-31 13:41:27 -07:00
scripts Provide a rc.d script for archlinux 2011-07-11 14:12:23 -07:00
.gitignore Ignore unsigned module build products 2010-03-09 14:14:09 -08:00
AUTHORS Add "ashift" property to zpool create 2011-06-17 16:35:49 -07:00
autogen.sh Make autogen.sh executable 2011-07-26 10:15:35 -07:00
ChangeLog Add build system 2010-08-31 13:41:27 -07:00
configure Turn the init.d scripts into autoconf config files 2011-08-01 09:54:44 -07:00
configure.ac Turn the init.d scripts into autoconf config files 2011-08-01 09:54:44 -07:00
COPYING Relocate COPYING+COPYRIGHT, remove README cruft 2008-12-01 15:34:53 -08:00
COPYRIGHT Update COPYRIGHT to reference zpios CDDL exceptions. 2010-05-18 14:25:28 -07:00
DISCLAIMER Update COPYRIGHT and DISCLAIMER. 2010-05-18 10:32:23 -07:00
Makefile.am Add dracut support 2011-03-17 16:52:04 -07:00
Makefile.in Provide a rc.d script for archlinux 2011-07-11 14:12:23 -07:00
META Prep zfs-0.6.0-rc5 tag 2011-07-01 15:24:34 -07:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
README.markdown Fix markdown rendering 2010-09-15 09:09:37 -07:00
zfs_config.h.in Linux compat 2.6.39: mount_nodev() 2011-07-01 13:36:39 -07:00
zfs-modules.spec.in Fix rebuildable RPMs for el6/ch5 2011-04-08 10:22:42 -07:00
zfs-script-config.sh.in Unconditionally load core kernel modules 2010-11-11 11:38:25 -08:00
ZFS.RELEASE Update to onnv_147 2010-08-26 14:24:34 -07:00
zfs.spec.in Remove zfs service only on uninstall, not on upgrade 2011-07-08 11:44:17 -07:00

Native ZFS for Linux! ZFS is an advanced file system and volume manager which was originally developed for Solaris. It has been successfully ported to FreeBSD and now there is a functional Linux ZFS kernel port too. The port currently includes a fully functional and stable SPA, DMU, and ZVOL with a ZFS Posix Layer (ZPL) on the way!

$ ./configure
$ make pkg

Full documentation for building, configuring, and using ZFS can be found at: http://zfsonlinux.org