[linux-pm] Re: freeze_processes questions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 7 Apr 2005, Rafael J. Wysocki wrote:

> I am confused now.  AFAICS, we don't check anywhere if a process we
> are going to freeze holds any locks.

You're not supposed to check.  If the process is running in userspace then 
it can't be holding any locks, by definition.  If it's running in the 
kernel then it's supposed to do its own checking.  It won't call 
refrigerator() unless it knows that no locks are held.

>  If we have a task in
> TASK_INTERRUPTIBLE, we just send it a fake signal which causes it to go
> to the refrigerator().  Could you please tell me how we prevent such a task
> from holding any locks?  [It probably doesn't matter, at least practically,
> but ...? :-)]

You can't prevent it, and what you're doing is a mistake.

> > OTOH... we may want to move completely away from refrigerator. Its
> > quite a hack, and it device support is okay, we'll not really need it.
> 
> Still, it won't happen soon, I guess. :-)  As of today, we have the
> refrigerator and the processes in TASK_UNINTERRUPTIBLE are mishandled.
> I think we should do something about it, at least for now, until we drop
> the refrigerator altogether (if we are going to drop it).  That's why I
> started the discussion and sent the patch.

It's very simple.  Processes in TASK_UNINTERRUPTIBLE can't be put in the
refrigerator, so you have to wait until they can be put there.  If that
means waiting more than 10 seconds or so, you should just give up.  
Return an error and put a message in the log saying something like "Can't
suspend because process XXX is busy".

Alan Stern


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux