[libvirt] [PATCH 08/13] qemu: add support for libiscsi
Osier Yang
jyang at redhat.com
Mon Mar 11 14:26:28 UTC 2013
On 2013年03月11日 21:22, Paolo Bonzini wrote:
> Il 11/03/2013 11:44, Osier Yang ha scritto:
>> On 2013年02月26日 01:44, Paolo Bonzini wrote:
>>> libiscsi provides a userspace iSCSI initiator.
>>>
>>> The main advantage over the kernel initiator is that it is very
>>> easy to provide different initiator names for VMs on the same host.
>>> Thus libiscsi supports usage of persistent reservations in the VM,
>>> which otherwise would only be possible with NPIV.
>>>
>>> libiscsi uses "iscsi" as the scheme, not "iscsi+tcp". We can change
>>> this in the tests (while remaining backwards-compatible manner, because
>>> QEMU uses TCP as the default transport for both Gluster and NBD).
>>>
>>> Signed-off-by: Paolo Bonzini<pbonzini at redhat.com>
>>> ---
>>> src/qemu/qemu_command.c | 49
>>> +++++++++++++++++++++-
>>> tests/qemuargv2xmltest.c | 1 +
>>> .../qemuxml2argv-disk-drive-network-gluster.args | 2 +-
>>> .../qemuxml2argv-disk-drive-network-iscsi.args | 1 +
>>> ...ml2argv-disk-drive-network-nbd-ipv6-export.args | 2 +-
>>> .../qemuxml2argv-disk-drive-network-nbd-ipv6.args | 2 +-
>>> tests/qemuxml2argvtest.c | 2 +
>>> 7 files changed, 54 insertions(+), 5 deletions(-)
>>> create mode 100644
>>> tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-iscsi.args
>>>
>>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>>> index 733d3bf..07700cc 100644
>>> --- a/src/qemu/qemu_command.c
>>> +++ b/src/qemu/qemu_command.c
>>> @@ -2145,6 +2145,23 @@ qemuParseGlusterString(virDomainDiskDefPtr def)
>>> }
>>>
>>> static int
>>> +qemuParseISCSIString(virDomainDiskDefPtr def)
>>> +{
>>> + virURIPtr uri = NULL;
>>> +
>>> + if (!(uri = virURIParse(def->src)))
>>> + return -1;
>>> +
>>> + if (uri->path&& strchr(uri->path + 1, '/')) {
>>> + virReportError(VIR_ERR_INTERNAL_ERROR,
>>> + _("invalid address for iSCSI target"),
>>> disk->src);
>>> + return -1;
>>> + }
>>> +
>>> + return qemuParseDriveURIString(def, uri, "iscsi");
>>> +}
>>> +
>>> +static int
>>> qemuParseNBDString(virDomainDiskDefPtr disk)
>>> {
>>> virDomainDiskHostDefPtr h = NULL;
>>> @@ -2238,8 +2255,14 @@ qemuBuildDriveURIString(virDomainDiskDefPtr
>>> disk, virBufferPtr opt,
>>> virBufferAddLit(opt, "file=");
>>> transp =
>>> virDomainDiskProtocolTransportTypeToString(disk->hosts->transport);
>>>
>>> - if (virAsprintf(&tmpscheme, "%s+%s", scheme, transp)< 0)
>>> - goto no_memory;
>>> + if (disk->hosts->transport == VIR_DOMAIN_DISK_PROTO_TRANS_TCP) {
>>> + tmpscheme = strdup(scheme);
>>> + if (tmpscheme == NULL)
>>> + goto no_memory;
>>
>> Why not keeping the "+tcp" for Gluster and NBD instead?
>
> Because it simplifies the code.
>
>> I'm afraid of of relying on qemu's default. Can it be changed?
>
> No, it's API.
Okay, I believe you, ACK.
More information about the libvir-list
mailing list