Re: Fix SWSUSP & !SWAP

Pavel Machek
2003-04-24T09:17:12Z

Hi!

> > Regarding #2, my algorithm (ie not the version in 2.5 at the mo)
> > separates pages to be saved into 2 types. Pageset1 are pages we expect
> > to be needed during suspend. Pageset2 is those that will definitely not
> > be needed. My algorithm for saving the data goes: Save pageset2 pages to
> > disk then (as per the original/current method) make a copy of pageset1
> > pages (using the pageset2 locations + extra allocated memory if needsbe)
> > and save the copy. Loading the image is the reverse process. Pageset 2
> > currently only consists of all highmem pages + active and inactive list
> > pages.
>
> Not sure that quite works ... don't you need PTE's to know what to swap
> out? Those can be in highmem. However, all user pages would fit in pageset
> 2, I think.
>
> > If we refined the algorithm, perhaps that would address your
> > issue. The other point here is that since we have to be able to make a
> > copy of pageset1 pages, and since I haven't inlined kmap/unmap in the
> > routine to copy pageset1 pages back on resume (Pavel will say whew to
> > that, I'm sure!), pageset1 has a miximum size of half normal memory. I
> > reckon refining the algoritm so that pageset1 can be [nearly] guaranteed
> > to always be smaller is the better area to focus on, and I'm perfectly
> > happy to try suggestions, particularly when they come in the form of a
> > code fragment that include a call to SetPagePageset2(struct page * page)
> > for the relevant targets :>
>
> The more I think about this, the more it seems so much simpler to just
> require a reserved swap area the size of your RAM to suspend into. Would
> make the code so much simpler ... forget the option bit I suggested earlier
> ;-)

Reserved area does not make anything any simpler... Remember, you want
to avoid having second set of poll-driven disk drivers just for
suspend-to-disk. Its quite hard to design with that in mind.
Pavel
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]