ZFS "partially filled holes lose birth time"

Bug #1600060 reported by Richard Laager
26
This bug affects 5 people
Affects Status Importance Assigned to Milestone
zfs-linux (Debian)
Fix Released
Unknown
zfs-linux (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

Note: This is different from Launchpad bug #1557151. This is another, similar, bug.

Bug description from Matt Ahrens at OpenZFS:
"If a ZFS object contains a hole at level one, and then a data block is
 created at level 0 underneath that l1 block, l0 holes will be created.
 However, these l0 holes do not have the birth time property set; as a
 result, incremental sends will not send those holes.

 Fix is to modify the dbuf_read code to fill in birth time data."
-- https://www.illumos.org/issues/6513

From pcd on IRC in #zfsonlinux:
"basically, what happens is this: if you zero out an entire l1 indirect
 block's worth of data (several megabytes), we save space by storing that
 entire indirect block as a single hole in an l2 indirect block with
 birth time N. If you then modify some of the data under that, but not
 all of it, when the l1 indirect block is filled back in with mostly
 holes and some data blocks, the wholes will not have any"

Fixed in ZoL here:
https://github.com/zfsonlinux/zfs/commit/bc77ba73fec82d37c0b57949ec29edd9aa207677

This has *not* been merged into a ZoL release yet, nor the release branch.

This is a very unfortunate bug because the fix only helps you moving forward. A separate bug has been opened to propose a fix for that:
https://www.illumos.org/issues/7175

Richard Laager (rlaager)
description: updated
Changed in zfs-linux (Debian):
status: Unknown → New
Changed in zfs-linux (Debian):
status: New → Fix Committed
Changed in zfs-linux (Debian):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in zfs-linux (Ubuntu):
status: New → Confirmed
Revision history for this message
Richard Laager (rlaager) wrote :

And also:
https://github.com/zfsonlinux/zfs/issues/4996
fix pending here:
https://github.com/zfsonlinux/zfs/pull/5061

Debian is shipping a patch to add an ignore_hole_birth tunable (and defaulting to on). We should get that in Ubuntu, except that we also want to rename it as per here:
https://github.com/zfsonlinux/zfs/pull/5239/commits/9af8a46cc80a1b14c12c95edac4b10b8b3b9a7f2

Revision history for this message
fmyhr (fmyhr-u) wrote :

17.04 has ZFS 0.6.5.7 that works around this bug using /sys/module/zfs/parameters/ignore_hole_birth tunable. Will a backport of this bugfix to 16.04 LTS be forthcoming?

Richard Laager (rlaager)
Changed in zfs-linux (Ubuntu):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.