Print this page
3752 want more verifiable dbuf user eviction
Submitted by: Justin Gibbs <justing@spectralogic.com>
Submitted by: Will Andrews <willa@spectralogic.com>
*** 125,134 ****
--- 125,139 ----
*/
uint16_t l_hash[1];
} zap_leaf_phys_t;
+ typedef struct zap_leaf_dbuf {
+ uint8_t zldb_pad[offsetof(dmu_buf_t, db_data)];
+ zap_leaf_phys_t *zldb_data;
+ } zap_leaf_dbuf_t;
+
typedef union zap_leaf_chunk {
struct zap_leaf_entry {
uint8_t le_type; /* always ZAP_CHUNK_ENTRY */
uint8_t le_value_intlen; /* size of value's ints */
uint16_t le_next; /* next entry in hash chain */
*** 150,166 ****
uint16_t lf_next; /* next in free list, or CHAIN_END */
} l_free;
} zap_leaf_chunk_t;
typedef struct zap_leaf {
krwlock_t l_rwlock;
uint64_t l_blkid; /* 1<<ZAP_BLOCK_SHIFT byte block off */
int l_bs; /* block size shift */
! dmu_buf_t *l_dbuf;
! zap_leaf_phys_t *l_phys;
} zap_leaf_t;
typedef struct zap_entry_handle {
/* below is set by zap_leaf.c and is public to zap.c */
uint64_t zeh_num_integers;
uint64_t zeh_hash;
--- 155,176 ----
uint16_t lf_next; /* next in free list, or CHAIN_END */
} l_free;
} zap_leaf_chunk_t;
typedef struct zap_leaf {
+ dmu_buf_user_t db_evict;
krwlock_t l_rwlock;
uint64_t l_blkid; /* 1<<ZAP_BLOCK_SHIFT byte block off */
int l_bs; /* block size shift */
! union {
! dmu_buf_t *l_dmu_db;
! zap_leaf_dbuf_t *l_db;
! } zl_db_u;
} zap_leaf_t;
+ #define l_dbuf zl_db_u.l_dmu_db
+ #define l_phys zl_db_u.l_db->zldb_data
typedef struct zap_entry_handle {
/* below is set by zap_leaf.c and is public to zap.c */
uint64_t zeh_num_integers;
uint64_t zeh_hash;