Go to file
Tom Caputi 047116ac76 Raw sends must be able to decrease nlevels
Currently, when a raw zfs send file includes a DRR_OBJECT record
that would decrease the number of levels of an existing object,
the object is reallocated with dmu_object_reclaim() which
creates the new dnode using the old object's nlevels. For non-raw
sends this doesn't really matter, but raw sends require that
nlevels on the receive side match that of the send side so that
the checksum-of-MAC tree can be properly maintained. This patch
corrects the issue by freeing the object completely before
allocating it again in this case.

This patch also corrects several issues with dnode_hold_impl()
and related functions that prevented dnodes (particularly
multi-slot dnodes) from being reallocated properly due to
the fact that existing dnodes were not being fully cleaned up
when they were freed.

This patch adds a test to make sure that zfs recv functions
properly with incremental streams containing dnodes of different
sizes.

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Jorgen Lundman <lundman@lundman.net>
Signed-off-by: Tom Caputi <tcaputi@datto.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #6821
Closes #6864
2018-02-02 11:43:11 -08:00
.github Reduce codecov PR comments 2018-01-09 11:15:55 -08:00
cmd Raw sends must be able to decrease nlevels 2018-02-02 11:43:11 -08:00
config Fix Debian packaging on ARMv7/ARM64 2018-01-18 10:15:41 -08:00
contrib Encryption Stability and On-Disk Format Fixes 2018-02-02 11:37:16 -08:00
etc remove pools without a bootfs from BOOTFS variable 2018-01-30 15:58:19 -08:00
include Raw sends must be able to decrease nlevels 2018-02-02 11:43:11 -08:00
lib Encryption Stability and On-Disk Format Fixes 2018-02-02 11:37:16 -08:00
man Fix zpool-features(5) large_block inconsistency 2018-01-29 15:10:32 -08:00
module Raw sends must be able to decrease nlevels 2018-02-02 11:43:11 -08:00
rpm Force ztest to always use /dev/urandom 2018-01-12 09:36:26 -08:00
scripts Extend zloop.sh for automated testing 2018-01-25 13:42:34 -08:00
tests Raw sends must be able to decrease nlevels 2018-02-02 11:43:11 -08:00
udev Fix spelling 2017-01-03 11:31:18 -06:00
.gitignore Add configure option to enable gcov analysis 2017-09-15 10:24:13 -07:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
.travis.yml Add .travis.yml 2017-11-13 09:18:18 -08:00
AUTHORS Add a missing > to AUTHORS 2014-09-02 14:18:53 -07:00
autogen.sh build: do not call boilerplate ourself 2013-04-02 10:55:20 -07:00
configure.ac Add dbuf hash and dbuf cache kstats 2018-01-29 10:24:52 -08:00
copy-builtin Fix copy-builtin to work with ASAN patch 2018-01-12 09:39:36 -08:00
COPYRIGHT Encryption patch follow-up 2017-10-11 16:54:48 -04:00
DISCLAIMER Fix minor typos and update marketing copy. 2013-03-21 12:51:06 -07:00
Makefile.am Update for cppcheck v1.80 2017-11-18 14:08:00 -08:00
META Tag zfs-0.7.0 2017-07-26 10:13:25 -07:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
README.markdown Add scan.coverity.com badge to README 2017-10-30 16:21:24 -07:00
TEST Refresh TEST file to include new variables 2017-11-08 11:09:30 -08:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

ZFS on Linux is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community.

codecov coverity

Official Resources

Installation

Full documentation for installing ZoL on your favorite Linux distribution can be found at our site.

Contribute & Develop

We have a separate document with contribution guidelines.