Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754852AbZAFTDV (ORCPT ); Tue, 6 Jan 2009 14:03:21 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752029AbZAFTDH (ORCPT ); Tue, 6 Jan 2009 14:03:07 -0500 Received: from hrndva-omtalb.mail.rr.com ([71.74.56.124]:49881 "EHLO hrndva-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751137AbZAFTDG (ORCPT ); Tue, 6 Jan 2009 14:03:06 -0500 X-Greylist: delayed 9293 seconds by postgrey-1.27 at vger.kernel.org; Tue, 06 Jan 2009 14:03:05 EST Date: Tue, 6 Jan 2009 14:03:02 -0500 (EST) From: Steven Rostedt X-X-Sender: rostedt@gandalf.stny.rr.com To: Linus Torvalds cc: Peter Zijlstra , Matthew Wilcox , Andi Kleen , Chris Mason , Andrew Morton , linux-kernel@vger.kernel.org, linux-fsdevel , linux-btrfs , Ingo Molnar , Thomas Gleixner , Gregory Haskins , Nick Piggin Subject: Re: [PATCH][RFC]: mutex: adaptive spin In-Reply-To: Message-ID: References: <1230722935.4680.5.camel@think.oraclecorp.com> <20081231104533.abfb1cf9.akpm@linux-foundation.org> <1230765549.7538.8.camel@think.oraclecorp.com> <87r63ljzox.fsf@basil.nowhere.org> <20090103191706.GA2002@parisc-linux.org> <1231093310.27690.5.camel@twins> <20090104184103.GE2002@parisc-linux.org> <1231242031.11687.97.camel@twins> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1085 Lines: 29 > > Btw, this also fixes a bug: your patch did > > + __set_task_state(task, state); > + /* didnt get the lock, go to sleep: */ > + schedule(); > > for the schedule case without holding the mutex spinlock. > > And that seems very buggy and racy indeed: since it doesn't hold the mutex > lock, if the old owner releases the mutex at just the right point (yeah, > yeah, it requires a scheduling event on another CPU in order to also miss > the whole "task_is_current()" logic), the wakeup can get lost, because you > set the state to sleeping perhaps _after_ the task just got woken up. So > we stay sleeping even though the mutex is clear. That is indeed a bug. Peter, why did you need to move __set_task_state down here? The -rt patch does not do this. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/