Re: Re: freeze_processes questions

Rafael J. Wysocki
2005-04-06T21:35:33Z

[-- Attachment #1: Type: text/plain, Size: 1544 bytes --]

Hi,

On Wednesday, 6 of April 2005 23:17, Pavel Machek wrote:
> Hi!
>
> > > > I don't think Rafael is suggesting ignoring them. He's suggesting what
> > > > I'm already doing:
> > > > - Signal so they enter the freezer if they leave the state;
> > > > - Don't count them when deciding whether freezing failed;
> > > > - Handle the case where they don't leave the state until post resume (I
> > > > let them enter the refrigerator, but have code in there to check whether
> > > > the freezer is still on).
> > > >
> > > > In this way, I handle kseriod and anything else uninterruptible without
> > > > any problems.
> > >
> > > What happens if a process owns a lock needed to suspend a device and it is
> > > waiting in TASK_UNINTERRUPTIBLE?
> >
> > Well, we're in trouble. :-)
> >
> > However, if any process that we have frozen owns such a lock, we're in trouble
> > too.
>
> No, we are not. Processes can't own any locks when they are in
> refrigerator... It is not ok to call refrigerator from any context
> where you own a lock.

I didn't mean a lock in general, but a lock that is needed to suspend a device.
If a process holding that lock is frozen, the _suspend() routine for the device
won't complete, because it won't be able to get the lock. IOW it will go to
sleep and we are single-threaded at that time ... Or am I missing anything?

Rafael

--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"