Re: [PATCH 06/16] freezer: make exiting tasks properly unfreezable

From: Oleg Nesterov
Date: Wed Aug 24 2011 - 10:17:45 EST


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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/