]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFV r286224: 5695 dmu_sync'ed holes do not retain birth time
authormav <mav@FreeBSD.org>
Wed, 12 Aug 2015 17:21:41 +0000 (17:21 +0000)
committermav <mav@FreeBSD.org>
Wed, 12 Aug 2015 17:21:41 +0000 (17:21 +0000)
commite8e83ea04ffd331beea107ebc6809904c8046e9f
tree40f339140cb0e334d851b5c831ed117e9e34f45c
parent325b6c51ab3c15f54c1f9a8d7bd960b2e8037d76
MFV r286224: 5695 dmu_sync'ed holes do not retain birth time

illumos/illumos-gate@70163ac57e58ace1c5c94dfbe85dca5a974eff36

https://www.illumos.org/issues/5695
  In dmu_sync_ready(), a hole block pointer will have it's logical size
  explicitly set as it's necessary for replay purposes. To "undo" this,
  dmu_sync_done() will zero out any hole that it finds. This becomes a
  problem when using the "hole_birth" feature, as this will also wipe out
  any birth time that might have happened to be set on the hole.
  ...
  As a fix, the logic to zero out a hole is only applied to old style
  holes with a birth time of zero. Holes created with the "hole_birth"
  feature enabled will have a non-zero birth time, and will be skipped
  (thus preserving the ltime, type, and level information as well).
  In addition, zdb was updated to also print the ltime, type, and level
  information for these new style holes. Previously, only the logical
  birth time would be printed.

Author: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: Bayard Bell <buffer.g.overflow@gmail.com>
Approved by: Dan McDonald <danmcd@omniti.com>
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h