diff --git a/module/zfs/dnode.c b/module/zfs/dnode.c index 39e9ca1b8..7157d8c8a 100644 --- a/module/zfs/dnode.c +++ b/module/zfs/dnode.c @@ -342,20 +342,11 @@ dnode_byteswap(dnode_phys_t *dnp) * dnode dnode is smaller than a regular dnode. */ if (dnp->dn_bonuslen != 0) { - /* - * Note that the bonus length calculated here may be - * longer than the actual bonus buffer. This is because - * we always put the bonus buffer after the last block - * pointer (instead of packing it against the end of the - * dnode buffer). - */ - int off = (dnp->dn_nblkptr-1) * sizeof (blkptr_t); - int slots = dnp->dn_extra_slots + 1; - size_t len = DN_SLOTS_TO_BONUSLEN(slots) - off; dmu_object_byteswap_t byteswap; ASSERT(DMU_OT_IS_VALID(dnp->dn_bonustype)); byteswap = DMU_OT_BYTESWAP(dnp->dn_bonustype); - dmu_ot_byteswap[byteswap].ob_func(dnp->dn_bonus + off, len); + dmu_ot_byteswap[byteswap].ob_func(DN_BONUS(dnp), + DN_MAX_BONUS_LEN(dnp)); } /* Swap SPILL block if we have one */