On Wednesday, 2 of January 2008, Nigel Cunningham wrote:
> Hi.
>
> Pavel Machek wrote:
> > Hi!
> >
> >>>>>> So how do you handle threads that are blocked on I/O or a lock
> >>>>>> during the system freeze process, then?
> >>>>> We wait until they can continue.
> >>>> So if I have a process blocked on an unavilable NFS mount, I can't
> >>>> suspend?
> >>> That's correct, you can't.
> >>>
> >>> [And I know what you're going to say. ;-)]
> >> Why exactly does suspend/hibernation depend on "TASK_INTERRUPTIBLE"
> >> instead of a zero preempt_count()? Really what we should do is just
> >> iterate over all of the actual physical devices and tell each one
> >> "Block new IO requests preemptably, finish pending DMA, put the
> >> hardware in low-power mode, and prepare for suspend/hibernate". As
> >> long as each driver knows how to do those simple things we can have
> >> an entirely consistent kernel image for both suspend and for
> >> hibernation.
> >
> > "each driver" means this is a lot of work. But yes, that is probably
> > way to go, and patch would be welcome.
>
> Yes, that does work. It's what I've done in my (preliminary) support for
> fuse.
Hmm, can you please elaborate a bit?
Rafael