On Tue, Sep 07, 2021 at 15:12:09 +0800, yuxiating(a)huawei.com wrote:
From: yuxiating <yuxiating(a)huawei.com>
DISCARD and WRITE_ZEROES features for machine type >= 4.0 is enabled by default
since 5c81161f8041("virtio-blk: add "discard" and "write-zeroes"
properties).
Virtio_blk kernel driver has a bug that causes memory corruption in
virtblk_setup_discard_write_zeroes();
af822aa68fbd ("block: virtio_blk: fix handling single range discard request")
has fix it.
However, some operating systems are not fixed and need to disabled on the
QEMU side.
I must say that I'm not persuaded that there's enough value in this
workaround. Similarly users could use virtio-scsi instead as a
workaround or fix their OS.
For me this reasoning will not be enough, but other on the list might
think otherwise.
Signed-off-by: yuxiating <yuxiating(a)huawei.com>
---
docs/formatdomain.rst | 3 +++
docs/schemas/domaincommon.rng | 8 ++++++++
src/conf/domain_conf.c | 8 ++++++++
src/conf/domain_conf.h | 1 +
src/conf/domain_validate.c | 6 ++++++
5 files changed, 26 insertions(+)
[...]
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6127513117..304015f42e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
[...]
@@ -23416,6 +23420,10 @@ virDomainDiskDefFormatDriver(virBuffer
*buf,
if (disk->queues)
virBufferAsprintf(&attrBuf, " queues='%u'",
disk->queues);
+ if (disk->discard_enable)
We tend to use explicit check:
if (disk->discard_enable != VIR_TRISTATE_BOOL_ABSENT)
+ virBufferAsprintf(&attrBuf, "
discard_enable='%s'",
+ virTristateSwitchTypeToString(disk->discard_enable));
+
virDomainVirtioOptionsFormat(&attrBuf, disk->virtio);
if (disk->src->metadataCacheMaxSize > 0) {
This definitely seems like a feature visible to the guest OS and thus
_must_ be covered by the ABI stability check to prevent regressions in
the ABI.
See 'virDomainDiskDefCheckABIStability'.