Displaying 1 result from an estimated 1 matches for "refcount_is_zero".
2007 Sep 18
3
newbie question about a dbuf-arc eviction race
...holds == 0,
b_efunc != NULL while its db_buf is put on the
eviction list ? From an ASSERT in dbuf_do_evict(),
it appears that it can. If it can, I am wondering what
is preventing the following race
dbuf_hold_impl()
db = dbuf_find(dn, level, blkid);
...
if (db->db_buf && refcount_is_zero(&db->db_holds)) {
arc_buf_add_ref(db->db_buf, db);
/*
* The above just returns as db_buf is on the
* eviction list. Now, suppose arc_do_user_evicts()
* selects this buf and calls dbuf_do_evict()....