[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