forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dnode_next_offset: add DNODE_FIND_DIRTY
When set, dnode_next_offset combines on-disk and in-memory dbuf state. When not set, dnode_next_offset exactly preserves current semantics. This is a step towards: 1. Implementing SEEK_HOLE/SEEK_DATA without txg sync. 2. Fixing a sync race in dnode_free_range. New L1 blocks can be synced and evicted from dn_dbufs before the L3->L2 BP is updated. Then a racing free will miss the L1 entirely: dnode_dirty_l1range relies on dn_dbufs and dnode_next_offset relies on the L3->L2 BP. When searching for in-memory state, dnode_next_offset searches for dirty parts of the block tree using db_dirtycnt > 0 on indirect blocks. See dnode.c for full description of operation. Signed-off-by: Robert Evans <[email protected]>
- Loading branch information
Showing
2 changed files
with
156 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters