summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <behlendorf1@llnl.gov>2021-11-10 16:14:32 -0800
committerGitHub <noreply@github.com>2021-11-10 16:14:32 -0800
commitc23803be84cb5cc9d98186221f4106a9962dfc45 (patch)
tree2813acdadf76c9553c8abc64e3eb453f6b8b5178
parent371e0f7754746f2b2574006ec5dd58059cf165cd (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
-rw-r--r--module/zfs/dnode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/module/zfs/dnode.c b/module/zfs/dnode.c
index 6f87f49f8..db1a5d71d 100644
--- a/module/zfs/dnode.c
+++ b/module/zfs/dnode.c
@@ -1657,7 +1657,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);
}