]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r337202: MFV r337200:
authormav <mav@FreeBSD.org>
Wed, 3 Oct 2018 14:51:49 +0000 (14:51 +0000)
committermav <mav@FreeBSD.org>
Wed, 3 Oct 2018 14:51:49 +0000 (14:51 +0000)
commit77121fc3d0c597d0ff682f0a3faef58c675c24b0
tree318e64d4d21ba89054164398beae11f615313705
parent75bf027057c0a91287e68b03fb9b3a3145614ef3
MFC r337202: MFV r337200:
9438 Holes can lose birth time info if a block has a mix of birth times

Ultimately, the problem here is that when you truncate and write a file in
the same transaction group, the dbuf for the indirect block will be zeroed
out to deal with the truncation, and then written for the write. During
this process, we will lose hole birth time information for any holes in the
range. In the case where a dnode is being freed, we need to determine
whether the block should be converted to a higher-level hole in the zio
pipeline, and if so do it when the dnode is being synced out.

illumos/illumos-gate@738e2a3ce3b2579222d6855e7fe75b5bcfcddf8d

Reviewed by: Matt Ahrens <matt@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author:     Paul Dagnelie <pcd@delphix.com>
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c