Re: [PATCH RFC v7 00/23] DEPT(Dependency Tracker)

From: Matthew Wilcox
Date: Thu Jan 19 2023 - 08:34:43 EST


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.