-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sys-fs/zfs-kmod: revert patch causing SEEK_HOLE corruption (again)
This reverts commit 4b3133e671b958fa2c915a4faf57812820124a7b upstream. See #14753 - possible corruption again, very similar symptoms to the nightmare that was #11900 and same area of code. We can safely revert it as it's an optimisation rather than a bugfix in itself. Keen Gentoo users may remember the following commits (in Gentoo): - 8e5626dc90e4e6166c2e296371b6ff5a9d13a8c4 - 9fb275f656de639e25acc9497b70b4cae593d35d - 95c250a3f3986b2bc2091dd3981ff1e1d3de0c73 Bug: openzfs/zfs#14753 Bug: openzfs/zfs#11900 Signed-off-by: Sam James <[email protected]>
- Loading branch information
1 parent
2d0f84d
commit c21654b
Showing
2 changed files
with
72 additions
and
0 deletions.
There are no files selected for viewing
67 changes: 67 additions & 0 deletions
67
sys-fs/zfs-kmod/files/2.1.10-Revert-ZFS_IOC_COUNT_FILLED-does-unnecessary-txg_wai.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
From ac6b8f40981cb9328c22a3485e1a4b060ea89b1e Mon Sep 17 00:00:00 2001 | ||
From: Sam James <[email protected]> | ||
Date: Sun, 16 Apr 2023 04:49:04 +0100 | ||
Subject: [PATCH] Revert "ZFS_IOC_COUNT_FILLED does unnecessary | ||
txg_wait_synced()" | ||
|
||
This reverts commit 4b3133e671b958fa2c915a4faf57812820124a7b. | ||
|
||
See #14753 - possible corruption again, very similar symptoms to the | ||
nightmare that was #11900 and same area of code. | ||
|
||
We can safely revert it as it's an optimisation rather than a bugfix | ||
in itself. | ||
|
||
Bug: https://github.com/openzfs/zfs/issues/14753 | ||
Bug: https://github.com/openzfs/zfs/issues/11900 | ||
Signed-off-by: Sam James <[email protected]> | ||
--- a/module/zfs/dnode.c | ||
+++ b/module/zfs/dnode.c | ||
@@ -1773,29 +1773,20 @@ dnode_try_claim(objset_t *os, uint64_t object, int slots) | ||
} | ||
|
||
/* | ||
- * Checks if the dnode might contain any uncommitted changes to data blocks. | ||
- * Dirty metadata (e.g. bonus buffer) does not count. | ||
+ * Checks if the dnode contains any uncommitted dirty records. | ||
*/ | ||
boolean_t | ||
dnode_is_dirty(dnode_t *dn) | ||
{ | ||
mutex_enter(&dn->dn_mtx); | ||
+ | ||
for (int i = 0; i < TXG_SIZE; i++) { | ||
- list_t *list = &dn->dn_dirty_records[i]; | ||
- for (dbuf_dirty_record_t *dr = list_head(list); | ||
- dr != NULL; dr = list_next(list, dr)) { | ||
- if (dr->dr_dbuf == NULL || | ||
- (dr->dr_dbuf->db_blkid != DMU_BONUS_BLKID && | ||
- dr->dr_dbuf->db_blkid != DMU_SPILL_BLKID)) { | ||
- mutex_exit(&dn->dn_mtx); | ||
- return (B_TRUE); | ||
- } | ||
- } | ||
- if (dn->dn_free_ranges[i] != NULL) { | ||
+ if (multilist_link_active(&dn->dn_dirty_link[i])) { | ||
mutex_exit(&dn->dn_mtx); | ||
return (B_TRUE); | ||
} | ||
} | ||
+ | ||
mutex_exit(&dn->dn_mtx); | ||
|
||
return (B_FALSE); | ||
@@ -2667,9 +2658,7 @@ dnode_next_offset(dnode_t *dn, int flags, uint64_t *offset, | ||
rw_enter(&dn->dn_struct_rwlock, RW_READER); | ||
|
||
if (dn->dn_phys->dn_nlevels == 0) { | ||
- if (!(flags & DNODE_FIND_HOLE)) { | ||
- error = SET_ERROR(ESRCH); | ||
- } | ||
+ error = SET_ERROR(ESRCH); | ||
goto out; | ||
} | ||
|
||
-- | ||
2.40.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters