All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@tv-sign.ru>
To: Gautham R Shenoy <ego@in.ibm.com>
Cc: akpm@linux-foundation.org, "Rafael J. Wysocki" <rjw@sisk.pl>,
	linux-kernel@vger.kernel.org, mingo@elte.hu, vatsa@in.ibm.com,
	paulmck@us.ibm.com, pavel@ucw.cz
Subject: Re: [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race
Date: Mon, 23 Apr 2007 21:49:34 +0400	[thread overview]
Message-ID: <20070423174934.GA229@tv-sign.ru> (raw)
In-Reply-To: <20070423102618.GA25144@in.ibm.com>

On 04/23, Gautham R Shenoy wrote:
>
> On Fri, Apr 20, 2007 at 10:02:08PM +0400, Oleg Nesterov wrote:
> > 
> > Gautham, isn't it possible to make a more simpler patch ? Just add PF_NOFREEZE
> > check to frozen_process,
> > 
> > 	static inline void frozen_process(struct task_struct *p)
> > 	{
> > 		if (!unlikely(current->flags & PF_NOFREEZE)) {
> > 			p->flags |= PF_FROZEN;
> > 			wmb();
> > 		}
> > 		clear_tsk_thread_flag(p, TIF_FREEZE);
> > 	}
> > 
> 
> Btw, since frozen_process is currently being called only from
> refrigerator, I am wondering if we still need the struct task_struct *p
> parameter there. It's very unlikely that some other task would mark a
> particular task as frozen. No?

I agree. Only "current" can set PF_FROZEN anyway. I also think it is better
to move this function into kernel/power/process.c, no need to export it in
freezer.h. It is special, should be called from refrigerator() with task_lock()
held.

> Anyways, Andrew, Could you please replace the earlier sent patch titled
> "fix_pf_nofreeze_and_freezeable_race.patch" with the following one?
>
> ...
>
> --- linux-2.6.21-rc6.orig/include/linux/freezer.h
> +++ linux-2.6.21-rc6/include/linux/freezer.h
> @@ -57,8 +57,10 @@ static inline int thaw_process(struct ta
>   */
>  static inline void frozen_process(struct task_struct *p)
>  {
> -	p->flags |= PF_FROZEN;
> -	wmb();
> +	if (!unlikely(p->flags & PF_NOFREEZE)) {
> +		p->flags |= PF_FROZEN;
> +		wmb();
> +	}
>  	clear_tsk_thread_flag(p, TIF_FREEZE);
>  }

On the second thought, this patch doesn't help if the thread never
calls try_to_freeze() exactly because it marks itself PF_NOFREEZE.

Perhaps it is better to cancel freezing in soon-to-be-introduced
freezer_exempt().

In any case I agree, this one is better than current
	fix_pf_nofreeze_and_freezeable_race.patch

Oleg.


  reply	other threads:[~2007-04-23 17:49 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-19 12:01 [RFC 0/2] Fix Freezer related races Gautham R Shenoy
2007-04-19 12:02 ` [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race Gautham R Shenoy
2007-04-19 21:39   ` Rafael J. Wysocki
2007-04-20 18:02     ` Oleg Nesterov
2007-04-23 10:26       ` Gautham R Shenoy
2007-04-23 17:49         ` Oleg Nesterov [this message]
     [not found]         ` <200704260044.03975.rjw@sisk.pl>
     [not found]           ` <20070425231638.GH15134@in.ibm.com>
     [not found]             ` <20070425163409.4f8476c4.akpm@linux-foundation.org>
     [not found]               ` <20070426060608.GA12892@in.ibm.com>
     [not found]                 ` <20070425231232.302a83f0.akpm@linux-foundation.org>
2007-04-26 13:11                   ` [PATCH -mm] Move frozen_process() to kernel/power/process.c Gautham R Shenoy
2007-04-26 12:36                     ` Oleg Nesterov
2007-04-26 13:40                       ` Gautham R Shenoy
2007-04-19 12:04 ` [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop race Gautham R Shenoy
2007-04-19 21:31   ` Andrew Morton
2007-04-20  8:54     ` Rafael J. Wysocki
2007-04-20 11:05       ` Gautham R Shenoy
2007-04-20 11:59         ` Rafael J. Wysocki
2007-04-20 12:26           ` Gautham R Shenoy
2007-04-20 12:50             ` Rafael J. Wysocki
2007-04-20 17:30             ` Andrew Morton
2007-04-20 18:31               ` Ingo Molnar
2007-04-20 21:13                 ` Rafael J. Wysocki
2007-04-22 19:28                 ` [RFC][PATCH -mm 0/3] Separate freezer flags Rafael J. Wysocki
2007-04-22 19:33                   ` [RFC][PATCH -mm 1/3] Separate freezer from PM code Rafael J. Wysocki
2007-04-23 10:41                     ` Pavel Machek
2007-04-22 19:39                   ` [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags Rafael J. Wysocki
2007-04-22 21:14                     ` Paul Jackson
2007-04-22 22:14                       ` Rafael J. Wysocki
2007-04-22 22:31                         ` Paul Jackson
2007-04-23  3:18                           ` Satyam Sharma
2007-04-23  4:09                     ` Satyam Sharma
2007-04-23 14:19                       ` Gautham R Shenoy
2007-04-23 18:49                         ` Rafael J. Wysocki
2007-04-23 19:06                       ` Rafael J. Wysocki
2007-04-23 10:50                     ` Pavel Machek
2007-04-23 13:17                     ` Gautham R Shenoy
2007-04-23 19:57                       ` Rafael J. Wysocki
2007-04-23 22:23                     ` Oleg Nesterov
2007-04-23 22:40                       ` Rafael J. Wysocki
2007-04-23 22:41                         ` Gautham R Shenoy
2007-04-23 22:55                           ` Rafael J. Wysocki
2007-04-23 22:55                         ` Oleg Nesterov
2007-04-23 23:10                           ` Rafael J. Wysocki
2007-04-23 23:19                             ` Oleg Nesterov
2007-04-24 11:32                               ` Rafael J. Wysocki
2007-04-22 19:40                   ` [RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_stop Rafael J. Wysocki
2007-04-23 10:40                     ` Pavel Machek
2007-04-23 19:50                       ` Rafael J. Wysocki
2007-04-23 12:35                     ` Gautham R Shenoy
2007-04-23 19:03                       ` Oleg Nesterov
2007-04-23 20:05                         ` Rafael J. Wysocki
2007-04-23 19:55                       ` Rafael J. Wysocki
2007-04-23 20:46                         ` Oleg Nesterov
2007-04-23 21:16                           ` Gautham R Shenoy
2007-04-23 21:30                             ` Rafael J. Wysocki
2007-04-20 21:20         ` [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop race Oleg Nesterov
2007-04-20 21:45           ` Rafael J. Wysocki
2007-04-20 10:46     ` Gautham R Shenoy
2007-04-21  9:37       ` Pavel Machek
2007-04-20 21:12   ` Oleg Nesterov
2007-04-23 10:38     ` Gautham R Shenoy
2007-04-23 18:39       ` Oleg Nesterov
2007-04-23 20:34         ` 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=20070423174934.GA229@tv-sign.ru \
    --to=oleg@tv-sign.ru \
    --cc=akpm@linux-foundation.org \
    --cc=ego@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulmck@us.ibm.com \
    --cc=pavel@ucw.cz \
    --cc=rjw@sisk.pl \
    --cc=vatsa@in.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.