[libvirt] [PATCH 04/14] conf: Extract logic for updating 'detect_zeroes' mode
Ján Tomko
jtomko at redhat.com
Sat Mar 31 11:40:37 UTC 2018
On Thu, Mar 29, 2018 at 01:51:01PM +0200, Peter Krempa wrote:
>For some reason we've decided to silently translate the disk
>detect_zeroes mode if it would be invalid. Extract the
>logic so that it does not need to be copypasta'd across the code base.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/conf/domain_conf.c | 22 ++++++++++++++++++++++
> src/conf/domain_conf.h | 3 +++
> src/libvirt_private.syms | 1 +
> src/qemu/qemu_command.c | 15 ++-------------
> 4 files changed, 28 insertions(+), 13 deletions(-)
>
>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index ac3a3d9966..ef16431aaf 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -29362,3 +29362,25 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
> virStoragePoolDefFree(pooldef);
> return ret;
> }
>+
>+
>+/**
>+ * virDomainDiskGetDetectZeroesMode:
>+ * @discard: disk/image sector discard setting
>+ * @detect_zeroes: disk/image zero sector detection mode
>+ *
>+ * As a convenience syntax, if discards are ignored and zero detection is set
>+ * to 'unmap', then simply behave like zero detection is set to 'on'. But
>+ * don't change it in the XML for easier adjustments. This behaviour is
>+ * documented.
Ah, that makes it okay.
>+ */
>+int
>+virDomainDiskGetDetectZeroesMode(virDomainDiskDiscard discard,
>+ virDomainDiskDetectZeroes detect_zeroes)
>+{
>+ if (discard != VIR_DOMAIN_DISK_DISCARD_UNMAP &&
>+ detect_zeroes == VIR_DOMAIN_DISK_DETECT_ZEROES_UNMAP)
>+ return VIR_DOMAIN_DISK_DETECT_ZEROES_ON;
>+
>+ return detect_zeroes;
>+}
>diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>index 89fd08b642..6a13714eae 100644
>--- a/src/qemu/qemu_command.c
>+++ b/src/qemu/qemu_command.c
>@@ -1729,6 +1729,8 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
> virQEMUCapsPtr qemuCaps)
> {
> virBuffer opt = VIR_BUFFER_INITIALIZER;
>+ int detect_zeroes = virDomainDiskGetDetectZeroesMode(disk->discard,
>+ disk->detect_zeroes);
>
> if (qemuBuildDriveSourceStr(disk, qemuCaps, &opt) < 0)
> goto error;
>@@ -1809,19 +1811,6 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
> }
>
> if (disk->detect_zeroes) {
If you created an "accessor" for it, it should be used in the above
condition as well.
ACK
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180331/62b4e5fe/attachment-0001.sig>
More information about the libvir-list
mailing list