aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Behlendorf <behlendorf1@llnl.gov>2021-11-11 00:14:32 +0000
committerMark Johnston <markj@FreeBSD.org>2022-03-20 14:10:36 +0000
commitb8ae329db949868b8275091da0844ffbff50c65a (patch)
treee63dc24b39a7d71070136893b1e1ef280a58216e
parent210991b1f28bfebfff889252445e4fe41b714c7d (diff)
Restore dirty dnode detection logic
In addition to flushing memory mapped regions when checking holes, commit de198f2d95 modified the dirty dnode detection logic to check the dn->dn_dirty_records instead of the dn->dn_dirty_link. Relying on the dirty record has not be reliable, switch back to the previous method. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #11900 Closes #12745 (cherry picked from commit d7e640cf95f72deeca501d34afed59a0bc9d7940) Approved by: so Security: FreeBSD-EN-22:13.zfs
-rw-r--r--sys/contrib/openzfs/module/zfs/dnode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/contrib/openzfs/module/zfs/dnode.c b/sys/contrib/openzfs/module/zfs/dnode.c
index 8592c5f8c3a9..b69ba68ec780 100644
--- a/sys/contrib/openzfs/module/zfs/dnode.c
+++ b/sys/contrib/openzfs/module/zfs/dnode.c
@@ -1661,7 +1661,7 @@ dnode_is_dirty(dnode_t *dn)
mutex_enter(&dn->dn_mtx);
for (int i = 0; i < TXG_SIZE; i++) {
- if (list_head(&dn->dn_dirty_records[i]) != NULL) {
+ if (multilist_link_active(&dn->dn_dirty_link[i])) {
mutex_exit(&dn->dn_mtx);
return (B_TRUE);
}