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