On Wed, Aug 09, 2017 at 12:24:39PM +0200, Peter Zijlstra wrote: > On Wed, Aug 09, 2017 at 11:51:07AM +0200, Peter Zijlstra wrote: > > On Mon, Aug 07, 2017 at 04:12:56PM +0900, Byungchul Park wrote: > > > +static inline void wait_for_completion(struct completion *x) > > > +{ > > > + complete_acquire(x); > > > + __wait_for_completion(x); > > > + complete_release(x); > > > +} > > > + > > > +static inline void wait_for_completion_io(struct completion *x) > > > +{ > > > + complete_acquire(x); > > > + __wait_for_completion_io(x); > > > + complete_release(x); > > > +} > > > + > > > +static inline int wait_for_completion_interruptible(struct completion *x) > > > +{ > > > + int ret; > > > + complete_acquire(x); > > > + ret = __wait_for_completion_interruptible(x); > > > + complete_release(x); > > > + return ret; > > > +} > > > + > > > +static inline int wait_for_completion_killable(struct completion *x) > > > +{ > > > + int ret; > > > + complete_acquire(x); > > > + ret = __wait_for_completion_killable(x); > > > + complete_release(x); > > > + return ret; > > > +} > > > > I don't understand, why not change __wait_for_common() ? > > That is what is wrong with the below? > > Yes, it adds acquire/release to the timeout variants too, but I don't Yes, I didn't want to involve them in lockdep play which reports _deadlock_ warning since it's not a dependency causing a deadlock. > see why we should exclude those, and even if we'd want to do that, it > would be trivial: > > bool timo = (timeout == MAX_SCHEDULE_TIMEOUT); > > if (!timo) > complete_acquire(x); > > /* ... */ > > if (!timo) > complete_release(x); Yes, frankly I wanted to use this.. but skip it. > But like said, I think we very much want to annotate waits with timeouts > too. Hitting the max timo doesn't necessarily mean we'll make fwd > progress, we could be stuck in a loop doing something else again before > returning to wait. In that case, it should be detected by other dependencies which makes problems, not the dependency by wait_for_complete(). > Also, even if we'd make fwd progress, hitting that max timo is still not > desirable. It's not desirable but it's not a dependency causing a deadlock, so I did not want to _deadlock_ warning in that cases.. I didn't want to abuse lockdep reports.. However, it's OK if you think it's worth warning even in that cases. Thank you very much, Byungchul -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>