summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2016-11-25 13:27:44 +0200
committerKevin Wolf <kwolf@redhat.com>2016-11-25 13:51:30 +0100
commit91203f08f0ca66f1a6aba1d0e5ef62ed98fb3234 (patch)
treeafdbd60239e7271febeb498127230426dc670330
parent2f2c8d6b371cfc6689affb0b7e463fa2160c9e5b (diff)
downloadqemu-91203f08f0ca66f1a6aba1d0e5ef62ed98fb3234.tar.gz
qcow2: Allow 'cache-clean-interval' in Linux only
The cache-clean-interval option of qcow2 only works on Linux. However we allow setting it in other systems regardless of whether it works or not. In those systems this option is not simply a no-op: it actually invalidates perfectly valid cache tables for no good reason without freeing their memory. This patch forbids using that option in non-Linux systems. Signed-off-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--block/qcow2.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/block/qcow2.c b/block/qcow2.c
index 7cfcd8412c..ed9e0f31d6 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -668,6 +668,14 @@ static int qcow2_update_options_prepare(BlockDriverState *bs,
r->cache_clean_interval =
qemu_opt_get_number(opts, QCOW2_OPT_CACHE_CLEAN_INTERVAL,
s->cache_clean_interval);
+#ifndef CONFIG_LINUX
+ if (r->cache_clean_interval != 0) {
+ error_setg(errp, QCOW2_OPT_CACHE_CLEAN_INTERVAL
+ " not supported on this host");
+ ret = -EINVAL;
+ goto fail;
+ }
+#endif
if (r->cache_clean_interval > UINT_MAX) {
error_setg(errp, "Cache clean interval too big");
ret = -EINVAL;