Bug #15877
openzfs: Wait for txg sync if the last DRR_FREEOBJECTS might result in a hole
90%
Description
We ran into this: https://github.com/openzfs/zfs/pull/14358 (fix is the commit shown there).
If we receive a DRR_FREEOBJECTS as the first entry in an object range, this might end up producing a hole if the freed objects were the only existing objects in the block.
If the txg starts syncing before we've processed any following DRR_OBJECT records, this leads to a possible race where the backing arc_buf_t gets its psize set to 0 in the arc_write_ready() callback while still being referenced from a dirty record in the open txg.
To prevent this, we insert a txg_wait_synced call if the first record in the range was a DRR_FREEOBJECTS that actually resulted in one or more freed objects.
Testing done: With this patch, the system have not had panic for weeks.
Updated by Gordon Ross 24 days ago
- Category set to zfs - Zettabyte File System
- Assignee set to Toomas Soome
- Priority changed from Normal to High
Updated by Toomas Soome 15 days ago
- Subject changed from Race condition causes verify panic in range_tree_remove_impl to zfs: Wait for txg sync if the last DRR_FREEOBJECTS might result in a hole
Changed subject to match OpenZFS commit.
Updated by Toomas Soome 15 days ago
- Description updated (diff)
- % Done changed from 0 to 90