diff options
author | Tom Caputi <[email protected]> | 2018-02-27 12:04:05 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-02-27 09:04:05 -0800 |
commit | 095495e0081c16a18641fc60e7c9872123a4f83e (patch) | |
tree | 6bfafa8d3c800a875fb042df43c08922b9cb8747 /udev | |
parent | 8b5814393f43d7eb7e4319120529d957a5f7bf8e (diff) |
Raw DRR_OBJECT records must write raw data
b1d21733 made it possible for empty metadnode blocks to be
compressed to a hole, fixing a bug that would cause invalid
metadnode MACs when a send stream attempted to free objects
and allowing the blocks to be reclaimed when they were no
longer needed. However, this patch also introduced a race
condition; if a txg sync occurred after a DRR_OBJECT_RANGE
record was received but before any objects were added, the
metadnode block would be compressed to a hole and lose all
of its encryption parameters. This would cause subsequent
DRR_OBJECT records to fail when they attempted to write
their data into an unencrypted block. This patch defers the
DRR_OBJECT_RANGE handling to receive_object() so that the
encryption parameters are set with each object that is
written into that block.
Reviewed-by: Kash Pande <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tom Caputi <[email protected]>
Closes #7215
Closes #7236
Diffstat (limited to 'udev')
0 files changed, 0 insertions, 0 deletions