[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCHv2 15/16] save: support bypass-cache flag in libvirt-guests init script



libvirt-guests is a perfect use case for bypassing the file system
cache - lots of filesystem traffic done at system shutdown, where
caching is pointless, and startup, where reading large files only
once just gets in the way.  Make this a configurable option in the
init script, but defaulting to existing behavior.

* tools/libvirt-guests.sysconf (BYPASS_CACHE): New variable.
* tools/libvirt-guests.init.sh (start, suspend_guest): Use it.
---

merge 10 and 18 of v1, rename SAVE_DIRECT to BYPASS_CACHE

 tools/libvirt-guests.init.sh |   10 ++++++++--
 tools/libvirt-guests.sysconf |    5 +++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/tools/libvirt-guests.init.sh b/tools/libvirt-guests.init.sh
index 30f957a..367177e 100644
--- a/tools/libvirt-guests.init.sh
+++ b/tools/libvirt-guests.init.sh
@@ -43,6 +43,7 @@ ON_BOOT=start
 ON_SHUTDOWN=suspend
 SHUTDOWN_TIMEOUT=0
 START_DELAY=0
+BYPASS_CACHE=0

 test -f "$sysconfdir"/sysconfig/libvirt-guests &&
     . "$sysconfdir"/sysconfig/libvirt-guests
@@ -143,6 +144,8 @@ start() {
     fi

     isfirst=true
+    bypass=
+    test "x$BYPASS_CACHE" = x0 || bypass=--bypass-cache
     while read uri list; do
         configured=false
         set -f
@@ -172,7 +175,8 @@ start() {
                     else
                         sleep $START_DELAY
                     fi
-                    retval run_virsh "$uri" start "$name" >/dev/null && \
+                    retval run_virsh "$uri" start $bypass "$name" \
+                        >/dev/null && \
                     gettext "done"; echo
                 fi
             fi
@@ -190,8 +194,10 @@ suspend_guest()

     name=$(guest_name "$uri" "$guest")
     label=$(eval_gettext "Suspending \$name: ")
+    bypass=
+    test "x$BYPASS_CACHE" = x0 || bypass=--bypass-cache
     printf %s "$label"
-    run_virsh "$uri" managedsave "$guest" >/dev/null &
+    run_virsh "$uri" managedsave $bypass "$guest" >/dev/null &
     virsh_pid=$!
     while true; do
         sleep 1
diff --git a/tools/libvirt-guests.sysconf b/tools/libvirt-guests.sysconf
index 37b258e..9b8b64f 100644
--- a/tools/libvirt-guests.sysconf
+++ b/tools/libvirt-guests.sysconf
@@ -25,3 +25,8 @@

 # number of seconds we're willing to wait for a guest to shut down
 #SHUTDOWN_TIMEOUT=0
+
+# If non-zero, try to bypass the file system cache when saving and
+# restoring guests, even though this may give slower operation for
+# some file systems.
+#BYPASS_CACHE=0
-- 
1.7.4.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]