[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xenpaging: retry unpageable gfns
# HG changeset patch # User Olaf Hering <olaf@xxxxxxxxx> # Date 1321804961 -3600 # Node ID 8eba32b9598cdc60bdc4b446cbc8446078e37c04 # Parent a2b4ae2becdf71c8d75cc34fcd56558632f757b4 xenpaging: retry unpageable gfns Nomination of gfns can fail, but may succeed later. Thats the case for a guest that starts ballooned. v2: - print debug when clearing uncosumed happens Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> Committed-by: Ian Jackson <ian.jackson.citrix.com> --- diff -r a2b4ae2becdf -r 8eba32b9598c tools/xenpaging/policy_default.c --- a/tools/xenpaging/policy_default.c Sun Nov 20 17:02:40 2011 +0100 +++ b/tools/xenpaging/policy_default.c Sun Nov 20 17:02:41 2011 +0100 @@ -32,6 +32,7 @@ static unsigned int mru_size; static unsigned long *bitmap; static unsigned long *unconsumed; +static unsigned int unconsumed_cleared; static unsigned long current_gfn; static unsigned long max_pages; @@ -87,8 +88,21 @@ current_gfn++; if ( current_gfn >= max_pages ) current_gfn = 0; + /* Could not nominate any gfn */ if ( wrap == current_gfn ) { + /* Count wrap arounds */ + unconsumed_cleared++; + /* Force retry every few seconds (depends on poll() timeout) */ + if ( unconsumed_cleared > 123) + { + /* Force retry of unconsumed gfns */ + bitmap_clear(unconsumed, max_pages); + unconsumed_cleared = 0; + DPRINTF("clearing unconsumed, wrap %lx", wrap); + /* One more round before returning ENOSPC */ + continue; + } victim->gfn = INVALID_MFN; return -ENOSPC; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |