Re: [libvirt] [PATCH 06/14] qemu: Store prAlias and prPath in status XML

2018-02-12 Thread Peter Krempa
On Thu, Jan 18, 2018 at 17:04:38 +0100, Michal Privoznik wrote:
> Now that we generate pr-manger alias and socket path store them
> in status XML so that they are preserved across daemon restarts.
> 
> Signed-off-by: Michal Privoznik 
> ---
>  src/qemu/qemu_domain.c | 72 
> --
>  1 file changed, 70 insertions(+), 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index e8d2adf56..97996b053 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -2449,6 +2449,74 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt,
>  }
>  
>  
> +static int
> +qemuStorageSourcePrivateDataParsePR(xmlXPathContextPtr ctxt,
> +virStorageSourcePtr src)
> +{
> +qemuDomainStorageSourcePrivatePtr srcPriv;
> +
> +if (!src->pr ||
> +src->pr->enabled != VIR_TRISTATE_BOOL_YES)
> +return 0;

This logic should not be here. If there is the field parse it. If it's
not don't parse it.

> +
> +if (!src->privateData &&
> +!(src->privateData = qemuDomainStorageSourcePrivateNew()))
> +return -1;

Hmmm, we probably should make sure that this is always allocated in the
qemu driver as a separate patch preceeding this series.

> +
> +srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
> +
> +if (!(srcPriv->prAlias = virXPathString("string(./prAlias)", ctxt)))
> +return -1;
> +
> +return 0;
> +}
> +
> +
> +static int
> +qemuStorageSourcePrivateDataFormatPR(virStorageSourcePtr src,
> + virBufferPtr buf)
> +{
> +qemuDomainStorageSourcePrivatePtr srcPriv;
> +
> +if (!src->pr ||
> +src->pr->enabled != VIR_TRISTATE_BOOL_YES)
> +return 0;

Same here, this logic should not be here. Presence of the alias should
be the key.

> +
> +srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
> +
> +virBufferAsprintf(buf, "%s\n", srcPriv->prAlias);
> +return 0;
> +}



signature.asc
Description: PGP signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH 06/14] qemu: Store prAlias and prPath in status XML

2018-01-18 Thread Michal Privoznik
Now that we generate pr-manger alias and socket path store them
in status XML so that they are preserved across daemon restarts.

Signed-off-by: Michal Privoznik 
---
 src/qemu/qemu_domain.c | 72 --
 1 file changed, 70 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e8d2adf56..97996b053 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2449,6 +2449,74 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt,
 }
 
 
+static int
+qemuStorageSourcePrivateDataParsePR(xmlXPathContextPtr ctxt,
+virStorageSourcePtr src)
+{
+qemuDomainStorageSourcePrivatePtr srcPriv;
+
+if (!src->pr ||
+src->pr->enabled != VIR_TRISTATE_BOOL_YES)
+return 0;
+
+if (!src->privateData &&
+!(src->privateData = qemuDomainStorageSourcePrivateNew()))
+return -1;
+
+srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
+
+if (!(srcPriv->prAlias = virXPathString("string(./prAlias)", ctxt)))
+return -1;
+
+return 0;
+}
+
+
+static int
+qemuStorageSourcePrivateDataFormatPR(virStorageSourcePtr src,
+ virBufferPtr buf)
+{
+qemuDomainStorageSourcePrivatePtr srcPriv;
+
+if (!src->pr ||
+src->pr->enabled != VIR_TRISTATE_BOOL_YES)
+return 0;
+
+srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
+
+virBufferAsprintf(buf, "%s\n", srcPriv->prAlias);
+return 0;
+}
+
+
+static int
+qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
+  virStorageSourcePtr src)
+{
+if (virStorageSourcePrivateDataParseRelPath(ctxt, src) < 0)
+return -1;
+
+if (qemuStorageSourcePrivateDataParsePR(ctxt, src) < 0)
+return -1;
+
+return 0;
+}
+
+
+static int
+qemuStorageSourcePrivateDataFormat(virStorageSourcePtr src,
+   virBufferPtr buf)
+{
+if (virStorageSourcePrivateDataFormatRelPath(src, buf) < 0)
+return -1;
+
+if (qemuStorageSourcePrivateDataFormatPR(src, buf) < 0)
+return -1;
+
+return 0;
+}
+
+
 virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks = {
 .alloc = qemuDomainObjPrivateAlloc,
 .free = qemuDomainObjPrivateFree,
@@ -2457,8 +2525,8 @@ virDomainXMLPrivateDataCallbacks 
virQEMUDriverPrivateDataCallbacks = {
 .chrSourceNew = qemuDomainChrSourcePrivateNew,
 .parse = qemuDomainObjPrivateXMLParse,
 .format = qemuDomainObjPrivateXMLFormat,
-.storageParse = virStorageSourcePrivateDataParseRelPath,
-.storageFormat = virStorageSourcePrivateDataFormatRelPath,
+.storageParse = qemuStorageSourcePrivateDataParse,
+.storageFormat = qemuStorageSourcePrivateDataFormat,
 };
 
 
-- 
2.13.6

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list