mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Oleg Nesterov <oleg@tv-sign.ru>
Cc: ego@in.ibm.com, akpm@osdl.org, paulmck@us.ibm.com, mingo@elte.hu,
	vatsa@in.ibm.com, dipankar@in.ibm.com,
	venkatesh.pallipadi@intel.com, linux-kernel@vger.kernel.org,
	Pavel Machek <pavel@ucw.cz>
Subject: Re: freezer problems
Date: Sun, 18 Feb 2007 16:14:36 +0100	[thread overview]
Message-ID: <200702181614.38315.rjw@sisk.pl> (raw)
In-Reply-To: <20070218145246.GA80@tv-sign.ru>

On Sunday, 18 February 2007 15:52, Oleg Nesterov wrote:
> On 02/18, Rafael J. Wysocki wrote:
> >
> > On Sunday, 18 February 2007 12:31, Oleg Nesterov wrote:
> > > > > 
> > > > > However, this means that sys_vfork() makes impossible to freeze processes
> > > > > until child exits/execs. Not good.
> > > > 
> > > I forgot to say that we have another problem: coredumping.
> > > 
> > > A thread which does do_coredump() send SIGKILL to ->mm users, and sleeps
> > > on ->mm->core_startup_done. Now it can't be frozen if sub-thread goes to
> > > refrigerator. I think this could be solved easily if we add a check to
> > > refrigerator() as you suggested for ->vfork_donw.
> > > 
> > > > I think the real solution would be to use an interruptible completion in the
> > > > vfork code.  It was discussed some time ago and, IIRC, Ingo had an experimental
> > > > patch that implemented it.  Still, for the suspend this really is not an issue
> > > > in practice, so it wasn't merged.
> > > 
> > > It is not (afaics) so trivial to do rightly, and with this change the parent
> > > will be seen as TASK_INTERRUPTIBLE even without freezer in progress.
> > > 
> > > A very vague idea: what if parent will do
> > > 
> > > 	current->flags |= PF_PLEASE_CONSIDER_ME_AS_FROZEN_BUT_SET_TIF_FREEZE
> > > 	wait_for_completion(&vfork);
> > > 	try_to_freeze();
> > > 
> > > ?
> > 
> > This should work,
> 
> Good. So try_to_freeze_tasks() can forget about "if (!p->vfork_done)" check.
> This needs more thinking, of course. For example, thaw_process() should be
> carefull to clear TIF_FREEZE if we have the new flag set, but not PF_FROZEN.
> frozen() should be changed to return true if PF_NEW_FLAG && TIF_FREEZE, but
> it also called by refrigerator.
> 
> But IF we really can do this, it will be a general solution.
> 
> >                    but we'll need a separate process flag for it.  If that's
> > acceptable,
> 
> I can't judge. Changed the subject to have more attention from experts.
> 
> >              I'd call it PF_VFORK_PARENT
> 
> I'd suggest not to put "VFORK" into the name. Probably we will find other
> usage for this flag which in fact means: "I am sleeping TASK_UNINTERRUPTIBLE
> at the safe place to freeze, I promise to do try_to_freeze() when I have
> CPU".
> 
> And now another problem: exec. de_thread() sleeps in TASK_UNINTERRUPTIBLE
> waiting for all sub-threads to die, and we have the same "deadlock" if
> one of them is frozen. This is nasty. Probably we can change the ->state
> to TASK_INTERRUPTIBLE and add try_to_freeze(), or play with the new PF_
> flag, but I am not sure it is safe to freeze() the task which is deep
> in the exec() path.

Hm, I haven't been aware of this case.

Well, probably we can do something like in the patch that I've just sent: the
child that enters the refrigerator should know that the parent is
uninterruptible and will wait for it to exit.  Thus it can either mark the
parent as frozen or just exit the refrigerator without freezing itself.

Greetings,
Rafael

  reply	other threads:[~2007-02-18 15:19 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-14 14:40 [RFC PATCH(Experimental) 0/4] Freezer based Cpu-hotplug Gautham R Shenoy
2007-02-14 14:42 ` [RFC PATCH(Experimental) 1/4] freezer-cpu-hotplug core Gautham R Shenoy
2007-02-14 14:43   ` [RFC PATCH(Experimental) 2/4] Revert changes to workqueue.c Gautham R Shenoy
2007-02-14 14:43     ` [RFC PATCH(Experimental) 3/4] Revert changes to sched.c and slab.c Gautham R Shenoy
2007-02-14 14:44       ` [RFC PATCH(Experimental) 4/4] Rip out lock_cpu_hotplug from linux Gautham R Shenoy
2007-02-14 14:59     ` [RFC PATCH(Experimental) 2/4] Revert changes to workqueue.c Srivatsa Vaddagiri
2007-02-14 15:24     ` Srivatsa Vaddagiri
2007-02-14 20:23       ` Oleg Nesterov
2007-02-14 20:09     ` Oleg Nesterov
2007-02-16  5:26       ` Srivatsa Vaddagiri
2007-02-16 15:33         ` Oleg Nesterov
2007-02-16 16:47           ` Srivatsa Vaddagiri
2007-02-16 18:45             ` Oleg Nesterov
2007-02-16 23:59             ` Oleg Nesterov
2007-02-17  2:29               ` Srivatsa Vaddagiri
2007-02-17 21:59                 ` Oleg Nesterov
2007-02-20 15:12                   ` Srivatsa Vaddagiri
2007-02-20 20:09                     ` Oleg Nesterov
2007-02-21  6:29                       ` Srivatsa Vaddagiri
2007-02-21 14:30                         ` Oleg Nesterov
2007-02-21 14:37                           ` Gautham R Shenoy
2007-02-21 15:53                           ` Srivatsa Vaddagiri
2007-02-14 15:31   ` [RFC PATCH(Experimental) 1/4] freezer-cpu-hotplug core Srivatsa Vaddagiri
2007-02-14 19:47   ` Oleg Nesterov
2007-02-16  6:48     ` Srivatsa Vaddagiri
2007-02-16 15:47       ` Oleg Nesterov
2007-02-14 20:22   ` Oleg Nesterov
2007-02-16  7:16     ` Srivatsa Vaddagiri
2007-02-16  8:12       ` Srivatsa Vaddagiri
2007-02-16  9:29         ` Rafael J. Wysocki
2007-02-16  9:59           ` Srivatsa Vaddagiri
2007-02-16 11:06             ` Rafael J. Wysocki
2007-02-16 19:46         ` Oleg Nesterov
2007-02-17  2:31           ` Srivatsa Vaddagiri
2007-02-17  5:32         ` Gautham R Shenoy
2007-02-17 11:19           ` Gautham R Shenoy
2007-02-16 16:06       ` Oleg Nesterov
2007-02-14 21:43 ` [RFC PATCH(Experimental) 0/4] Freezer based Cpu-hotplug Rafael J. Wysocki
2007-02-15  6:34   ` Gautham R Shenoy
2007-02-15  8:09     ` Rafael J. Wysocki
2007-02-15 12:20       ` Gautham R Shenoy
2007-02-15 13:31         ` Rafael J. Wysocki
2007-02-15 14:25           ` Gautham R Shenoy
2007-02-17 11:24             ` Rafael J. Wysocki
2007-02-17 21:34               ` Oleg Nesterov
2007-02-17 22:24                 ` Rafael J. Wysocki
2007-02-17 23:42                   ` Oleg Nesterov
2007-02-17 23:47                     ` Oleg Nesterov
2007-02-18 10:43                       ` Rafael J. Wysocki
2007-02-18 11:31                         ` Oleg Nesterov
2007-02-18 12:14                           ` Rafael J. Wysocki
2007-02-18 14:52                             ` freezer problems Oleg Nesterov
2007-02-18 15:14                               ` Rafael J. Wysocki [this message]
2007-02-18 16:19                                 ` Oleg Nesterov
2007-02-18 18:14                                   ` Rafael J. Wysocki
2007-02-18 18:56                               ` Rafael J. Wysocki
2007-02-18 22:01                                 ` Oleg Nesterov
2007-02-18 23:19                                   ` Rafael J. Wysocki
2007-02-19 20:23                                     ` Oleg Nesterov
2007-02-19 21:21                                       ` Rafael J. Wysocki
2007-02-19 22:41                                         ` Oleg Nesterov
2007-02-19 23:35                                           ` Rafael J. Wysocki
2007-02-20  0:12                                             ` Oleg Nesterov
2007-02-20  0:32                                               ` Rafael J. Wysocki
2007-02-20  0:50                                                 ` Oleg Nesterov
2007-02-20 18:28                                                   ` Rafael J. Wysocki
2007-02-20 18:29                                                 ` Rafael J. Wysocki
2007-02-21 18:14                                                   ` Paul E. McKenney
2007-02-21 18:13                                                     ` Rafael J. Wysocki
2007-02-21 18:27                                                       ` Paul E. McKenney
2007-02-21 20:03                                                       ` Oleg Nesterov
2007-02-21 20:47                                                         ` Rafael J. Wysocki
2007-02-21 21:06                                                         ` Paul E. McKenney
2007-02-21 23:10                                                           ` Rafael J. Wysocki
2007-02-22 10:47                                                             ` Oleg Nesterov
2007-02-22 11:33                                                               ` Oleg Nesterov
2007-02-22 17:03                                                               ` Rafael J. Wysocki
2007-02-22 17:44                                                                 ` Oleg Nesterov
2007-02-22 21:56                                                                   ` Rafael J. Wysocki
2007-02-23 18:15                                                                     ` Oleg Nesterov
2007-02-23  3:02                                                                 ` Gautham R Shenoy
2007-02-18 15:09                             ` [RFC PATCH(Experimental) 0/4] Freezer based Cpu-hotplug Rafael J. Wysocki
2007-02-18 16:11                               ` Oleg Nesterov
2007-02-18 18:51                                 ` Rafael J. Wysocki
2007-02-18 10:32                     ` Rafael J. Wysocki
2007-02-18 11:32                       ` Oleg Nesterov
2007-02-18 12:12                         ` Rafael J. Wysocki
2007-02-18 15:06                           ` Oleg Nesterov
2007-02-18 12:56               ` Pavel Machek
2007-02-21 14:52               ` Gautham R Shenoy
2007-02-21 19:42                 ` Pavel Machek
     [not found] ` <200702231041.17136.rjw@sisk.pl>
     [not found]   ` <20070223100817.GA10973@in.ibm.com>
     [not found]     ` <200702231115.00718.rjw@sisk.pl>
     [not found]       ` <20070223104723.GB10973@in.ibm.com>
     [not found]         ` <20070223110201.GC10973@in.ibm.com>
2007-02-23 19:03           ` freezer problems Gautham R Shenoy

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=200702181614.38315.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=akpm@osdl.org \
    --cc=dipankar@in.ibm.com \
    --cc=ego@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@tv-sign.ru \
    --cc=paulmck@us.ibm.com \
    --cc=pavel@ucw.cz \
    --cc=vatsa@in.ibm.com \
    --cc=venkatesh.pallipadi@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®