Messages in this thread | | | Date | Wed, 22 Jul 2009 19:17:25 +0200 | Subject | Re: [tip:sched/core] sched: Pull up the might_sleep() check into cond_resched() | From | Frédéric Weisbecker <> |
| |
2009/7/20 Peter Zijlstra <a.p.zijlstra@chello.nl> > > On Mon, 2009-07-20 at 04:12 -0400, Frederic Weisbecker wrote: > > > Hm, I can read that in fs/dcache.c:512 > > > > /* dentry->d_lock was dropped in prune_one_dentry() */ > > cond_resched_lock(&dcache_lock); > > dentry->d_lock != dcache_lock > > > Isn't it a mususe of cond_resched_lock() ? > > In this case, dcache.c should be fixed. > > Both sites look good wrt locking. So there's something else fishy. >
(Resend in text/plain, sorry.)
Ah, I think I've got it. In case of !CONFIG_PREEMPT, the spinlocks of course don't play with preemption, making no change reflected in the preempt_count(). The assumption of preempt_count() = 1 is then false.
I prepare a patch. Thanks.
| |