提交 aadb34be 编写于 作者: P Peter Krempa

virStorageSourceParseBackingJSON: Move deflattening of json: URIs out of recursion

Originally virStorageSourceParseBackingJSON didn't recurse, but when
the 'raw' driver support was added we need to parse it's information
which contains nested 'file' object.

Since the deflattening helper recurses already there's no need to call
it again. Move it one level up to the entry point.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 4a6bc568
......@@ -3600,15 +3600,11 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
virJSONValuePtr json,
const char *jsonstr)
{
g_autoptr(virJSONValue) deflattened = NULL;
virJSONValuePtr file;
const char *drvname;
size_t i;
if (!(deflattened = virJSONValueObjectDeflatten(json)))
return -1;
if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) {
if (!(file = virJSONValueObjectGetObject(json, "file"))) {
virReportError(VIR_ERR_INVALID_ARG,
_("JSON backing volume definition '%s' lacks 'file' object"),
jsonstr);
......@@ -3639,11 +3635,15 @@ virStorageSourceParseBackingJSON(virStorageSourcePtr src,
const char *json)
{
g_autoptr(virJSONValue) root = NULL;
g_autoptr(virJSONValue) deflattened = NULL;
if (!(root = virJSONValueFromString(json)))
return -1;
return virStorageSourceParseBackingJSONInternal(src, root, json);
if (!(deflattened = virJSONValueObjectDeflatten(root)))
return -1;
return virStorageSourceParseBackingJSONInternal(src, deflattened, json);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册