Print this page
3752 want more verifiable dbuf user eviction
Submitted by:   Justin Gibbs <justing@spectralogic.com>
Submitted by:   Will Andrews <willa@spectralogic.com>

*** 519,529 **** zap_leaf(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) { char buf[16*1024]; int verbose = B_FALSE; int four = B_FALSE; ! zap_leaf_t l; zap_leaf_phys_t *zlp = (void *)buf; int i; if (mdb_getopts(argc, argv, 'v', MDB_OPT_SETBITS, TRUE, &verbose, --- 519,529 ---- zap_leaf(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) { char buf[16*1024]; int verbose = B_FALSE; int four = B_FALSE; ! zap_leaf_t l = { 0 }; zap_leaf_phys_t *zlp = (void *)buf; int i; if (mdb_getopts(argc, argv, 'v', MDB_OPT_SETBITS, TRUE, &verbose,
*** 1423,1434 **** typedef struct mdb_spa { uintptr_t spa_dsl_pool; uintptr_t spa_root_vdev; } mdb_spa_t; typedef struct mdb_dsl_dir { ! uintptr_t dd_phys; int64_t dd_space_towrite[TXG_SIZE]; } mdb_dsl_dir_t; typedef struct mdb_dsl_dir_phys { uint64_t dd_used_bytes; --- 1423,1443 ---- typedef struct mdb_spa { uintptr_t spa_dsl_pool; uintptr_t spa_root_vdev; } mdb_spa_t; + struct mdb_dsl_dir_phys; + typedef struct mdb_dsl_dir_dbuf { + uint8_t dddb_pad[offsetof(dmu_buf_t, db_data)]; + uintptr_t dddb_data; + } mdb_dsl_dir_dbuf_t; + typedef struct mdb_dsl_dir { ! union { ! dmu_buf_t *dd_dmu_db; ! mdb_dsl_dir_dbuf_t *dd_db; ! } dd_db_u; int64_t dd_space_towrite[TXG_SIZE]; } mdb_dsl_dir_t; typedef struct mdb_dsl_dir_phys { uint64_t dd_used_bytes;