FreeBSD/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
/*
 * If you call dbuf_rele() you had better not be referencing the dnode handle
 * unless you have some other direct or indirect hold on the dnode. (An indirect
 * hold is a hold on one of the dnode's dbufs, including the bonus buffer.)
 * Without that, the dbuf_rele() could lead to a dnode_rele() followed by the
 * dnode's parent dbuf evicting its dnode handles.
 */
If you call dbuf_rele() you had better not be referencing the dnode handle
unless you have some other direct or indirect hold on the dnode. (An indirect
hold is a hold on one of the dnode's dbufs, including the bonus buffer.)
Without that, the dbuf_rele() could lead to a dnode_rele() followed by the
dnode's parent dbuf evicting its dnode handles.
If you call dbuf_rele () you had better not be referencing the dnode handle unless you have some other direct or indirect hold on the dnode . ( An indirect hold is a hold on one of the dnode ' s dbufs including the bonus buffer . ) Without that the dbuf_rele () could lead to a dnode_rele () followed by the dnode ' s parent dbuf evicting its dnode handles .
void
dbuf_rele(dmu_buf_impl_t *db, void *tag)
{
	mutex_enter(&db->db_mtx);
	dbuf_rele_and_unlock(db, tag);
}
void dbuf_rele ( dmu_buf_impl_t * db , void * tag ) { mutex_enter ( & db -> db_mtx ) ; dbuf_rele_and_unlock ( db , tag ) ; }
If you call dbuf_rele() you had better not be referencing the dnode handle
 unless you have some other direct or indirect hold on the dnode.
If you call dbuf_rele () you had better not be referencing the dnode handle unless you have some other direct or indirect hold on the dnode .