Actions
Bug #7087
closedassertion failed on dnode_sync_free(): avl_is_empty(dn_dbufs)
Start date:
2016-06-08
Due date:
% Done:
0%
Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:
Description
When syncing the free of a bpobj that was part of a dead list (dnode_sync_free()), we find that it still has held dbufs. The bpobj is still open. It should be closed by dsl_dataset_evict(). The user evict func (dbu_evict_user = dsl_dataset_evict) was dispatched when dsl_destroy_head_sync() released the last hold on the dataset's bonus buffer. However, the task but not yet been executed by the taskq.
We can fix this by calling dmu_buf_user_evict_wait() after processing sync tasks.
Related issues
Updated by Andriy Gapon almost 6 years ago
- Related to Bug #5597: assertion failed: avl_is_empty(&dn->dn_dbufs), file: ../../common/fs/zfs/dnode_sync.c, line: 488 added
Updated by Andriy Gapon almost 6 years ago
- Related to Bug #6267: dn_bonus evicted too early added
Updated by Andriy Gapon almost 4 years ago
I think that this bug can be closed now.
Actions