diff options
author | Justin T. Gibbs <[email protected]> | 2015-10-13 14:09:45 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-10-13 14:12:02 -0700 |
commit | bc4501f75a04ddf9c04cef8332d12b41c35863d5 (patch) | |
tree | 9d75f16d15f9331825e40bf55ae64158b1706d3d /include/sys/dbuf.h | |
parent | 33df62d052bad11a1ebb220810672fcfba2a8d86 (diff) |
Illumos 6267 - dn_bonus evicted too early
6267 dn_bonus evicted too early
Reviewed by: Richard Yao <[email protected]>
Reviewed by: Xin LI <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Approved by: Richard Lowe <[email protected]>
References:
https://www.illumos.org/issues/6267
https://github.com/illumos/illumos-gate/commit/d205810
Signed-off-by: Brian Behlendorf <[email protected]>
Ported-by: Ned Bass [email protected]
Issue #3865
Issue #3443
Diffstat (limited to 'include/sys/dbuf.h')
-rw-r--r-- | include/sys/dbuf.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/include/sys/dbuf.h b/include/sys/dbuf.h index 94d326d57..0d262e87b 100644 --- a/include/sys/dbuf.h +++ b/include/sys/dbuf.h @@ -230,9 +230,25 @@ typedef struct dmu_buf_impl { /* User callback information. */ dmu_buf_user_t *db_user; - uint8_t db_immediate_evict; + /* + * Evict user data as soon as the dirty and reference + * counts are equal. + */ + uint8_t db_user_immediate_evict; + + /* + * This block was freed while a read or write was + * active. + */ uint8_t db_freed_in_flight; + /* + * dnode_evict_dbufs() or dnode_evict_bonus() tried to + * evict this dbuf, but couldn't due to outstanding + * references. Evict once the refcount drops to 0. + */ + uint8_t db_pending_evict; + uint8_t db_dirtycnt; } dmu_buf_impl_t; |