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);