[libvirt] [PATCH 1/1] add support for iSER block type.
Charles Kelimod
lichstor at gmail.com
Thu Dec 14 06:09:30 UTC 2017
OK, I found qemu supports both:
file.driver=iser,file.portal=xxx.xxx.xxx.xxx:3260,file.target=iqn.xxx,file.lun=0,file.transport=iser,format=raw
file.driver=iscsi,file.portal=xxx.xxx.xxx.xxx:3260,file.target=iqn.xxx,file.lun=0,file.transport=iser,format=raw
So I should only add new transport named "XXX_ISER", and driver will use
the existing iscsi, that will be ok?
Charles.
On Wed, Dec 13, 2017 at 5:53 PM, Peter Krempa <pkrempa at redhat.com> wrote:
> On Wed, Dec 13, 2017 at 17:37:42 +0800, Charles Kelimod wrote:
> > I can add protocol type. For driver name, I considered that before, for
> > qemu, its actually use same driver for iSCSI and iSER, but there defined
> a
> > driver called "iser":
> > static BlockDriver bdrv_iser = {
> > .format_name = "iser",
> > .protocol_name = "iser", to use iser in qemu, we need to set driver as
> > "iser" and transport as "iser" as well. I think it should be "iscsi" and
> > "rdma", I have discussed with qemu members, they said don't need to
> modify
> > in qemu. Maybe for future consideration, there might be a stand along
> > driver for iser.
>
> Then that probably is a bug in qemu. The QMP schema does not have driver
> name 'iser' at any point:
>
> this is from qemu.git/qmp/block-core.json
>
> ##
> # @BlockdevOptionsGluster:
> #
> # Driver specific block device options for Gluster
> #
> # @volume: name of gluster volume where VM image resides
> #
> # @path: absolute path to image file in gluster volume
> #
> # @server: gluster servers description
> #
> # @debug: libgfapi log level (default '4' which is Error)
> # (Since 2.8)
> #
> # @logfile: libgfapi log file (default /dev/stderr) (Since 2.8)
> #
> # Since: 2.9
> ##
> { 'struct': 'BlockdevOptionsGluster',
> 'data': { 'volume': 'str',
> 'path': 'str',
> 'server': ['SocketAddress'],
> '*debug': 'int',
> '*logfile': 'str' } }
>
> ##
> # @IscsiTransport:
> #
> # An enumeration of libiscsi transport types
> #
> # Since: 2.9
> ##
> { 'enum': 'IscsiTransport',
> 'data': [ 'tcp', 'iser' ] }
>
> ##
> # @BlockdevOptions:
> #
> # Options for creating a block device. Many options are available for all
> # block devices, independent of the block driver:
> #
> # @driver: block driver name
> # @node-name: the node name of the new node (Since 2.0).
> # This option is required on the top level of blockdev-add.
> # @discard: discard-related options (default: ignore)
> # @cache: cache-related options
> # @read-only: whether the block device should be read-only
> # (default: false)
> # @detect-zeroes: detect and optimize zero writes (Since 2.1)
> # (default: off)
> # @force-share: force share all permission on added nodes.
> # Requires read-only=true. (Since 2.10)
> #
> # Remaining options are determined by the block driver.
> #
> # Since: 2.9
> ##
> { 'union': 'BlockdevOptions',
> 'base': { 'driver': 'BlockdevDriver',
> '*node-name': 'str',
> '*discard': 'BlockdevDiscardOptions',
> '*cache': 'BlockdevCacheOptions',
> '*read-only': 'bool',
> '*force-share': 'bool',
> '*detect-zeroes': 'BlockdevDetectZeroesOptions' },
> 'discriminator': 'driver',
> 'data': {
> 'blkdebug': 'BlockdevOptionsBlkdebug',
> 'blkverify': 'BlockdevOptionsBlkverify',
> 'bochs': 'BlockdevOptionsGenericFormat',
> 'cloop': 'BlockdevOptionsGenericFormat',
> 'dmg': 'BlockdevOptionsGenericFormat',
> 'file': 'BlockdevOptionsFile',
> 'ftp': 'BlockdevOptionsCurlFtp',
> 'ftps': 'BlockdevOptionsCurlFtps',
> 'gluster': 'BlockdevOptionsGluster',
> 'host_cdrom': 'BlockdevOptionsFile',
> 'host_device':'BlockdevOptionsFile',
> 'http': 'BlockdevOptionsCurlHttp',
> 'https': 'BlockdevOptionsCurlHttps',
> 'iscsi': 'BlockdevOptionsIscsi',
> 'luks': 'BlockdevOptionsLUKS',
> 'nbd': 'BlockdevOptionsNbd',
> 'nfs': 'BlockdevOptionsNfs',
> 'null-aio': 'BlockdevOptionsNull',
> 'null-co': 'BlockdevOptionsNull',
> 'parallels': 'BlockdevOptionsGenericFormat',
> 'qcow2': 'BlockdevOptionsQcow2',
> 'qcow': 'BlockdevOptionsQcow',
> 'qed': 'BlockdevOptionsGenericCOWFormat',
> 'quorum': 'BlockdevOptionsQuorum',
> 'raw': 'BlockdevOptionsRaw',
> 'rbd': 'BlockdevOptionsRbd',
> 'replication':'BlockdevOptionsReplication',
> 'sheepdog': 'BlockdevOptionsSheepdog',
> 'ssh': 'BlockdevOptionsSsh',
> 'throttle': 'BlockdevOptionsThrottle',
> 'vdi': 'BlockdevOptionsGenericFormat',
> 'vhdx': 'BlockdevOptionsGenericFormat',
> 'vmdk': 'BlockdevOptionsGenericCOWFormat',
> 'vpc': 'BlockdevOptionsGenericFormat',
> 'vvfat': 'BlockdevOptionsVVFAT',
> 'vxhs': 'BlockdevOptionsVxHS'
> } }
>
> As you can see, iser is not a protocol name thus should not be treated
> in libvirt differently.
>
> The schema is also the same as when called through query-qmp-schema.
>
> If this really is the case, please fix qemu first. You'll then need a
> capability check that will allow to use this new thing only when the
> fixed qemu is detected.
>
> Either way, schema or code need to be fixed.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20171214/5482800b/attachment-0001.htm>
More information about the libvir-list
mailing list