From: Nigel Cunningham <nigel@nigel.suspend2.net>
To: paulmck@linux.vnet.ibm.com
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, tglx@linutronix.de,
dipankar@in.ibm.com, tytso@us.ibm.com, dvhltc@us.ibm.com,
oleg@tv-sign.ru, twoerner.k@gmail.com, josh@freedesktop.org,
billh@gnuppy.monkey.org, nielsen.esben@googlemail.com,
corbet@lwn.net
Subject: Re: [RFC PATCH -rt 2/2] RCU priority boosting additions to rcutorture
Date: Fri, 02 Feb 2007 09:13:46 +1100 [thread overview]
Message-ID: <1170368027.9187.39.camel@nigel.suspend2.net> (raw)
In-Reply-To: <20070201054616.GA9969@linux.vnet.ibm.com>
Hi.
On Wed, 2007-01-31 at 21:46 -0800, Paul E. McKenney wrote:
> On Thu, Feb 01, 2007 at 01:42:42PM +1100, Nigel Cunningham wrote:
> > Hi Paul.
> >
> > On Wed, 2007-01-31 at 18:31 -0800, Paul E. McKenney wrote:
> > > Good to hear from you, Nigel!
> >
> > Thanks :)
> >
> > > Should indeed be OK to freeze during suspend/hibernate. Will my
> > > schedule_timeout_interruptible() be sufficient to allow the freeze
> > > to happen, or do I need to add an explicit try_to_freeze()?
> >
> > You need a try_to_freeze() - the process has to enter the refrigerator()
> > function to be counted as frozen.
>
> Even though it explicitly sleeps each time through the loop? Hmmm...
Yes. Sleeping isn't enough - we have to be sure it won't wake up and
perform work at inappropriate times (we don't know what process X might
do if it did wake; the result could be an inconsistent image). It
therefore needs to enter the refrigerator function so that the freezer
code can ensure it remains inactive until the suspend-to-whatever cycle
is complete.
> > > Ah, and I probably need to use the same trick that mtd_blktrans_thread()
> > > does to avoid having all my sleeps killed of by an errant signal:
> > >
> > > spin_lock_irq(¤t->sighand->siglock);
> > > sigfillset(¤t->blocked);
> > > recalc_sigpending();
> > > spin_unlock_irq(¤t->sighand->siglock);
> > >
> > > Or is such paranoia unnecessary?
> >
> > Yeah. try_to_freeze() is a function now, so you can do something if
> > (try_to_freeze()) goto sleep_again if you so desire.
>
> If try_to_freeze() succeeds, do I need to clean up signal state?
> It didn't look like it to me, but thought I should ask the expert!
No, you don't need to. We have recalc_sigpending() in the refrigerator
function.
> My guess is that I can simply do:
>
> try_to_freeze();
> schedule_timeout_interruptible(HZ);
>
> The schedule_timeout_interruptible() might return early, but if I
> don't care about getting a shorter than expected sleep, I am OK,
> right? Besides, one would have to get a couple of very closely
> spaced freeze_processes() calls for this to happen. ;-)
Yes, that looks good to me.
Regards,
Nigel
next prev parent reply other threads:[~2007-02-01 22:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-01 1:21 [RFC PATCH -rt 0/2] RCU priority boosting that survives vicious testing Paul E. McKenney
2007-02-01 1:24 ` [RFC PATCH -rt 1/2] " Paul E. McKenney
2007-02-01 8:23 ` Ingo Molnar
2007-02-02 15:56 ` Paul E. McKenney
2007-02-01 1:26 ` [RFC PATCH -rt 2/2] RCU priority boosting additions to rcutorture Paul E. McKenney
2007-02-01 2:12 ` Nigel Cunningham
2007-02-01 2:31 ` Paul E. McKenney
2007-02-01 2:42 ` Nigel Cunningham
2007-02-01 5:46 ` Paul E. McKenney
2007-02-01 22:13 ` Nigel Cunningham [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-01-25 2:11 [RFC PATCH -rt 0/2] RCU priority boosting that survives semi-vicious testing Paul E. McKenney
2007-01-25 2:14 ` [RFC PATCH -rt 1/2] " Paul E. McKenney
2007-01-25 2:23 ` [RFC PATCH -rt 2/2] RCU priority boosting additions to rcutorture Paul E. McKenney
2007-01-25 8:47 ` Josh Triplett
2007-01-25 18:01 ` Paul E. McKenney
2007-01-25 19:06 ` Josh Triplett
2007-01-26 1:52 ` Paul E. McKenney
2007-01-26 6:29 ` Josh Triplett
2007-01-29 2:11 ` Paul E. McKenney
2007-01-29 6:05 ` Josh Triplett
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=1170368027.9187.39.camel@nigel.suspend2.net \
--to=nigel@nigel.suspend2.net \
--cc=billh@gnuppy.monkey.org \
--cc=corbet@lwn.net \
--cc=dipankar@in.ibm.com \
--cc=dvhltc@us.ibm.com \
--cc=josh@freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nielsen.esben@googlemail.com \
--cc=oleg@tv-sign.ru \
--cc=paulmck@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=twoerner.k@gmail.com \
--cc=tytso@us.ibm.com \
/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.