Re: [patch 1/9] Guest page hinting: unused / free pages.
From: Hubertus Franke <hidden>
Date: 2006-09-13 17:05:28
Also in:
lkml
Martin Schwidefsky wrote:
On Wed, 2006-09-13 at 10:45 -0400, Rik van Riel wrote:quoted
quoted
But another trouble you have not mentioned is what happens to pages with pending make-volatile that need to and/or have been made stable in the meantime. They too need to be removed from this pending list.At the time where you walk the set of pages (pagevec?) to make volatile, you can check whether the page flags are still right.A make volatile can be done anytime as long as the page is in page cache. Before a page can be made stable the caller needs to make sure that one of the conditions that prevent a make volatile becomes true. So a page in the pending make-volatile array does not have to be removed because a make stable has been done. It only has to be removed if it gets freed.quoted
A page that was set to be marked volatile with the hypervisor, but later turned stable again would have that indicated in its page flags, right?Several page flag bits and some other conditions like "has a mapping" and "reference count is map count + 1". Most of the checks that need to be done for make volatile are on page flags.
Interesting.. But don't we have to do some locking on the page to avoid race conditions? A page needs to be consistent between check through __page_discardable and committing to the hypervisor. We could raise the PG_state_change flag for that period.