diff options
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.patch | 53 |
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 |