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

util: storage: Parse 'lun' for iSCSI protocol from JSON as string or number

While the QEMU QAPI schema describes 'lun' as a number, the code dealing
with JSON strings does not strictly adhere to this schema and thus
formats the number back as a string. Use the new helper to retrieve both
possibilities.

Note that the formatting code is okay and qemu will accept it as an int.

Tweak also one of the test strings to verify that both formats work
with libvirt.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1540290
上级 d3da8013
......@@ -2976,10 +2976,9 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
const char *transport = virJSONValueObjectGetString(json, "transport");
const char *portal = virJSONValueObjectGetString(json, "portal");
const char *target = virJSONValueObjectGetString(json, "target");
const char *lun = virJSONValueObjectGetStringOrNumber(json, "lun");
const char *uri;
char *port;
unsigned int lun = 0;
char *fulltarget = NULL;
int ret = -1;
/* legacy URI based syntax passed via 'filename' option */
......@@ -2990,6 +2989,9 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
src->type = VIR_STORAGE_TYPE_NETWORK;
src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
if (!lun)
lun = "0";
if (VIR_ALLOC(src->hosts) < 0)
goto cleanup;
......@@ -3026,17 +3028,12 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
*port = '\0';
}
ignore_value(virJSONValueObjectGetNumberUint(json, "lun", &lun));
if (virAsprintf(&fulltarget, "%s/%u", target, lun) < 0)
if (virAsprintf(&src->path, "%s/%s", target, lun) < 0)
goto cleanup;
VIR_STEAL_PTR(src->path, fulltarget);
ret = 0;
cleanup:
VIR_FREE(fulltarget);
return ret;
}
......
......@@ -1572,7 +1572,7 @@ mymain(void)
"\"transport\":\"tcp\","
"\"portal\":\"test.org:1234\","
"\"target\":\"iqn.2016-12.com.virttest:emulated-iscsi-noauth.target\","
"\"lun\":6"
"\"lun\":\"6\""
"}"
"}",
"<source protocol='iscsi' name='iqn.2016-12.com.virttest:emulated-iscsi-noauth.target/6'>\n"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册