From: Zou Nan hai <nanhai.zou@intel.com>
To: Andrew Morton <akpm@osdl.org>
Cc: mingo@elte.hu, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Patch] jbd commit code deadloop when installing Linux
Date: 28 Jun 2006 15:14:42 +0800 [thread overview]
Message-ID: <1151478882.6052.50.camel@linux-znh> (raw)
In-Reply-To: <20060628014544.198b9eb4.akpm@osdl.org>
On Wed, 2006-06-28 at 16:45, Andrew Morton wrote:
> On 28 Jun 2006 14:50:29 +0800
> Zou Nan hai <nanhai.zou@intel.com> wrote:
>
> > On Wed, 2006-06-28 at 16:04, Andrew Morton wrote:
> > > On 28 Jun 2006 14:02:57 +0800
> > > Zou Nan hai <nanhai.zou@intel.com> wrote:
> > >
> > > > > > However I think cond_resched_lock and cond_resched_softirq also need fix
> > > > > > to make the semantic consistent.
> > > > > >
> > > > > > Please check the following patch.
> > > > > >
> > > > >
> > > > > Ah. I think the return value from these functions should mean "something
> > > > > disruptive happened", if you like.
> > > > >
> > > > > See, the callers of cond_resched_lock() aren't interested in whether
> > > > > cond_resched_lock() actually called schedule(). They want to know whether
> > > > > cond_resched_lock() dropped the lock. Because if the lock was dropped, the
> > > > > caller needs to take some special action, regardless of whether schedule()
> > > > > was finally called.
> > > > >
> > > > > So I think the patch I queued is OK, agree?
> > > >
> > > > I am afraid the code like cond_resched_lock check in
> > > > fs/jbd/checkpoint.c log_do_checkpoint may fall into endless retry in
> > > > some condition, will it?
> > >
> > > Oh crap, yes. If need_resched() and system_state==SYSTEM_BOOTING then
> > > cond_resched_lock() will drop the lock but won't schedule. So it'll return
> > > true but won't clear need_resched() and the caller will lock up.
> > >
> > > So if cond_resched_foo() ends up dropping the lock it _must_ call
> > > schedule() to clear need_resched().
> > >
> > > So, how about this (it needs some code comments!)
> > >
> > >
> >
> > The patch works for the install test env.
>
> Thanks.
>
> > However I still have some concern on cond_resched_lock(), on an UP
> > kernel it will return 1 if schedule happen, but actually it does not
> > drop any lock, that semantic seems to be different to SMP kernel.
>
> That's OK (I think - I don't have a good track record in this thread).
>
> If the kernel is non-preemptible and UP, we want to return true from
> cond_resched_foo() if we called schedule(). Because schedule() might allow
> a different thread into the kernel which might modify the locked data.
>
> And if the kernel is preemptible and UP, we want to return true from
> cond_resched_foo() if we dropped the lock, because that internally does a
> preempt_enable().
>
> And the patch (hopefully) satisfies those requirements. Does that all
> sound solid?
Ah yes, I think the logic is solid.
cond_sched_xxx will return 1 only if any thing disruptive really
happen, either dropping a lock or enabling preempt or bh or schedule.
The patch satisfied those requirements.
Thanks
Zou Nan hai
next prev parent reply other threads:[~2006-06-28 9:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-28 4:48 [Patch] jbd commit code deadloop when installing Linux Zou Nan hai
2006-06-28 6:40 ` Andrew Morton
2006-06-28 6:38 ` Ingo Molnar
2006-06-28 6:55 ` Andrew Morton
2006-06-28 5:46 ` Zou Nan hai
2006-06-28 7:39 ` Ingo Molnar
2006-06-28 7:40 ` Andrew Morton
2006-06-28 6:02 ` Zou Nan hai
2006-06-28 8:04 ` Andrew Morton
2006-06-28 6:50 ` Zou Nan hai
2006-06-28 8:45 ` Andrew Morton
2006-06-28 7:14 ` Zou Nan hai [this message]
2006-06-28 9:29 ` Ingo Molnar
2006-06-28 7:55 ` Ingo Molnar
2006-06-28 9:10 ` Arjan van de Ven
2006-06-28 7:32 ` Zou Nan hai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1151478882.6052.50.camel@linux-znh \
--to=nanhai.zou@intel.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.