From patchwork Thu Feb 26 14:07:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 443918 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 7BD7A1400B6 for ; Fri, 27 Feb 2015 01:08:30 +1100 (AEDT) Received: from localhost ([::1]:59220 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQz76-0000yv-AY for incoming@patchwork.ozlabs.org; Thu, 26 Feb 2015 09:08:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQz6K-0007oy-DC for qemu-devel@nongnu.org; Thu, 26 Feb 2015 09:07:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YQz6B-0007Xo-VC for qemu-devel@nongnu.org; Thu, 26 Feb 2015 09:07:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:54970) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQz6B-0007Xb-O1 for qemu-devel@nongnu.org; Thu, 26 Feb 2015 09:07:31 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t1QE7VhJ001738 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Thu, 26 Feb 2015 09:07:31 -0500 Received: from blackfin.pond.sub.org (ovpn-116-39.ams2.redhat.com [10.36.116.39]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t1QE7TWv025939 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Thu, 26 Feb 2015 09:07:30 -0500 Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id C5F6430DDB9C; Thu, 26 Feb 2015 15:07:28 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 26 Feb 2015 15:07:16 +0100 Message-Id: <1424959648-14721-2-git-send-email-armbru@redhat.com> In-Reply-To: <1424959648-14721-1-git-send-email-armbru@redhat.com> References: <1424959648-14721-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 01/13] QemuOpts: Convert qemu_opt_set_bool() to Error, fix its use X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Return the Error object instead of reporting it with qerror_report_err(). Change callers that assume the function can't fail to pass &error_abort, so that should the assumption ever break, it'll break noisily. Turns out all callers outside its unit test assume that. We could drop the Error ** argument, but that would make the interface less regular, so don't. Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake --- blockdev.c | 6 +++--- include/qemu/option.h | 3 ++- tests/test-qemu-opts.c | 10 +++++----- util/qemu-option.c | 9 ++++----- util/qemu-sockets.c | 4 ++-- vl.c | 5 +++-- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/blockdev.c b/blockdev.c index ae73539..79c33ab 100644 --- a/blockdev.c +++ b/blockdev.c @@ -737,15 +737,15 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type) /* Specific options take precedence */ if (!qemu_opt_get(all_opts, "cache.writeback")) { qemu_opt_set_bool(all_opts, "cache.writeback", - !!(flags & BDRV_O_CACHE_WB)); + !!(flags & BDRV_O_CACHE_WB), &error_abort); } if (!qemu_opt_get(all_opts, "cache.direct")) { qemu_opt_set_bool(all_opts, "cache.direct", - !!(flags & BDRV_O_NOCACHE)); + !!(flags & BDRV_O_NOCACHE), &error_abort); } if (!qemu_opt_get(all_opts, "cache.no-flush")) { qemu_opt_set_bool(all_opts, "cache.no-flush", - !!(flags & BDRV_O_NO_FLUSH)); + !!(flags & BDRV_O_NO_FLUSH), &error_abort); } qemu_opt_unset(all_opts, "cache"); } diff --git a/include/qemu/option.h b/include/qemu/option.h index 58c0157..3206874 100644 --- a/include/qemu/option.h +++ b/include/qemu/option.h @@ -97,7 +97,8 @@ int qemu_opt_unset(QemuOpts *opts, const char *name); int qemu_opt_set(QemuOpts *opts, const char *name, const char *value); void qemu_opt_set_err(QemuOpts *opts, const char *name, const char *value, Error **errp); -int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val); +void qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val, + Error **errp); int qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val); typedef int (*qemu_opt_loopfunc)(const char *name, const char *value, void *opaque); int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque, diff --git a/tests/test-qemu-opts.c b/tests/test-qemu-opts.c index ca08ac5..6b0ae33 100644 --- a/tests/test-qemu-opts.c +++ b/tests/test-qemu-opts.c @@ -169,10 +169,10 @@ static void test_qemu_opt_get(void) static void test_qemu_opt_get_bool(void) { + Error *err = NULL; QemuOptsList *list; QemuOpts *opts; bool opt; - int ret; list = qemu_find_opts("opts_list_02"); g_assert(list != NULL); @@ -192,16 +192,16 @@ static void test_qemu_opt_get_bool(void) opt = qemu_opt_get_bool(opts, "bool1", false); g_assert(opt == false); - ret = qemu_opt_set_bool(opts, "bool1", true); - g_assert(ret == 0); + qemu_opt_set_bool(opts, "bool1", true, &err); + g_assert(!err); /* now we have set bool1, should know about it */ opt = qemu_opt_get_bool(opts, "bool1", false); g_assert(opt == true); /* having reset the value, opt should be the reset one not defval */ - ret = qemu_opt_set_bool(opts, "bool1", false); - g_assert(ret == 0); + qemu_opt_set_bool(opts, "bool1", false, &err); + g_assert(!err); opt = qemu_opt_get_bool(opts, "bool1", true); g_assert(opt == false); diff --git a/util/qemu-option.c b/util/qemu-option.c index d3ab65d..4de8326 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -568,7 +568,8 @@ void qemu_opt_set_err(QemuOpts *opts, const char *name, const char *value, opt_set(opts, name, value, false, errp); } -int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val) +void qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val, + Error **errp) { QemuOpt *opt; const QemuOptDesc *desc = opts->list->desc; @@ -576,9 +577,9 @@ int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val) opt = g_malloc0(sizeof(*opt)); opt->desc = find_desc_by_name(desc, name); if (!opt->desc && !opts_accepts_any(opts)) { - qerror_report(QERR_INVALID_PARAMETER, name); + error_set(errp, QERR_INVALID_PARAMETER, name); g_free(opt); - return -1; + return; } opt->name = g_strdup(name); @@ -586,8 +587,6 @@ int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val) opt->value.boolean = !!val; opt->str = g_strdup(val ? "on" : "off"); QTAILQ_INSERT_TAIL(&opts->head, opt, next); - - return 0; } int qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val) diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 61fc3c1..7205dad 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -580,8 +580,8 @@ static void inet_addr_to_opts(QemuOpts *opts, const InetSocketAddress *addr) bool ipv6 = addr->ipv6 || !addr->has_ipv6; if (!ipv4 || !ipv6) { - qemu_opt_set_bool(opts, "ipv4", ipv4); - qemu_opt_set_bool(opts, "ipv6", ipv6); + qemu_opt_set_bool(opts, "ipv4", ipv4, &error_abort); + qemu_opt_set_bool(opts, "ipv6", ipv6, &error_abort); } if (addr->has_to) { char to[20]; diff --git a/vl.c b/vl.c index e1ffd0a..27e738a 100644 --- a/vl.c +++ b/vl.c @@ -2222,7 +2222,7 @@ static void monitor_parse(const char *optarg, const char *mode, bool pretty) } qemu_opt_set(opts, "mode", mode); qemu_opt_set(opts, "chardev", label); - qemu_opt_set_bool(opts, "pretty", pretty); + qemu_opt_set_bool(opts, "pretty", pretty, &error_abort); if (def) qemu_opt_set(opts, "default", "on"); monitor_device_index++; @@ -3287,7 +3287,8 @@ int main(int argc, char **argv, char **envp) } qemu_opt_set_bool(fsdev, "readonly", - qemu_opt_get_bool(opts, "readonly", 0)); + qemu_opt_get_bool(opts, "readonly", 0), + &error_abort); device = qemu_opts_create(qemu_find_opts("device"), NULL, 0, &error_abort); qemu_opt_set(device, "driver", "virtio-9p-pci");