summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch')
-rw-r--r--sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch b/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch
new file mode 100644
index 000000000000..f8d67ccc7cef
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/0.8.0_revert_Report_holes.patch
@@ -0,0 +1,53 @@
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Wed, 29 May 2019 14:38:15 -0700
+Subject: Revert [PATCH] Report holes when there are only metadata changes
+
+This reverts ec4f9b8f30391a3fb46c8d4a31c2dc9250dca1bb
+Issue: https://github.com/zfsonlinux/zfs/issues/8816
+Bug: https://bugs.gentoo.org/635002
+---
+--- b/module/zfs/dmu.c
++++ a/module/zfs/dmu.c
+@@ -2366,39 +2366,14 @@
+ return (err);
+
+ /*
++ * Check if dnode is dirty
+- * Check if there are dirty data blocks or frees which have not been
+- * synced. Dirty spill and bonus blocks which are external to the
+- * object can ignored when reporting holes.
+ */
+- mutex_enter(&dn->dn_mtx);
+ for (i = 0; i < TXG_SIZE; i++) {
+ if (multilist_link_active(&dn->dn_dirty_link[i])) {
++ clean = B_FALSE;
++ break;
+-
+- if (dn->dn_free_ranges[i] != NULL) {
+- clean = B_FALSE;
+- break;
+- }
+-
+- list_t *list = &dn->dn_dirty_records[i];
+- dbuf_dirty_record_t *dr;
+-
+- for (dr = list_head(list); dr != NULL;
+- dr = list_next(list, dr)) {
+- dmu_buf_impl_t *db = dr->dr_dbuf;
+-
+- if (db->db_blkid == DMU_SPILL_BLKID ||
+- db->db_blkid == DMU_BONUS_BLKID)
+- continue;
+-
+- clean = B_FALSE;
+- break;
+- }
+ }
+-
+- if (clean == B_FALSE)
+- break;
+ }
+- mutex_exit(&dn->dn_mtx);
+
+ /*
+ * If compatibility option is on, sync any current changes before