diff options
author | Tom Caputi <[email protected]> | 2019-03-27 14:30:48 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-03-27 11:30:48 -0700 |
commit | 5dbf8b4edd5a60b0d043b09aa168e8be1fb30647 (patch) | |
tree | c669936d8489f78461b70ff64492bba9dcec4224 /module/zfs/vdev_root.c | |
parent | 85a150ce1e6d609cec814f9af28ce4f2aef312ab (diff) |
Fix issues with truncated files in raw sends
This patch fixes a few issues with raw receives involving
truncated files:
* dnode_reallocate() now calls dnode_set_blksz() instead of
dnode_setdblksz(). This ensures that any remaining dbufs with
blkid 0 are resized along with their containing dnode upon
reallocation.
* One of the calls to dmu_free_long_range() in receive_object()
needs to check that the object it is about to free some contents
or hasn't been completely removed already by a previous call to
dmu_free_long_object() in the same function.
* The same call to dmu_free_long_range() in the previous point
needs to ensure it uses the object's current block size and
not the new block size. This ensures the blocks of the object
that are supposed to be freed are completely removed and not
simply partially zeroed out.
This patch also adds handling for DRR_OBJECT_RANGE records to
dprintf_drr() for debugging purposes.
Reviewed-by: Matt Ahrens <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tom Caputi <[email protected]>
Closes #7378
Closes #8528
Diffstat (limited to 'module/zfs/vdev_root.c')
0 files changed, 0 insertions, 0 deletions