git: e0bb19992556 - main - zfs: cherry-pick openzfs/zfs@c71fe7164
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 17 Apr 2023 09:25:19 UTC
The branch main has been updated by pjd:
URL: https://cgit.FreeBSD.org/src/commit/?id=e0bb199925565a3770733afd1a4d8bb2d4d0ce31
commit e0bb199925565a3770733afd1a4d8bb2d4d0ce31
Author: Pawel Jakub Dawidek <pjd@FreeBSD.org>
AuthorDate: 2023-04-17 09:19:49 +0000
Commit: Pawel Jakub Dawidek <pjd@FreeBSD.org>
CommitDate: 2023-04-17 09:19:49 +0000
zfs: cherry-pick openzfs/zfs@c71fe7164
Fix data corruption when cloning embedded blocks
Don't overwrite blk_phys_birth, as for embedded blocks it is part of
the payload.
Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Pawel Jakub Dawidek <pawel@dawidek.net>
Issue #13392
Closes #14739
Approved by: oshogbo, mm
---
sys/contrib/openzfs/module/zfs/dmu.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sys/contrib/openzfs/module/zfs/dmu.c b/sys/contrib/openzfs/module/zfs/dmu.c
index ce985d833f58..cda1472a77aa 100644
--- a/sys/contrib/openzfs/module/zfs/dmu.c
+++ b/sys/contrib/openzfs/module/zfs/dmu.c
@@ -2312,8 +2312,10 @@ dmu_brt_clone(objset_t *os, uint64_t object, uint64_t offset, uint64_t length,
dl->dr_overridden_by.blk_phys_birth = 0;
} else {
dl->dr_overridden_by.blk_birth = dr->dr_txg;
- dl->dr_overridden_by.blk_phys_birth =
- BP_PHYSICAL_BIRTH(bp);
+ if (!BP_IS_EMBEDDED(bp)) {
+ dl->dr_overridden_by.blk_phys_birth =
+ BP_PHYSICAL_BIRTH(bp);
+ }
}
mutex_exit(&db->db_mtx);