The most important: there are two problems that I can't seem to cope with
right now. The third is to make hw state restoring possible [maybe using
chain_notifier for it [by Alan :)] but I don't remember if it suits me]
So the two problems are [look out scheduler and buffer gurus :)]
1) how to 'revalidate' buffers? They will be out of date, because we
modify page allocation while writing our image [what we have just
duplicated - including not droppable buffers]. And after resume they won't
match.
We could delete the image before restoring pages, but root is r/o and
anyway.. we have to think about possible nfs connections [their pages are
cached, aren't they?].
OR - write them out as they are and by resuming get them again. [Any
option is probably bad if we boot up _without_ resuming and writing our
root partition? the same with nfs. So we really should revalidate somehow]
2) On shrinking memory [to swap] I did call try_to_free_pages with gfp
mask __GFP_WAIT. And it slept [of course :)]. So other processes were
still running :(. [my mpeg player e.g.]. How to disable them? [It made an
endless loop of swapping out/in :I :)].
If I make them TASK_INTERRUPTIBLE then they may wake up because they were
already in another wait_queue. If I make them TASK_UNITERRUPTIBLE then by
resuming I should we all processes and if it doesn't check if it is
happened what it's been waiting for there may be definitely problems.
I was thinking of a shortcut in schedule() [if suspeinding is in progress
then don't run any other process than the suspending one] But it's _ugly_.
The other idea was that I don't wait for I/O in shrink_memory [so calling
ll_rw_block won't cause wait_on_page] but I call directly
run_task_queue(tq_disk). But this may be buggy later when eg. in ide.c
in waiting for disk to be ready that may sleep for about half a second.
[look at the note].
I'm working on 2.1.125, I haven't taken a look what has changed since
then. [I know of scheduling issues].
Seasons
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
"One who has time to complain has time to submit patches." <chinese proverb>
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/