mirror of https://gitee.com/openkylin/qemu.git
iscsi: Add timeout option
This was previously only available with -iscsi. Again, after this patch, the -iscsi option only takes effect if an URL is given. New users are supposed to use the new driver-specific option. All -iscsi options have a corresponding driver-specific option for the iscsi block driver now. Reviewed-by: Daniel P. Berrange <berrange@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Jeff Cody <jcody@redhat.com>
This commit is contained in:
parent
81aa2a0fb5
commit
1d56010482
|
@ -1327,29 +1327,6 @@ static char *get_initiator_name(QemuOpts *opts)
|
|||
return iscsi_name;
|
||||
}
|
||||
|
||||
static int parse_timeout(const char *target)
|
||||
{
|
||||
QemuOptsList *list;
|
||||
QemuOpts *opts;
|
||||
const char *timeout;
|
||||
|
||||
list = qemu_find_opts("iscsi");
|
||||
if (list) {
|
||||
opts = qemu_opts_find(list, target);
|
||||
if (!opts) {
|
||||
opts = QTAILQ_FIRST(&list->head);
|
||||
}
|
||||
if (opts) {
|
||||
timeout = qemu_opt_get(opts, "timeout");
|
||||
if (timeout) {
|
||||
return atoi(timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void iscsi_nop_timed_event(void *opaque)
|
||||
{
|
||||
IscsiLun *iscsilun = opaque;
|
||||
|
@ -1562,7 +1539,7 @@ static void iscsi_parse_iscsi_option(const char *target, QDict *options)
|
|||
QemuOptsList *list;
|
||||
QemuOpts *opts;
|
||||
const char *user, *password, *password_secret, *initiator_name,
|
||||
*header_digest;
|
||||
*header_digest, *timeout;
|
||||
|
||||
list = qemu_find_opts("iscsi");
|
||||
if (!list) {
|
||||
|
@ -1601,6 +1578,11 @@ static void iscsi_parse_iscsi_option(const char *target, QDict *options)
|
|||
if (header_digest) {
|
||||
qdict_set_default_str(options, "header-digest", header_digest);
|
||||
}
|
||||
|
||||
timeout = qemu_opt_get(opts, "timeout");
|
||||
if (timeout) {
|
||||
qdict_set_default_str(options, "timeout", timeout);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1656,7 +1638,6 @@ static void iscsi_parse_filename(const char *filename, QDict *options,
|
|||
iscsi_destroy_url(iscsi_url);
|
||||
}
|
||||
|
||||
/* TODO Add -iscsi options */
|
||||
static QemuOptsList runtime_opts = {
|
||||
.name = "iscsi",
|
||||
.head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
|
||||
|
@ -1697,6 +1678,10 @@ static QemuOptsList runtime_opts = {
|
|||
.name = "header-digest",
|
||||
.type = QEMU_OPT_STRING,
|
||||
},
|
||||
{
|
||||
.name = "timeout",
|
||||
.type = QEMU_OPT_NUMBER,
|
||||
},
|
||||
{ /* end of list */ }
|
||||
},
|
||||
};
|
||||
|
@ -1797,7 +1782,7 @@ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
|
|||
}
|
||||
|
||||
/* timeout handling is broken in libiscsi before 1.15.0 */
|
||||
timeout = parse_timeout(target);
|
||||
timeout = qemu_opt_get_number(opts, "timeout", 0);
|
||||
#if LIBISCSI_API_VERSION >= 20150621
|
||||
iscsi_set_timeout(iscsi, timeout);
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue