I started to look at ref counting to convince myself that the db_bu field in a 
cached dmu_impl_t object
 is guaranteed to point at a valid arc_buf_t.

I have seen a  "deadbeef" crash on a busy system when zfs_write() is 
pre-pagefaulting in 
the file's pages.

The page  fault handler eventually winds its way to dbuf_hold_impl, who manages 
to 
find a cached dmu_impl_t record.  This record however, points to a freed 
arc_buf_t 
via its b_data field. The field is not null, but it points to a freed object, 
hence the 
crash upon trying to lock the rwlock of the alleged arc_buf.

Ref counting  should prevent something like this, correct?
-- 
This message posted from opensolaris.org

Reply via email to