[libvirt] [PATCH 2/2] qemu: Escape commas for qemuBuildSCSIiSCSIHostdevDrvStr
jferlan at redhat.com
Tue Jun 26 12:52:04 UTC 2018
On 06/22/2018 09:06 AM, Anya Harter wrote:
>> Something is not quite right about seeing "example,foo.org" as a host
>> name. I don't see that as a valid host name regardless of comma
>> escaping. Do we escape commas in other "<host name=%s...>" string
>> fields? I don't see it being done for qemuBuildChrChardevStr (search on
>> TCP or "host.*name" in qemu_command.c)>
>> Now the one thing that perhaps *could* be escaped is the <source> name
>> attribute. Currently it's set to "iqn.1992-01.com.example", but the spec
>> defines a structure of that name field to have a field that is a "String
>> defined by the naming authority" (shorter version, see
>> So if the name is : 'iqn.1992-01.com.example:storage/2', then the
>> "storage/2" piece is the string defined by the naming authority. Not
>> that I know whether it would work, but that's where I suppose a comma
>> could go.
> If you could give me a string with a comma in it, I would be happy to
> put it into the test instead of in the host name field. However, if no
> one can think of a realistic case where comma escaping would be
> necessary, we can just remove the test altogether. I only put it in as a
> test that implementation was correct and that the commas were actually
> being escaped correctly.
Sorry for the delay - I stuck my head into the checkpoint/backup
quicksand and it's been "difficult" to remove it ;-)
So going back to your analysis from the previous series:
Now I see where/why you got here. The myopia I have is that host->name
shouldn't have a comma in it as it's an invalid address format.
So, rather than:
<host name='example,foo.org' port='3260'/>
if I instead use:
<source protocol='iscsi' name='iqn.1992-01.com.example:my,storage/1'>
then with a couple of adjustments to input:
- <controller type='scsi' index='0'/>
+ <controller type='scsi' index='0' model='virtio-scsi'/>
- <source protocol='iscsi' name='iqn.1992-01.com.example'>
- <host name='example,foo.org' port='3260'/>
+ <source protocol='iscsi' name='iqn.1992-01.com.example:my,storage/1'>
+ <host name='example.foo.org' port='3260'/>
--device lsi,id=scsi0,bus=pci.0,addr=0x3 \
+-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 \
--device scsi-generic,bus=scsi0.0,scsi-id=4,drive=drive-hostdev0,id=hostdev0 \
Then, I think we cover this oddball case.
I can make those changes for you before pushing as long as you
agree that's fine. In the long run, it's similar, it's just avoiding
the invalid hostname/uri string.
and yes, once this is pushed, that item comes off the wiki list.
More information about the libvir-list