Neil Perrin wrote:
> 
> Ricardo M. Correia wrote:
>> Ricardo M. Correia wrote:
>>> boolean_t need_lock = !RW_LOCK_HELD(&dp->dp_config_rwlock);
>>>
>>> if (need_lock)
>>>         rw_enter(&dp->dp_config_rwlock, RW_READER);
>>>
>> Maybe I posted to soon.
>> Am I right that this specific code (in dsl_dataset.c) would work 
>> correctly if RW_LOCK_HELD() returned true if *another* thread is holding 
>> the lock as a reader?
> 
> Yes this looks like a bug to me as well.

This is not a bug, it is the designed behavior.  To tell if this specific 
thread is holding the lock for reader would require a performance hit (eg, see 
rrwlock.c behavior when rr_writer_wanted is set).

--matt

Reply via email to