From 4a9cd4d8a4efd8f2e52483117b4009122393c6a6 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 19 Oct 2022 10:38:35 +0200 Subject: Xen 4.15.4-pre-patchset-1 Signed-off-by: Florian Schmaus --- ...l-move-freemem-s-credit-expired-loop-exit.patch | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 0025-xl-move-freemem-s-credit-expired-loop-exit.patch (limited to '0025-xl-move-freemem-s-credit-expired-loop-exit.patch') diff --git a/0025-xl-move-freemem-s-credit-expired-loop-exit.patch b/0025-xl-move-freemem-s-credit-expired-loop-exit.patch new file mode 100644 index 0000000..c3a1965 --- /dev/null +++ b/0025-xl-move-freemem-s-credit-expired-loop-exit.patch @@ -0,0 +1,55 @@ +From c37099426ea678c1d5b6c99ae5ad6834f4edd2e6 Mon Sep 17 00:00:00 2001 +From: Jan Beulich +Date: Wed, 27 Jul 2022 09:29:31 +0200 +Subject: [PATCH 25/67] xl: move freemem()'s "credit expired" loop exit + +Move the "credit expired" loop exit to the middle of the loop, +immediately after "return true". This way having reached the goal on the +last iteration would be reported as success to the caller, rather than +as "timed out". + +Signed-off-by: Jan Beulich +Reviewed-by: Anthony PERARD +master commit: d8f8cb8bdd02fad3b6986ae93511f750fa7f7e6a +master date: 2022-07-18 17:48:18 +0200 +--- + tools/xl/xl_vmcontrol.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c +index 5dee7730ca76..d1c6f8aae67a 100644 +--- a/tools/xl/xl_vmcontrol.c ++++ b/tools/xl/xl_vmcontrol.c +@@ -332,7 +332,7 @@ static bool freemem(uint32_t domid, libxl_domain_config *d_config) + if (rc < 0) + return false; + +- do { ++ for (;;) { + time_t start; + + rc = libxl_get_free_memory(ctx, &free_memkb); +@@ -342,6 +342,9 @@ static bool freemem(uint32_t domid, libxl_domain_config *d_config) + if (free_memkb >= need_memkb) + return true; + ++ if (credit <= 0) ++ return false; ++ + rc = libxl_set_memory_target(ctx, 0, free_memkb - need_memkb, 1, 0); + if (rc < 0) + return false; +@@ -354,9 +357,7 @@ static bool freemem(uint32_t domid, libxl_domain_config *d_config) + return false; + + credit -= difftime(time(NULL), start); +- } while (credit > 0); +- +- return false; ++ } + } + + static void reload_domain_config(uint32_t domid, +-- +2.37.3 + -- cgit v1.2.3-65-gdbad