diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index be70c22332..bbd3cd0a7d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1804,8 +1804,6 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, if (disk->cachemode) { virBufferAsprintf(&opt, ",cache=%s", qemuDiskCacheV2TypeToString(disk->cachemode)); - } else if (disk->src->shared && !disk->src->readonly) { - virBufferAddLit(&opt, ",cache=none"); } if (disk->copy_on_read) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 827df4a5cc..9d1c33b54a 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11891,11 +11891,22 @@ qemuDomainPrepareDiskSourceChain(virDomainDiskDefPtr disk, } +static void +qemuDomainPrepareDiskCachemode(virDomainDiskDefPtr disk) +{ + if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_DEFAULT && + disk->src->shared && !disk->src->readonly) + disk->cachemode = VIR_DOMAIN_DISK_CACHE_DISABLE; +} + + int qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk, qemuDomainObjPrivatePtr priv, virQEMUDriverConfigPtr cfg) { + qemuDomainPrepareDiskCachemode(disk); + if (qemuDomainPrepareDiskSourceTLS(disk->src, cfg) < 0) return -1; diff --git a/tests/qemuxml2startupxmloutdata/disk-drive-shared.xml b/tests/qemuxml2startupxmloutdata/disk-drive-shared.xml index f4d2871ae7..60b7eca788 100644 --- a/tests/qemuxml2startupxmloutdata/disk-drive-shared.xml +++ b/tests/qemuxml2startupxmloutdata/disk-drive-shared.xml @@ -15,7 +15,7 @@ /usr/bin/qemu-system-i686 - +