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.

On Wed, Dec 13, 2017 at 5:08 PM, Peter Krempa <pkrempa@redhat.com> wrote:
On Wed, Dec 13, 2017 at 13:52:55 +0800, lichstor@gmail.com wrote:
> From: zhangshengyu <zhangshengyu@fusionstack.cn>
>
> ---
>  src/conf/domain_conf.c        |  8 ++++-
>  src/qemu/qemu_block.c         |  3 +-
>  src/qemu/qemu_command.c       |  3 +-
>  src/qemu/qemu_domain.c        |  2 +-
>  src/qemu/qemu_driver.c        |  3 ++
>  src/qemu/qemu_parse_command.c |  7 ++++
>  src/util/virstoragefile.c     | 75 +++++++++++++++++++++++++++++++++++++++++++
>  src/util/virstoragefile.h     |  1 +
>  8 files changed, 98 insertions(+), 4 deletions(-)

[...]

> @@ -3295,6 +3368,7 @@ static const struct virStorageSourceJSONDriverParser jsonParsers[] = {
>      {"tftp", virStorageSourceParseBackingJSONUri, VIR_STORAGE_NET_PROTOCOL_TFTP},
>      {"gluster", virStorageSourceParseBackingJSONGluster, 0},
>      {"iscsi", virStorageSourceParseBackingJSONiSCSI, 0},
> +    {"iser", virStorageSourceParseBackingJSONiSER, 0},

As I've said in my last reply: This is wrong. there's no 'iser' driver
in qemu. It's a type of transport for ISCSI.

>      {"nbd", virStorageSourceParseBackingJSONNbd, 0},
>      {"sheepdog", virStorageSourceParseBackingJSONSheepdog, 0},
>      {"ssh", virStorageSourceParseBackingJSONSSH, 0},
> diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
> index 24382a0a6..33771ddaf 100644
> --- a/src/util/virstoragefile.h
> +++ b/src/util/virstoragefile.h
> @@ -129,6 +129,7 @@ typedef enum {
>      VIR_STORAGE_NET_PROTOCOL_SHEEPDOG,
>      VIR_STORAGE_NET_PROTOCOL_GLUSTER,
>      VIR_STORAGE_NET_PROTOCOL_ISCSI,
> +    VIR_STORAGE_NET_PROTOCOL_ISER,

... and thus this is wrong too. You need to add a new transport protocol
type, not a new storage protocol type.

Plus it's still missing tests.