mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-27 18:34:22 +03:00
receive_spill does not byte swap spill contents
In zfs receive, the function receive_spill should account for spill block endian conversion as a defensive measure. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tom Caputi <tcaputi@datto.com> Signed-off-by: Paul Zuchowski <pzuchowski@datto.com> Closes #7300
This commit is contained in:
parent
de4f8d5d26
commit
1a2342784a
@ -2977,6 +2977,15 @@ receive_spill(struct receive_writer_arg *rwa, struct drr_spill *drrs,
|
||||
if (db_spill->db_size < drrs->drr_length)
|
||||
VERIFY(0 == dbuf_spill_set_blksz(db_spill,
|
||||
drrs->drr_length, tx));
|
||||
|
||||
if (rwa->byteswap && !arc_is_encrypted(abuf) &&
|
||||
arc_get_compression(abuf) == ZIO_COMPRESS_OFF) {
|
||||
dmu_object_byteswap_t byteswap =
|
||||
DMU_OT_BYTESWAP(drrs->drr_type);
|
||||
dmu_ot_byteswap[byteswap].ob_func(abuf->b_data,
|
||||
DRR_SPILL_PAYLOAD_SIZE(drrs));
|
||||
}
|
||||
|
||||
dbuf_assign_arcbuf((dmu_buf_impl_t *)db_spill, abuf, tx);
|
||||
|
||||
dmu_buf_rele(db, FTAG);
|
||||
|
Loading…
Reference in New Issue
Block a user