lkml.org 
[lkml]   [2011]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 06/16] freezer: make exiting tasks properly unfreezable
On 08/23, Tejun Heo wrote:
>
> Hello,
>
> On Tue, Aug 23, 2011 at 05:52:21PM +0200, Oleg Nesterov wrote:
> > > @@ -915,6 +913,12 @@ NORET_TYPE void do_exit(long code)
> > >
> > > ptrace_event(PTRACE_EVENT_EXIT, code);
> > >
> > > + /*
> > > + * With ptrace notification done, there's no point in freezing from
> > > + * here on. Disallow freezing.
> > > + */
> > > + current->flags |= PF_NOFREEZE;
> >
> > OK, but what PF_NOFREEZE actually means?
> >
> > Apart from "dont try to freeze" it means "no need to freeze", yes?
>
> Yes.
>
> > IOW, try_to_freeze_tasks() can succeed even if we have a lot of
> > exitinig task which can make some activity, say, disk i/o. Is this
> > correct?
>
> Hmmm... can it cause disk IOs after that point? I skimmed through and
> couldn't spot one

I am not sure. But, say, exit_files(). We can't know what f_op->flush()
f_op->release() can do in general. Even without i/o the exiting task can
do a lot of different things.

> (the original code made simliar assumption albeit a
> bit later).

Yes, and this looks "safer". I think exit_mm()->clear_freeze_flag() was
simply unneeded, but exit_state != 0 in freezable() looks understandable.
do_each_thread() (in general) can't see the threads with exit_state != 0
anyway, but we should skip zombies.


Let me repeat, I do not know what the callers of try_to_freeze_tasks()
actually need, probably this is fine.

Oleg.



\
 
 \ /
  Last update: 2011-08-24 16:19    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site