[PATCH v2 08/22] hypervisor: support bypassing cache for managed save

Daniel P. Berrangé posted 22 patches 11 months ago
[PATCH v2 08/22] hypervisor: support bypassing cache for managed save
Posted by Daniel P. Berrangé 11 months ago
Bypassing cache can make save performance more predictable and avoids
trashing the OS cache with data that will not be read again.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 src/hypervisor/domain_driver.c | 7 +++++--
 src/hypervisor/domain_driver.h | 1 +
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c
index c510e1d2ae..d4cf09174b 100644
--- a/src/hypervisor/domain_driver.c
+++ b/src/hypervisor/domain_driver.c
@@ -730,12 +730,12 @@ virDomainDriverAutoShutdown(virDomainDriverAutoShutdownConfig *cfg)
     virDomainPtr *domains = NULL;
     g_autofree bool *transient = NULL;
 
-    VIR_DEBUG("Run autoshutdown uri=%s trySave=%s tryShutdown=%s poweroff=%s waitShutdownSecs=%u",
+    VIR_DEBUG("Run autoshutdown uri=%s trySave=%s tryShutdown=%s poweroff=%s waitShutdownSecs=%u saveBypassCache=%d",
               cfg->uri,
               virDomainDriverAutoShutdownScopeTypeToString(cfg->trySave),
               virDomainDriverAutoShutdownScopeTypeToString(cfg->tryShutdown),
               virDomainDriverAutoShutdownScopeTypeToString(cfg->poweroff),
-              cfg->waitShutdownSecs);
+              cfg->waitShutdownSecs, cfg->saveBypassCache);
 
     /*
      * Ideally guests will shutdown in a few seconds, but it would
@@ -801,6 +801,9 @@ virDomainDriverAutoShutdown(virDomainDriverAutoShutdownConfig *cfg)
                 if (state == VIR_DOMAIN_PAUSED)
                     flags[i] = VIR_DOMAIN_SAVE_PAUSED;
             }
+            if (cfg->saveBypassCache)
+                flags[i] |= VIR_DOMAIN_SAVE_BYPASS_CACHE;
+
             if (flags[i] & VIR_DOMAIN_SAVE_RUNNING)
                 virDomainSuspend(domains[i]);
         }
diff --git a/src/hypervisor/domain_driver.h b/src/hypervisor/domain_driver.h
index 6e535ca444..fae316ee2d 100644
--- a/src/hypervisor/domain_driver.h
+++ b/src/hypervisor/domain_driver.h
@@ -112,6 +112,7 @@ typedef struct _virDomainDriverAutoShutdownConfig {
                                     * before moving onto next action.
                                     * If 0 a default is used (currently 30 secs)
                                     */
+    bool saveBypassCache;
 } virDomainDriverAutoShutdownConfig;
 
 void virDomainDriverAutoShutdown(virDomainDriverAutoShutdownConfig *cfg);
-- 
2.48.1