diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 9cee643121..45a6dea8a0 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3016,7 +3016,8 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
if (VIR_STRDUP(src->hosts->name, portal) < 0)
goto cleanup;
- if ((port = strchr(src->hosts->name, ':'))) {
+ if ((port = strrchr(src->hosts->name, ':')) &&
+ !strchr(port, ']')) {
if (virStringParsePort(port + 1, &src->hosts->port) < 0)
goto cleanup;
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 8a5ff078cf..806c5465ce 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -1578,6 +1578,26 @@ mymain(void)
"\n"
" \n"
"\n");
+ TEST_BACKING_PARSE("json:{\"file\":{\"driver\":\"iscsi\","
+ "\"transport\":\"tcp\","
+ "\"portal\":\"[2001::0]:1234\","
+ "\"target\":\"iqn.2016-12.com.virttest:emulated-iscsi-noauth.target\","
+ "\"lun\":6"
+ "}"
+ "}",
+ "\n"
+ " \n"
+ "\n");
+ TEST_BACKING_PARSE("json:{\"file\":{\"driver\":\"iscsi\","
+ "\"transport\":\"tcp\","
+ "\"portal\":\"[2001::0]\","
+ "\"target\":\"iqn.2016-12.com.virttest:emulated-iscsi-noauth.target\","
+ "\"lun\":6"
+ "}"
+ "}",
+ "\n"
+ " \n"
+ "\n");
TEST_BACKING_PARSE("json:{\"file\":{\"driver\":\"sheepdog\","
"\"vdi\":\"test\","
"\"server\":{ \"type\":\"inet\","