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.
ON_SHUTDOWN=suspend
SHUTDOWN_TIMEOUT=0
START_DELAY=0
+BYPASS_CACHE=0
test -f "$sysconfdir"/sysconfig/libvirt-guests &&
. "$sysconfdir"/sysconfig/libvirt-guests
fi
isfirst=true
+ bypass=
+ test "x$BYPASS_CACHE" = x0 || bypass=--bypass-cache
while read uri list; do
configured=false
set -f
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
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
# 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