On Thu, Jan 19, 2023 at 03:23:08PM +0900, Byungchul Park wrote: > Boqun wrote: > > * Looks like the DEPT dependency graph doesn't handle the > > fair/unfair readers as lockdep current does. Which bring the > > next question. > > No. DEPT works better for unfair read. It works based on wait/event. So > read_lock() is considered a potential wait waiting on write_unlock() > while write_lock() is considered a potential wait waiting on either > write_unlock() or read_unlock(). DEPT is working perfect for it. > > For fair read (maybe you meant queued read lock), I think the case > should be handled in the same way as normal lock. I might get it wrong. > Please let me know if I miss something. >From the lockdep/DEPT point of view, the question is whether: read_lock(A) read_lock(A) can deadlock if a writer comes in between the two acquisitions and sleeps waiting on A to be released. A fair lock will block new readers when a writer is waiting, while an unfair lock will allow new readers even while a writer is waiting.