Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a pool containing unprocessed deferred destroy operations. #1

Closed
wants to merge 1 commit into from

Conversation

dweeezil
Copy link
Contributor

The pool contains the "bptree_obj" entry in the MOS object directory.
It's DMU object contains a pair of bptree_entry_phys_t items, one for
each of a pair of destroyed small filesystems. Although ZoL 0.6.2 was
used to create the pool, it was modified to not process the deferred
destroy list in order to cleanly produce a pool in this state.

The pool contains the "bptree_obj" entry in the MOS object directory.
It's DMU object contains a pair of bptree_entry_phys_t items, one for
each of a pair of destroyed small filesystems.  Although ZoL 0.6.2 was
used to create the pool, it was modified to not process the deferred
destroy list in order to cleanly produce a pool in this state.
@dweeezil
Copy link
Contributor Author

When this pool is imported into a version of ZoL with the openzfs/zfs#2094 erratum, the following ASSERT is hit when importing the pool due to the odd-sized zbookmark_t:

[ 6505.839469] SPLError: 19585:0:(dsl_dir.c:858:dsl_dir_diduse_space()) ASSERTION(used >= 0 || dd->dd_phys->dd_used_bytes >= -used) failed
[ 6505.841228] SPLError: 19585:0:(dsl_dir.c:858:dsl_dir_diduse_space()) SPL PANIC
[ 6505.841245] SPLError: 19576:0:(avl.c:222:avl_nearest()) ASSERTION(tree->avl_root == NULL) failed
[ 6505.841246] SPLError: 19576:0:(avl.c:222:avl_nearest()) SPL PANIC

On a version of ZoL with the erratum, several problems are observed with zdb (on the exported pool):

  • For a plain zdb, an assert is hit unless zdb -L is used
  • Not only will a zdb -ddddd will not show all the blocks that should be freed, but at least one of them displays a bad checksum (verified by diffing zdb output).

@behlendorf
Copy link
Contributor

@dweeezil Thanks for constructing this pool. I haven't had a chance to investigate the ASSERTs yet but I plan too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants