Please sign in to comment.
OpenZFS 9577 - remove zfs_dbuf_evict_key tsd
The zfs_dbuf_evict_key TSD (thread-specific data) is not necessary - we can instead pass a flag down in a few places to prevent recursive dbuf eviction. Making this change has 3 benefits: 1. The code semantics are easier to understand. 2. On Linux, performance is improved, because creating/removing TSD values (by setting to NULL vs non-NULL) is expensive, and we do it very often. 3. According to Nexenta, the current semantics can cause a deadlock when concurrently calling dmu_objset_evict_dbufs() (which is rare today, but they are working on a "parallel unmount" change that triggers this more easily): Porting Notes: * Minor conflict with OpenZFS 9337 which has not yet been ported. Authored by: Matthew Ahrens <email@example.com> Reviewed by: George Wilson <firstname.lastname@example.org> Reviewed by: Serapheim Dimitropoulos <email@example.com> Reviewed by: Brad Lewis <firstname.lastname@example.org> Reviewed-by: George Melikov <email@example.com> Ported-by: Brian Behlendorf <firstname.lastname@example.org> OpenZFS-issue: https://illumos.org/issues/9577 OpenZFS-commit: openzfs/openzfs#645 External-issue: DLPX-58547 Closes #7602
- Loading branch information...
Showing with 46 additions and 55 deletions.