]> granicus.if.org Git - zfs/commit
Handle new dnode size in incremental backup stream
authorNed Bass <bass6@llnl.gov>
Tue, 5 Sep 2017 23:09:15 +0000 (16:09 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 5 Sep 2017 23:09:15 +0000 (16:09 -0700)
commit65dcb0f67a4d72ee4e1e534703db5caacf1ec85f
treeeff9601d9162ede41c171824f2a264fe8e281246
parentc8811dec7044a126650c7e2d9f3404680ae115b5
Handle new dnode size in incremental backup stream

When receiving an incremental backup stream, call
dmu_object_reclaim_dnsize() if an object's dnode size differs between
the incremental source and target. Otherwise it may appear that a
dnode which has shrunk is still occupying slots which are in fact
free. This will cause a failure to receive new objects that should
occupy the now-free slots.

Add a test case to verify that an incremental stream containing
objects with changed dnode sizes can be received without error. This
test case fails without this change.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Closes #6366
Closes #6576
module/zfs/dmu_send.c
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/rsend/Makefile.am
tests/zfs-tests/tests/functional/rsend/send_changed_dnodesize.ksh [new file with mode: 0755]