On Thu, Aug 31, 2017 at 10:04:42AM +0200, Peter Zijlstra wrote:
> On Wed, Aug 30, 2017 at 08:25:46PM +0900, Byungchul Park wrote:
> 
> > For example - I'm giving you the same example repeatedly:
> > 
> > context X                 context Y
> > ---------                 ---------
> >                           wait_for_completion(C)
> > acquire(A)
> > process_one_work()
> >    acquire(B)
> >    work->fn()
> >       complete(C)
> > 
> > Please check C->A and C->B.
> 
> Is there a caller of procesS_one_work() that holds a lock?

It's not important. Ok, check the following, instead:

context X                 context Y
---------                 ---------
                          wait_for_completion(C)
acquire(A)
release(A)
process_one_work()
   acquire(B)
   release(B)
   work->fn()
      complete(C)

We don't need to lose C->A and C->B dependencies unnecessarily.

Reply via email to