summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <behlendorf1@llnl.gov>2021-11-10 16:14:32 -0800
committerTony Hutter <hutter2@llnl.gov>2021-11-12 16:31:55 -0800
commit33fa3985a9791a6dcd2ee60ac9ea21486d068c0f (patch)
tree857aa5ba31e35a0b2f2aaae3a044e57615a3845e
parenta524f8d6afa141dd82bc60554610679614ea0f54 (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 b1294a873..b41f4201f 100644
--- a/module/zfs/dnode.c
+++ b/module/zfs/dnode.c
@@ -1662,7 +1662,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);
}