]> xenbits.xensource.com Git - pvdrivers/win/xenbus.git/commitdiff
Move balloon failure conditions to Inflate/Deflate calls
authorOwen Smith <owen.smith@citrix.com>
Tue, 15 Dec 2015 11:30:19 +0000 (11:30 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 17 Dec 2015 09:22:42 +0000 (09:22 +0000)
Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xenbus/balloon.c

index e697722ef4493adb5b00ac2a9fd6da22b6dcac86..27968c88be4191ecea61c481b078bd0a81752a53 100644 (file)
@@ -571,6 +571,25 @@ done:
     return Count;
 }
 
+static BOOLEAN
+BalloonLowMemory(
+    IN  PXENBUS_BALLOON_CONTEXT Context
+    )
+{
+    LARGE_INTEGER               Timeout;
+    NTSTATUS                    status;
+
+    Timeout.QuadPart = 0;
+
+    status = KeWaitForSingleObject(Context->LowMemoryEvent,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   &Timeout);
+
+    return (status == STATUS_SUCCESS) ? TRUE : FALSE;
+}
+
 static BOOLEAN
 BalloonDeflate(
     IN  PXENBUS_BALLOON_CONTEXT Context,
@@ -583,6 +602,9 @@ BalloonDeflate(
     ULONGLONG                   Count;
     ULONGLONG                   TimeDelta;
 
+    if (Context->FIST.Deflation)
+        return TRUE;
+
     Info("====> %llu page(s)\n", Requested);
 
     KeQuerySystemTime(&Start);
@@ -627,6 +649,12 @@ BalloonInflate(
     ULONGLONG                   Count;
     ULONGLONG                   TimeDelta;
 
+    if (Context->FIST.Inflation)
+        return TRUE;
+
+    if (BalloonLowMemory(Context))
+        return TRUE;
+
     Info("====> %llu page(s)\n", Requested);
 
     KeQuerySystemTime(&Start);
@@ -673,25 +701,6 @@ BalloonInflate(
     return Abort;
 }
 
-static BOOLEAN
-BalloonLowMemory(
-    IN  PXENBUS_BALLOON_CONTEXT Context
-    )
-{
-    LARGE_INTEGER               Timeout;
-    NTSTATUS                    status;
-
-    Timeout.QuadPart = 0;
-
-    status = KeWaitForSingleObject(Context->LowMemoryEvent,
-                                   Executive,
-                                   KernelMode,
-                                   FALSE,
-                                   &Timeout);
-
-    return (status == STATUS_SUCCESS) ? TRUE : FALSE;
-}
-
 static VOID
 BalloonGetFISTEntries(
     IN  PXENBUS_BALLOON_CONTEXT Context
@@ -758,12 +767,9 @@ BalloonAdjust(
 
     while (Context->Size != Size && !Abort) {
         if (Size > Context->Size)
-            Abort = Context->FIST.Inflation ||
-                    BalloonLowMemory(Context) ||
-                    BalloonInflate(Context, Size - Context->Size);
+            Abort = BalloonInflate(Context, Size - Context->Size);
         else if (Size < Context->Size)
-            Abort = Context->FIST.Deflation ||
-                    BalloonDeflate(Context, Context->Size - Size);
+            Abort = BalloonDeflate(Context, Context->Size - Size);
     }
 
     Info("<==== (%llu page(s))%s\n",