Alek P
7590972f76
Prevent range tree corruption race by updating dnode_sync()
...
Switch to incremental range tree processing in dnode_sync() to avoid
unsafe lock dropping during zfs_range_tree_walk(). This also ensures
the free ranges remain visible to dnode_block_freed() throughout the
sync process, preventing potential stale data reads.
This patch:
- Keeps the range tree attached during processing for visibility.
- Processes segments one-by-one by restarting from the tree head.
- Uses zfs_range_tree_clear() to safely handle ranges that may have
been modified while the lock was dropped.
- adds ASSERT()s to document that we don't expect dn_free_ranges
modification outside of sync context.
Reviewed-by: Paul Dagnelie <paul.dagnelie@klarasystems.com >
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov >
Signed-off-by: Alek Pinchuk <apinchuk@axcient.com >
Issue #18186
Closes #18235
2026-04-27 10:57:52 -07:00
..
2025-12-10 10:21:29 -08:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:30 -08:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:04:58 -08:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:07:09 -08:00
2025-08-07 11:41:42 -07:00
2026-02-19 11:14:37 -08:00
2025-03-13 17:56:27 -07:00
2026-04-27 10:57:52 -07:00
2026-02-19 11:14:37 -08:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2026-02-19 11:14:37 -08:00
2025-08-06 10:36:07 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:41:42 -07:00
2025-12-10 10:21:29 -08:00
2026-02-17 11:54:58 -08:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:41:42 -07:00
2025-08-06 10:36:07 -07:00
2026-02-17 11:54:58 -08:00
2025-05-13 14:26:55 -07:00
2025-11-12 13:07:09 -08:00
2026-04-27 10:57:52 -07:00
2026-04-27 10:57:52 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:41:42 -07:00
2026-02-05 13:48:30 -08:00
2025-08-13 15:56:25 -04:00
2025-08-07 11:40:59 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:40:59 -07:00
2025-08-07 11:41:37 -07:00
2025-08-07 11:40:59 -07:00
2026-02-05 13:48:31 -08:00
2025-05-28 10:28:59 -07:00
2025-08-07 11:40:59 -07:00
2025-03-13 17:56:27 -07:00
2025-08-07 11:40:59 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:46 -07:00
2025-03-13 17:56:46 -07:00
2025-03-13 17:56:27 -07:00
2026-02-19 11:14:37 -08:00
2026-02-10 17:01:29 -08:00
2025-08-12 13:36:03 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2026-04-27 10:57:52 -07:00
2025-05-02 15:32:18 -07:00
2025-08-07 11:41:37 -07:00
2026-02-05 13:48:31 -08:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:06:54 -08:00
2026-04-23 15:02:10 -07:00
2025-11-12 13:04:58 -08:00
2026-02-19 11:14:37 -08:00
2026-04-23 14:54:23 -07:00
2025-08-07 11:40:59 -07:00
2026-04-23 14:54:14 -07:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:40:59 -07:00
2018-06-06 09:35:59 -07:00
2018-06-06 09:35:59 -07:00
2025-05-28 10:27:46 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:57:31 -07:00
2026-04-23 15:00:46 -07:00
2025-09-10 15:01:32 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:41:42 -07:00
2025-11-12 13:06:54 -08:00
2026-02-10 17:01:29 -08:00
2026-04-23 15:00:46 -07:00
2025-05-02 15:32:18 -07:00
2025-08-07 11:41:42 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-05-28 16:50:22 -07:00
2026-04-23 15:00:46 -07:00
2026-04-23 14:54:23 -07:00
2025-11-12 13:06:54 -08:00
2025-05-02 15:32:18 -07:00
2025-11-12 13:06:54 -08:00
2026-04-23 14:54:23 -07:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2026-02-05 13:48:31 -08:00
2025-05-27 20:04:37 -04:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-06-10 14:53:10 -07:00
2025-08-07 11:41:42 -07:00
2025-09-09 17:03:27 -07:00
2025-03-13 17:56:27 -07:00
2025-12-10 10:21:29 -08:00
2025-09-15 12:43:34 -07:00
2025-04-18 09:22:16 -04:00
2025-12-10 10:21:29 -08:00
2025-11-12 13:04:58 -08:00
2025-03-13 17:56:27 -07:00
2026-04-23 15:02:14 -07:00
2025-08-08 16:43:20 -07:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2025-03-13 17:56:27 -07:00
2025-03-18 16:04:22 -07:00
2025-08-07 11:41:25 -07:00
2025-08-08 16:43:09 -07:00
2025-08-08 16:43:09 -07:00
2025-04-03 10:35:22 -07:00
2025-08-14 08:50:17 -07:00
2025-08-07 11:40:59 -07:00
2026-02-19 11:14:37 -08:00
2025-11-12 13:06:54 -08:00
2026-04-23 15:00:46 -07:00
2025-03-13 17:56:27 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:41:42 -07:00
2025-11-12 13:06:54 -08:00