Commit 1d560104 authored by Kevin Wolf's avatar Kevin Wolf Committed by Jeff Cody
Browse files

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: default avatarDaniel P. Berrange <berrange@redhat.com>
Reviewed-by: default avatarFam Zheng <famz@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Signed-off-by: default avatarJeff Cody <jcody@redhat.com>
parent 81aa2a0f
Loading
Loading
Loading
Loading
+11 −26
Original line number Diff line number Diff line
@@ -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