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 <pkre...@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. >
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list