Hi,

while testing the integration of QEMU with iSCSI, I was setting up an
environment with both target and initiator IQNs with colons. Then I
tried to connect to two different targets using two different initiator
IQN, like the following:

  $ qemu ... \
      -iscsi 
id=iqn.2015-11.com.bla:suffix1,initiator-name=iqn.2015-11.com.bla:suffix1-initiator
 \
      -iscsi 
id=iqn.2015-11.com.bla:suffix2,initiator-name=iqn.2015-11.com.bla:suffix2-initiator
 \
      -drive 
file=iscsi://server/iqn.2015-11.com.bla%3Asuffix1/0,format=raw,id=hd1,if=none \
      -drive 
file=iscsi://server/iqn.2015-11.com.bla%3Asuffix2/0,format=raw,id=hd2,if=none \
      ...

which didn't work at first:

  qemu-system-x86_64: -iscsi 
id=iqn.2015-11.com.bla:suffix1,initiator-name=iqn.2015-11.com.bla:suffix1-initiator:
 Parameter 'id' expects an identifier

which, according to id_wellformed in id.c, is true. Allowing colons in
id=... like in the following patch

diff --git a/util/id.c b/util/id.c
index bcc64d8..25fca9d 100644
--- a/util/id.c
+++ b/util/id.c
@@ -20,7 +20,7 @@ bool id_wellformed(const char *id)
         return false;
     }
     for (i = 1; id[i]; i++) {
-        if (!qemu_isalnum(id[i]) && !strchr("-._", id[i])) {
+        if (!qemu_isalnum(id[i]) && !strchr("-._:", id[i])) {
             return false;
         }
     }

allowed me to work run QEMU with the attached disks.

The question basically boils down to whether it is right to reject
colons in id:
- if so, then there should be a way to allow them only in id of -iscsi
  (since colons can be part of IQNs)
- if not, whether allowing them could cause regressions in option
  parsing

Thanks,
-- 
Pino Toscano

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to