aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/bpobj.c
diff options
context:
space:
mode:
authorLOLi <[email protected]>2017-10-27 01:58:38 +0200
committerBrian Behlendorf <[email protected]>2017-10-26 16:58:38 -0700
commitee45fbd89465f12b39e97173a088175d4b712b5f (patch)
tree811bc8bc132c6aef42e6d18f2a6ffde9abe20f7b /module/zfs/bpobj.c
parent88f9c9396bcce596db56dc880260f95c49a51d67 (diff)
ZFS send fails to dump objects larger than 128PiB
When dumping objects larger than 128PiB it's possible for do_dump() to miscalculate the FREE_RECORD offset due to an integer overflow condition: this prevents the receiving end from correctly restoring the dumped object. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Fabian Grünbichler <[email protected]> Signed-off-by: loli10K <[email protected]> Closes #6760
Diffstat (limited to 'module/zfs/bpobj.c')
-rw-r--r--module/zfs/bpobj.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/module/zfs/bpobj.c b/module/zfs/bpobj.c
index 82ca94e1d..32459c9a8 100644
--- a/module/zfs/bpobj.c
+++ b/module/zfs/bpobj.c
@@ -261,7 +261,7 @@ bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx,
}
if (free) {
VERIFY3U(0, ==, dmu_free_range(bpo->bpo_os, bpo->bpo_object,
- (i + 1) * sizeof (blkptr_t), -1ULL, tx));
+ (i + 1) * sizeof (blkptr_t), DMU_OBJECT_END, tx));
}
if (err || !bpo->bpo_havesubobj || bpo->bpo_phys->bpo_subobjs == 0)
goto out;
@@ -339,7 +339,7 @@ bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx,
if (free) {
VERIFY3U(0, ==, dmu_free_range(bpo->bpo_os,
bpo->bpo_phys->bpo_subobjs,
- (i + 1) * sizeof (uint64_t), -1ULL, tx));
+ (i + 1) * sizeof (uint64_t), DMU_OBJECT_END, tx));
}
out: