]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFV r337200:
authorAlexander Motin <mav@FreeBSD.org>
Thu, 2 Aug 2018 23:43:01 +0000 (23:43 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Thu, 2 Aug 2018 23:43:01 +0000 (23:43 +0000)
commit050b16aea8bb014827936006e350012319e431ad
treea431b222a9c628fa9f05dbb016473a7e37371f16
parent7420e614fe3019e7af744adc5a1677b9a87c5d77
parent1ca9a2427b244ea50644079bb46b464b64932c03
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