mirror of https://gitee.com/openkylin/qemu.git
blockdev: prepare iSCSI block driver for dynamic loading
This commit moves the initialization of the QemuOptsList qemu_iscsi_opts struct out of block/iscsi.c in order to allow the iscsi module to be dynamically loaded. Signed-off-by: Colin Lord <clord@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1471008424-16465-2-git-send-email-clord@redhat.com Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
f7c1553388
commit
f57b4b5fb1
|
@ -2010,45 +2010,9 @@ static BlockDriver bdrv_iscsi = {
|
||||||
.bdrv_attach_aio_context = iscsi_attach_aio_context,
|
.bdrv_attach_aio_context = iscsi_attach_aio_context,
|
||||||
};
|
};
|
||||||
|
|
||||||
static QemuOptsList qemu_iscsi_opts = {
|
|
||||||
.name = "iscsi",
|
|
||||||
.head = QTAILQ_HEAD_INITIALIZER(qemu_iscsi_opts.head),
|
|
||||||
.desc = {
|
|
||||||
{
|
|
||||||
.name = "user",
|
|
||||||
.type = QEMU_OPT_STRING,
|
|
||||||
.help = "username for CHAP authentication to target",
|
|
||||||
},{
|
|
||||||
.name = "password",
|
|
||||||
.type = QEMU_OPT_STRING,
|
|
||||||
.help = "password for CHAP authentication to target",
|
|
||||||
},{
|
|
||||||
.name = "password-secret",
|
|
||||||
.type = QEMU_OPT_STRING,
|
|
||||||
.help = "ID of the secret providing password for CHAP "
|
|
||||||
"authentication to target",
|
|
||||||
},{
|
|
||||||
.name = "header-digest",
|
|
||||||
.type = QEMU_OPT_STRING,
|
|
||||||
.help = "HeaderDigest setting. "
|
|
||||||
"{CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}",
|
|
||||||
},{
|
|
||||||
.name = "initiator-name",
|
|
||||||
.type = QEMU_OPT_STRING,
|
|
||||||
.help = "Initiator iqn name to use when connecting",
|
|
||||||
},{
|
|
||||||
.name = "timeout",
|
|
||||||
.type = QEMU_OPT_NUMBER,
|
|
||||||
.help = "Request timeout in seconds (default 0 = no timeout)",
|
|
||||||
},
|
|
||||||
{ /* end of list */ }
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static void iscsi_block_init(void)
|
static void iscsi_block_init(void)
|
||||||
{
|
{
|
||||||
bdrv_register(&bdrv_iscsi);
|
bdrv_register(&bdrv_iscsi);
|
||||||
qemu_add_opts(&qemu_iscsi_opts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
block_init(iscsi_block_init);
|
block_init(iscsi_block_init);
|
||||||
|
|
40
vl.c
40
vl.c
|
@ -507,6 +507,43 @@ static QemuOptsList qemu_fw_cfg_opts = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_LIBISCSI
|
||||||
|
static QemuOptsList qemu_iscsi_opts = {
|
||||||
|
.name = "iscsi",
|
||||||
|
.head = QTAILQ_HEAD_INITIALIZER(qemu_iscsi_opts.head),
|
||||||
|
.desc = {
|
||||||
|
{
|
||||||
|
.name = "user",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "username for CHAP authentication to target",
|
||||||
|
},{
|
||||||
|
.name = "password",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "password for CHAP authentication to target",
|
||||||
|
},{
|
||||||
|
.name = "password-secret",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "ID of the secret providing password for CHAP "
|
||||||
|
"authentication to target",
|
||||||
|
},{
|
||||||
|
.name = "header-digest",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "HeaderDigest setting. "
|
||||||
|
"{CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}",
|
||||||
|
},{
|
||||||
|
.name = "initiator-name",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Initiator iqn name to use when connecting",
|
||||||
|
},{
|
||||||
|
.name = "timeout",
|
||||||
|
.type = QEMU_OPT_NUMBER,
|
||||||
|
.help = "Request timeout in seconds (default 0 = no timeout)",
|
||||||
|
},
|
||||||
|
{ /* end of list */ }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get machine options
|
* Get machine options
|
||||||
*
|
*
|
||||||
|
@ -3017,6 +3054,9 @@ int main(int argc, char **argv, char **envp)
|
||||||
qemu_add_opts(&qemu_icount_opts);
|
qemu_add_opts(&qemu_icount_opts);
|
||||||
qemu_add_opts(&qemu_semihosting_config_opts);
|
qemu_add_opts(&qemu_semihosting_config_opts);
|
||||||
qemu_add_opts(&qemu_fw_cfg_opts);
|
qemu_add_opts(&qemu_fw_cfg_opts);
|
||||||
|
#ifdef CONFIG_LIBISCSI
|
||||||
|
qemu_add_opts(&qemu_iscsi_opts);
|
||||||
|
#endif
|
||||||
module_call_init(MODULE_INIT_OPTS);
|
module_call_init(MODULE_INIT_OPTS);
|
||||||
|
|
||||||
runstate_init();
|
runstate_init();
|
||||||
|
|
Loading…
Reference in New Issue