Project

General

Profile

Bug #7087

assertion failed on dnode_sync_free(): avl_is_empty(dn_dbufs)

Added by Matthew Ahrens over 3 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Category:
zfs - Zettabyte File System
Start date:
2016-06-08
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

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

Related to illumos gate - Bug #5597: assertion failed: avl_is_empty(&dn->dn_dbufs), file: ../../common/fs/zfs/dnode_sync.c, line: 488Closed2015-02-06

Actions
Related to illumos gate - Bug #6267: dn_bonus evicted too earlyClosed2015-09-29

Actions

History

#1

Updated by Andriy Gapon over 3 years ago

  • Related to Bug #5597: assertion failed: avl_is_empty(&dn->dn_dbufs), file: ../../common/fs/zfs/dnode_sync.c, line: 488 added
#2

Updated by Andriy Gapon over 3 years ago

5597 is probably a duplicate.

#3

Updated by Andriy Gapon over 3 years ago

  • Related to Bug #6267: dn_bonus evicted too early added
#4

Updated by Andriy Gapon over 1 year ago

I think that this bug can be closed now.

#5

Updated by Matthew Ahrens over 1 year ago

  • Status changed from New to Closed

Also available in: Atom PDF