[libvirt] [PATCH 8/9] util: storage: Always deflatten JSON pseudo-protocol objects

John Ferlan jferlan at redhat.com
Mon Jul 10 13:54:36 UTC 2017



On 06/27/2017 08:46 AM, Peter Krempa wrote:
> Now that the JSON deflattener is working sanely we can always attempt
> the deflattening so that we can then parse the tree as expected.
> ---
>  src/util/virstoragefile.c | 22 ++++++++++------------
>  1 file changed, 10 insertions(+), 12 deletions(-)
> 

I'm assuming you'll end up with an adjustment in this patch too since
patch 4 will have aligned the error properly... [1]


Reviewed-by: John Ferlan <jferlan at redhat.com>

John


> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index d24502fbf..f3dc860ae 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -3249,24 +3249,22 @@ static int
>  virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
>                                           virJSONValuePtr json)
>  {
> -    virJSONValuePtr fixedroot = NULL;
> +    virJSONValuePtr deflattened = NULL;
>      virJSONValuePtr file;
>      const char *drvname;
>      char *str = NULL;
>      size_t i;
>      int ret = -1;
> 
> -    if (!(file = virJSONValueObjectGetObject(json, "file"))) {
> -        if (!(fixedroot = virJSONValueObjectDeflatten(json)))
> -            goto cleanup;
> +    if (!(deflattened = virJSONValueObjectDeflatten(json)))
> +        goto cleanup;
> 
> -        if (!(file = virJSONValueObjectGetObject(fixedroot, "file"))) {
> -            str = virJSONValueToString(json, false);
> -            virReportError(VIR_ERR_INVALID_ARG,
> -                _("JSON backing volume defintion '%s' lacks 'file' object"),
> -                str);
> -            goto cleanup;
> -        }
> +    if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) {
> +        str = virJSONValueToString(json, false);
> +        virReportError(VIR_ERR_INVALID_ARG,
> +            _("JSON backing volume defintion '%s' lacks 'file' object"),
> +            str);

[1]

> +        goto cleanup;
>      }
> 
>      if (!(drvname = virJSONValueObjectGetString(file, "driver"))) {
> @@ -3290,7 +3288,7 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
> 
>   cleanup:
>      VIR_FREE(str);
> -    virJSONValueFree(fixedroot);
> +    virJSONValueFree(deflattened);
>      return ret;
>  }
> 




More information about the libvir-list mailing list