diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 5780180a94..5f661c956c 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -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; } diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index 7a0d4a8260..1dc7608cee 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -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"