Reviewed by: Paul Dagnelie <[email protected]>
Reviewed by: Pavel Zakharov <[email protected]>
Reviewed by: George Wilson <[email protected]>

The problem is that when dsl_bookmark_destroy_check() is
executed from open context (the pre-check), it fills in
dbda_success based on the existence of the bookmark. But
the bookmark (or containing filesystem as in this case)
can be destroyed before we get to syncing context. When
we re-run dsl_bookmark_destroy_check() in syncing context,
it will not add the deleted bookmark to dbda_success,
intending for dsl_bookmark_destroy_sync() to not process
it. But because the bookmark is still in dbda_success from
the open-context call, we do try to destroy it.

The fix is that dsl_bookmark_destroy_check() should not
modify dbda_success when called from open context.
You can view, comment on, or merge this pull request online at:

  https://github.com/openzfs/openzfs/pull/399

-- Commit Summary --

  * 8377 Panic in bookmark deletion

-- File Changes --

    M usr/src/uts/common/fs/zfs/dsl_bookmark.c (8)

-- Patch Links --

https://github.com/openzfs/openzfs/pull/399.patch
https://github.com/openzfs/openzfs/pull/399.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/399

------------------------------------------
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/Ta7d098dd5cc059e1-M3623413c57a952f344fb86cc
Powered by Topicbox: https://topicbox.com

Reply via email to