On Thu, Jun 28, 2012 at 05:26:21PM +1000, NeilBrown wrote: > On Mon, 25 Jun 2012 15:24:48 +0800 Shaohua Li <shli@xxxxxxxxxx> wrote: > > > It's possible several tasks are waiting for stripe overlap. We clear R5_Overlap > > bit and wake_up, but wake_up just wakes one task. So if there are several tasks > > in the wait queue, some tasks will not be woken up even its strip R5_Overlap > > clear. The end result is tasks hang in make_request. > > > > wake_up_all should not introduce performance issue here, since overlap case is > > rare. > > This is not necessary. > wake_up_all is only different from wake_up if WQ_FLAG_EXCLUSIVE it set, e.g. > by prepare_to_wait_exclusive. > As we don't use an exclusive wait to wait on wait_for_overlap, there is no > point in using wake_up_all, wake_up already wakes everything up. Oh, this is silly, sorry about it. So the only problem I hit the hang is that I fixed in the second patch. Other patches can still applied without this one. Thanks, Shaohua -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html