Skip to content

Instantly share code, notes, and snippets.

@pcd1193182
Last active July 7, 2016 23:42
Show Gist options
  • Save pcd1193182/2c0cd47211f3aee623958b4698836c48 to your computer and use it in GitHub Desktop.
Save pcd1193182/2c0cd47211f3aee623958b4698836c48 to your computer and use it in GitHub Desktop.
diff --git a/usr/src/uts/common/fs/zfs/dmu_traverse.c b/usr/src/uts/common/fs/zfs/dmu_traverse.c
index ac93002..a1a0293 100644
--- a/usr/src/uts/common/fs/zfs/dmu_traverse.c
+++ b/usr/src/uts/common/fs/zfs/dmu_traverse.c
@@ -39,6 +39,7 @@
#include <sys/zfeature.h>
int32_t zfs_pd_bytes_max = 50 * 1024 * 1024; /* 50MB */
+boolean_t ignore_hole_birth = B_FALSE;
typedef struct prefetch_data {
kmutex_t pd_mtx;
@@ -254,7 +255,7 @@ traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp,
*
* Note that the meta-dnode cannot be reallocated.
*/
- if ((!td->td_realloc_possible ||
+ if (!ignore_hole_birth && (!td->td_realloc_possible ||
zb->zb_object == DMU_META_DNODE_OBJECT) &&
td->td_hole_birth_enabled_txg <= td->td_min_txg)
return (0);
@pcd1193182
Copy link
Author

The latest rev will cause hole birth to be ignored when sending holes with birth time zero, if the tunable is set. You still get some of the hole birth benefits, just not all of them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment