Don't set numobjs to UINT64_MAX or near it

Resolves an issue with `zfs send` streams from 0.8.4 which
prevents them from being received by versions < 0.7.

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #10911 
Closes #10916
This commit is contained in:
Paul Dagnelie 2020-09-22 16:16:07 -07:00 committed by GitHub
parent e865e7809e
commit 20dfe8cd3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -643,7 +643,7 @@ dump_freeobjects(dmu_send_cookie_t *dscp, uint64_t firstobj, uint64_t numobjs)
* receiving side. * receiving side.
*/ */
if (maxobj > 0) { if (maxobj > 0) {
if (maxobj < firstobj) if (maxobj <= firstobj)
return (0); return (0);
if (maxobj < firstobj + numobjs) if (maxobj < firstobj + numobjs)
@ -663,8 +663,6 @@ dump_freeobjects(dmu_send_cookie_t *dscp, uint64_t firstobj, uint64_t numobjs)
return (SET_ERROR(EINTR)); return (SET_ERROR(EINTR));
dscp->dsc_pending_op = PENDING_NONE; dscp->dsc_pending_op = PENDING_NONE;
} }
if (numobjs == 0)
numobjs = UINT64_MAX - firstobj;
if (dscp->dsc_pending_op == PENDING_FREEOBJECTS) { if (dscp->dsc_pending_op == PENDING_FREEOBJECTS) {
/* /*