]> granicus.if.org Git - zfs/commit
Fix unallocated object detection for large_dnode datasets
authorLOLi <loli10K@users.noreply.github.com>
Fri, 13 Jan 2017 23:47:34 +0000 (00:47 +0100)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 13 Jan 2017 23:47:34 +0000 (15:47 -0800)
commit08f0510d87186575db00269fff17a3409de5ceb6
tree21938c4d405161079020ef9d1a47c1b55d677d7b
parent5043684ae51195fc8b7ce7ff15241f17fe23d993
Fix unallocated object detection for large_dnode datasets

Fix dmu_object_next() to correctly handle unallocated objects on
large_dnode datasets.

We implement this by scanning the dnode block until we find the correct
offset to be used in dnode_next_offset(). This is necessary because we
can't assume *objectp is a hole even if dmu_object_info() returns
ENOENT.

This fixes a couple of issues with zfs receive on large_dnode datasets.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #5027
Closes #5532
module/zfs/dmu_object.c
module/zfs/dnode.c
tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_005_pos.ksh