Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/806828/?format=api
{ "id": 806828, "url": "http://patchwork.ozlabs.org/api/patches/806828/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1503965694-10794-19-git-send-email-mdroth@linux.vnet.ibm.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1503965694-10794-19-git-send-email-mdroth@linux.vnet.ibm.com>", "list_archive_url": null, "date": "2017-08-29T00:13:53", "name": "[18/79] qobject: Use simpler QDict/QList scalar insertion macros", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "3d5d15bf6d42efbf0c80f4826876b9c4be242b6b", "submitter": { "id": 5549, "url": "http://patchwork.ozlabs.org/api/people/5549/?format=api", "name": "Michael Roth", "email": "mdroth@linux.vnet.ibm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1503965694-10794-19-git-send-email-mdroth@linux.vnet.ibm.com/mbox/", "series": [ { "id": 281, "url": "http://patchwork.ozlabs.org/api/series/281/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=281", "date": "2017-08-29T00:13:45", "name": "Patch Round-up for stable 2.9.1, freeze on 2017-09-04", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/281/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/806828/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/806828/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xh8gV5Sllz9s65\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 10:30:46 +1000 (AEST)", "from localhost ([::1]:41960 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dmUQW-0005tc-GT\n\tfor incoming@patchwork.ozlabs.org; Mon, 28 Aug 2017 20:30:44 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:47671)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <mdroth@linux.vnet.ibm.com>) id 1dmUCG-00010G-Mx\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 20:16:07 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <mdroth@linux.vnet.ibm.com>) id 1dmUC9-0005AE-0g\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 20:16:00 -0400", "from mx0a-001b2d01.pphosted.com ([148.163.156.1]:37698)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <mdroth@linux.vnet.ibm.com>)\n\tid 1dmUC8-00059R-Gm\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 20:15:52 -0400", "from pps.filterd (m0098409.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv7T0E71g090081\n\tfor <qemu-devel@nongnu.org>; Mon, 28 Aug 2017 20:15:51 -0400", "from e38.co.us.ibm.com (e38.co.us.ibm.com [32.97.110.159])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2cmvyehk3e-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <qemu-devel@nongnu.org>; Mon, 28 Aug 2017 20:15:51 -0400", "from localhost\n\tby e38.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <qemu-devel@nongnu.org> from <mdroth@linux.vnet.ibm.com>;\n\tMon, 28 Aug 2017 18:15:50 -0600", "from b03cxnp08026.gho.boulder.ibm.com (9.17.130.18)\n\tby e38.co.us.ibm.com (192.168.1.138) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tMon, 28 Aug 2017 18:15:48 -0600", "from b03ledav006.gho.boulder.ibm.com\n\t(b03ledav006.gho.boulder.ibm.com [9.17.130.237])\n\tby b03cxnp08026.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with\n\tESMTP id v7T0Fl5G63438862; Mon, 28 Aug 2017 17:15:47 -0700", "from b03ledav006.gho.boulder.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id C9896C6042;\n\tMon, 28 Aug 2017 18:15:47 -0600 (MDT)", "from localhost (unknown [9.80.85.217])\n\tby b03ledav006.gho.boulder.ibm.com (Postfix) with ESMTP id 7AA7EC6037;\n\tMon, 28 Aug 2017 18:15:47 -0600 (MDT)" ], "From": "Michael Roth <mdroth@linux.vnet.ibm.com>", "To": "qemu-devel@nongnu.org", "Date": "Mon, 28 Aug 2017 19:13:53 -0500", "X-Mailer": "git-send-email 2.7.4", "In-Reply-To": "<1503965694-10794-1-git-send-email-mdroth@linux.vnet.ibm.com>", "References": "<1503965694-10794-1-git-send-email-mdroth@linux.vnet.ibm.com>", "X-TM-AS-GCONF": "00", "x-cbid": "17082900-0028-0000-0000-00000846DB21", "X-IBM-SpamModules-Scores": "", "X-IBM-SpamModules-Versions": "BY=3.00007630; HX=3.00000241; KW=3.00000007;\n\tPH=3.00000004; SC=3.00000226; SDB=6.00909028; UDB=6.00455849;\n\tIPR=6.00689279; \n\tBA=6.00005557; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009;\n\tZB=6.00000000; \n\tZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00016909;\n\tXFM=3.00000015; UTC=2017-08-29 00:15:50", "X-IBM-AV-DETECTION": "SAVI=unused REMOTE=unused XFE=unused", "x-cbparentid": "17082900-0029-0000-0000-000037553110", "Message-Id": "<1503965694-10794-19-git-send-email-mdroth@linux.vnet.ibm.com>", "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-08-28_13:, , signatures=0", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=4\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1708290001", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy]", "X-Received-From": "148.163.156.1", "Subject": "[Qemu-devel] [PATCH 18/79] qobject: Use simpler QDict/QList scalar\n\tinsertion macros", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "qemu-stable@nongnu.org, Markus Armbruster <armbru@redhat.com>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "From: Eric Blake <eblake@redhat.com>\n\nWe now have macros in place to make it less verbose to add a scalar\nto QDict and QList, so use them.\n\nPatch created mechanically via:\n spatch --sp-file scripts/coccinelle/qobject.cocci \\\n --macro-file scripts/cocci-macro-file.h --dir . --in-place\nthen touched up manually to fix a couple of '?:' back to original\nspacing, as well as avoiding a long line in monitor.c.\n\nSigned-off-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Markus Armbruster <armbru@redhat.com>\nMessage-Id: <20170427215821.19397-7-eblake@redhat.com>\nReviewed-by: Stefan Hajnoczi <stefanha@redhat.com>\nReviewed-by: Alberto Garcia <berto@igalia.com>\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\n(cherry picked from commit 46f5ac205a9dc5e2c24274c7df371509a286281f)\n* prereq for fc0932f\nSigned-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>\n---\n block.c | 45 +++++-------\n block/blkdebug.c | 6 +-\n block/blkverify.c | 6 +-\n block/curl.c | 2 +-\n block/file-posix.c | 8 +--\n block/file-win32.c | 4 +-\n block/nbd.c | 41 ++++++-----\n block/nfs.c | 43 +++++-------\n block/null.c | 2 +-\n block/qcow2.c | 4 +-\n block/quorum.c | 8 +--\n block/rbd.c | 16 ++---\n block/snapshot.c | 2 +-\n block/ssh.c | 16 ++---\n block/vvfat.c | 10 +--\n blockdev.c | 30 ++++----\n hw/block/xen_disk.c | 2 +-\n hw/usb/xen-usb.c | 12 ++--\n monitor.c | 23 +++----\n qapi/qmp-event.c | 2 +-\n qemu-img.c | 6 +-\n qemu-io.c | 2 +-\n qemu-nbd.c | 2 +-\n qobject/qdict.c | 2 +-\n target/s390x/cpu_models.c | 4 +-\n tests/check-qdict.c | 134 ++++++++++++++++++------------------\n tests/check-qlist.c | 4 +-\n tests/device-introspect-test.c | 4 +-\n tests/test-qemu-opts.c | 4 +-\n tests/test-qmp-commands.c | 24 +++----\n tests/test-qmp-event.c | 30 ++++----\n tests/test-qobject-output-visitor.c | 6 +-\n util/qemu-option.c | 2 +-\n 33 files changed, 241 insertions(+), 265 deletions(-)", "diff": "diff --git a/block.c b/block.c\nindex f156348..513e6e5 100644\n--- a/block.c\n+++ b/block.c\n@@ -937,16 +937,14 @@ static void update_flags_from_options(int *flags, QemuOpts *opts)\n static void update_options_from_flags(QDict *options, int flags)\n {\n if (!qdict_haskey(options, BDRV_OPT_CACHE_DIRECT)) {\n- qdict_put(options, BDRV_OPT_CACHE_DIRECT,\n- qbool_from_bool(flags & BDRV_O_NOCACHE));\n+ qdict_put_bool(options, BDRV_OPT_CACHE_DIRECT, flags & BDRV_O_NOCACHE);\n }\n if (!qdict_haskey(options, BDRV_OPT_CACHE_NO_FLUSH)) {\n- qdict_put(options, BDRV_OPT_CACHE_NO_FLUSH,\n- qbool_from_bool(flags & BDRV_O_NO_FLUSH));\n+ qdict_put_bool(options, BDRV_OPT_CACHE_NO_FLUSH,\n+ flags & BDRV_O_NO_FLUSH);\n }\n if (!qdict_haskey(options, BDRV_OPT_READ_ONLY)) {\n- qdict_put(options, BDRV_OPT_READ_ONLY,\n- qbool_from_bool(!(flags & BDRV_O_RDWR)));\n+ qdict_put_bool(options, BDRV_OPT_READ_ONLY, !(flags & BDRV_O_RDWR));\n }\n }\n \n@@ -1362,7 +1360,7 @@ static int bdrv_fill_options(QDict **options, const char *filename,\n /* Fetch the file name from the options QDict if necessary */\n if (protocol && filename) {\n if (!qdict_haskey(*options, \"filename\")) {\n- qdict_put(*options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(*options, \"filename\", filename);\n parse_filename = true;\n } else {\n error_setg(errp, \"Can't specify 'file' and 'filename' options at \"\n@@ -1383,7 +1381,7 @@ static int bdrv_fill_options(QDict **options, const char *filename,\n }\n \n drvname = drv->format_name;\n- qdict_put(*options, \"driver\", qstring_from_str(drvname));\n+ qdict_put_str(*options, \"driver\", drvname);\n } else {\n error_setg(errp, \"Must specify either driver or file\");\n return -EINVAL;\n@@ -2038,7 +2036,7 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options,\n }\n \n if (bs->backing_format[0] != '\\0' && !qdict_haskey(options, \"driver\")) {\n- qdict_put(options, \"driver\", qstring_from_str(bs->backing_format));\n+ qdict_put_str(options, \"driver\", bs->backing_format);\n }\n \n backing_hd = bdrv_open_inherit(*backing_filename ? backing_filename : NULL,\n@@ -2193,12 +2191,9 @@ static BlockDriverState *bdrv_append_temp_snapshot(BlockDriverState *bs,\n }\n \n /* Prepare options QDict for the temporary file */\n- qdict_put(snapshot_options, \"file.driver\",\n- qstring_from_str(\"file\"));\n- qdict_put(snapshot_options, \"file.filename\",\n- qstring_from_str(tmp_filename));\n- qdict_put(snapshot_options, \"driver\",\n- qstring_from_str(\"qcow2\"));\n+ qdict_put_str(snapshot_options, \"file.driver\", \"file\");\n+ qdict_put_str(snapshot_options, \"file.filename\", tmp_filename);\n+ qdict_put_str(snapshot_options, \"driver\", \"qcow2\");\n \n bs_snapshot = bdrv_open(NULL, NULL, snapshot_options, flags, errp);\n snapshot_options = NULL;\n@@ -2373,8 +2368,7 @@ static BlockDriverState *bdrv_open_inherit(const char *filename,\n goto fail;\n }\n \n- qdict_put(options, \"file\",\n- qstring_from_str(bdrv_get_node_name(file_bs)));\n+ qdict_put_str(options, \"file\", bdrv_get_node_name(file_bs));\n }\n }\n \n@@ -2396,8 +2390,8 @@ static BlockDriverState *bdrv_open_inherit(const char *filename,\n * sure to update both bs->options (which has the full effective\n * options for bs) and options (which has file.* already removed).\n */\n- qdict_put(bs->options, \"driver\", qstring_from_str(drv->format_name));\n- qdict_put(options, \"driver\", qstring_from_str(drv->format_name));\n+ qdict_put_str(bs->options, \"driver\", drv->format_name);\n+ qdict_put_str(options, \"driver\", drv->format_name);\n } else if (!drv) {\n error_setg(errp, \"Must specify either driver or file\");\n goto fail;\n@@ -2772,12 +2766,12 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,\n * that they are checked at the end of this function. */\n value = qemu_opt_get(opts, \"node-name\");\n if (value) {\n- qdict_put(reopen_state->options, \"node-name\", qstring_from_str(value));\n+ qdict_put_str(reopen_state->options, \"node-name\", value);\n }\n \n value = qemu_opt_get(opts, \"driver\");\n if (value) {\n- qdict_put(reopen_state->options, \"driver\", qstring_from_str(value));\n+ qdict_put_str(reopen_state->options, \"driver\", value);\n }\n \n /* if we are to stay read-only, do not allow permission change\n@@ -4268,8 +4262,7 @@ void bdrv_img_create(const char *filename, const char *fmt,\n \n if (backing_fmt) {\n backing_options = qdict_new();\n- qdict_put(backing_options, \"driver\",\n- qstring_from_str(backing_fmt));\n+ qdict_put_str(backing_options, \"driver\", backing_fmt);\n }\n \n bs = bdrv_open(full_backing, NULL, backing_options, back_flags,\n@@ -4674,7 +4667,7 @@ void bdrv_refresh_filename(BlockDriverState *bs)\n * contain a representation of the filename, therefore the following\n * suffices without querying the (exact_)filename of this BDS. */\n if (bs->file->bs->full_open_options) {\n- qdict_put(opts, \"driver\", qstring_from_str(drv->format_name));\n+ qdict_put_str(opts, \"driver\", drv->format_name);\n QINCREF(bs->file->bs->full_open_options);\n qdict_put(opts, \"file\", bs->file->bs->full_open_options);\n \n@@ -4692,7 +4685,7 @@ void bdrv_refresh_filename(BlockDriverState *bs)\n \n opts = qdict_new();\n append_open_options(opts, bs);\n- qdict_put(opts, \"driver\", qstring_from_str(drv->format_name));\n+ qdict_put_str(opts, \"driver\", drv->format_name);\n \n if (bs->exact_filename[0]) {\n /* This may not work for all block protocol drivers (some may\n@@ -4702,7 +4695,7 @@ void bdrv_refresh_filename(BlockDriverState *bs)\n * needs some special format of the options QDict, it needs to\n * implement the driver-specific bdrv_refresh_filename() function.\n */\n- qdict_put(opts, \"filename\", qstring_from_str(bs->exact_filename));\n+ qdict_put_str(opts, \"filename\", bs->exact_filename);\n }\n \n bs->full_open_options = opts;\ndiff --git a/block/blkdebug.c b/block/blkdebug.c\nindex 42b8d80..ffc6f1d 100644\n--- a/block/blkdebug.c\n+++ b/block/blkdebug.c\n@@ -301,7 +301,7 @@ static void blkdebug_parse_filename(const char *filename, QDict *options,\n if (!strstart(filename, \"blkdebug:\", &filename)) {\n /* There was no prefix; therefore, all options have to be already\n present in the QDict (except for the filename) */\n- qdict_put(options, \"x-image\", qstring_from_str(filename));\n+ qdict_put_str(options, \"x-image\", filename);\n return;\n }\n \n@@ -320,7 +320,7 @@ static void blkdebug_parse_filename(const char *filename, QDict *options,\n \n /* TODO Allow multi-level nesting and set file.filename here */\n filename = c + 1;\n- qdict_put(options, \"x-image\", qstring_from_str(filename));\n+ qdict_put_str(options, \"x-image\", filename);\n }\n \n static QemuOptsList runtime_opts = {\n@@ -693,7 +693,7 @@ static void blkdebug_refresh_filename(BlockDriverState *bs, QDict *options)\n }\n \n opts = qdict_new();\n- qdict_put(opts, \"driver\", qstring_from_str(\"blkdebug\"));\n+ qdict_put_str(opts, \"driver\", \"blkdebug\");\n \n QINCREF(bs->file->bs->full_open_options);\n qdict_put(opts, \"image\", bs->file->bs->full_open_options);\ndiff --git a/block/blkverify.c b/block/blkverify.c\nindex cc29cd2..6b0a603 100644\n--- a/block/blkverify.c\n+++ b/block/blkverify.c\n@@ -67,7 +67,7 @@ static void blkverify_parse_filename(const char *filename, QDict *options,\n if (!strstart(filename, \"blkverify:\", &filename)) {\n /* There was no prefix; therefore, all options have to be already\n present in the QDict (except for the filename) */\n- qdict_put(options, \"x-image\", qstring_from_str(filename));\n+ qdict_put_str(options, \"x-image\", filename);\n return;\n }\n \n@@ -84,7 +84,7 @@ static void blkverify_parse_filename(const char *filename, QDict *options,\n \n /* TODO Allow multi-level nesting and set file.filename here */\n filename = c + 1;\n- qdict_put(options, \"x-image\", qstring_from_str(filename));\n+ qdict_put_str(options, \"x-image\", filename);\n }\n \n static QemuOptsList runtime_opts = {\n@@ -288,7 +288,7 @@ static void blkverify_refresh_filename(BlockDriverState *bs, QDict *options)\n && s->test_file->bs->full_open_options)\n {\n QDict *opts = qdict_new();\n- qdict_put(opts, \"driver\", qstring_from_str(\"blkverify\"));\n+ qdict_put_str(opts, \"driver\", \"blkverify\");\n \n QINCREF(bs->file->bs->full_open_options);\n qdict_put(opts, \"raw\", bs->file->bs->full_open_options);\ndiff --git a/block/curl.c b/block/curl.c\nindex 2708d57..aa6e8cc 100644\n--- a/block/curl.c\n+++ b/block/curl.c\n@@ -548,7 +548,7 @@ static void curl_clean_state(CURLState *s)\n static void curl_parse_filename(const char *filename, QDict *options,\n Error **errp)\n {\n- qdict_put(options, CURL_BLOCK_OPT_URL, qstring_from_str(filename));\n+ qdict_put_str(options, CURL_BLOCK_OPT_URL, filename);\n }\n \n static void curl_detach_aio_context(BlockDriverState *bs)\ndiff --git a/block/file-posix.c b/block/file-posix.c\nindex 5370ba0..9431ad1 100644\n--- a/block/file-posix.c\n+++ b/block/file-posix.c\n@@ -377,7 +377,7 @@ static void raw_parse_filename(const char *filename, QDict *options,\n * function call can be ignored. */\n strstart(filename, \"file:\", &filename);\n \n- qdict_put(options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(options, \"filename\", filename);\n }\n \n static QemuOptsList raw_runtime_opts = {\n@@ -2150,7 +2150,7 @@ static void hdev_parse_filename(const char *filename, QDict *options,\n /* The prefix is optional, just as for \"file\". */\n strstart(filename, \"host_device:\", &filename);\n \n- qdict_put(options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(options, \"filename\", filename);\n }\n \n static bool hdev_is_sg(BlockDriverState *bs)\n@@ -2239,7 +2239,7 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags,\n goto hdev_open_Mac_error;\n }\n \n- qdict_put(options, \"filename\", qstring_from_str(bsd_path));\n+ qdict_put_str(options, \"filename\", bsd_path);\n \n hdev_open_Mac_error:\n g_free(mediaType);\n@@ -2449,7 +2449,7 @@ static void cdrom_parse_filename(const char *filename, QDict *options,\n /* The prefix is optional, just as for \"file\". */\n strstart(filename, \"host_cdrom:\", &filename);\n \n- qdict_put(options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(options, \"filename\", filename);\n }\n #endif\n \ndiff --git a/block/file-win32.c b/block/file-win32.c\nindex 57c4a78..0d455d1 100644\n--- a/block/file-win32.c\n+++ b/block/file-win32.c\n@@ -282,7 +282,7 @@ static void raw_parse_filename(const char *filename, QDict *options,\n * function call can be ignored. */\n strstart(filename, \"file:\", &filename);\n \n- qdict_put(options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(options, \"filename\", filename);\n }\n \n static QemuOptsList raw_runtime_opts = {\n@@ -669,7 +669,7 @@ static void hdev_parse_filename(const char *filename, QDict *options,\n /* The prefix is optional, just as for \"file\". */\n strstart(filename, \"host_device:\", &filename);\n \n- qdict_put(options, \"filename\", qstring_from_str(filename));\n+ qdict_put_str(options, \"filename\", filename);\n }\n \n static int hdev_open(BlockDriverState *bs, QDict *options, int flags,\ndiff --git a/block/nbd.c b/block/nbd.c\nindex 814ab26d..b3545f5 100644\n--- a/block/nbd.c\n+++ b/block/nbd.c\n@@ -79,7 +79,7 @@ static int nbd_parse_uri(const char *filename, QDict *options)\n p = uri->path ? uri->path : \"/\";\n p += strspn(p, \"/\");\n if (p[0]) {\n- qdict_put(options, \"export\", qstring_from_str(p));\n+ qdict_put_str(options, \"export\", p);\n }\n \n qp = query_params_parse(uri->query);\n@@ -94,9 +94,8 @@ static int nbd_parse_uri(const char *filename, QDict *options)\n ret = -EINVAL;\n goto out;\n }\n- qdict_put(options, \"server.type\", qstring_from_str(\"unix\"));\n- qdict_put(options, \"server.path\",\n- qstring_from_str(qp->p[0].value));\n+ qdict_put_str(options, \"server.type\", \"unix\");\n+ qdict_put_str(options, \"server.path\", qp->p[0].value);\n } else {\n QString *host;\n char *port_str;\n@@ -115,11 +114,11 @@ static int nbd_parse_uri(const char *filename, QDict *options)\n host = qstring_from_str(uri->server);\n }\n \n- qdict_put(options, \"server.type\", qstring_from_str(\"inet\"));\n+ qdict_put_str(options, \"server.type\", \"inet\");\n qdict_put(options, \"server.host\", host);\n \n port_str = g_strdup_printf(\"%d\", uri->port ?: NBD_DEFAULT_PORT);\n- qdict_put(options, \"server.port\", qstring_from_str(port_str));\n+ qdict_put_str(options, \"server.port\", port_str);\n g_free(port_str);\n }\n \n@@ -181,7 +180,7 @@ static void nbd_parse_filename(const char *filename, QDict *options,\n export_name[0] = 0; /* truncate 'file' */\n export_name += strlen(EN_OPTSTR);\n \n- qdict_put(options, \"export\", qstring_from_str(export_name));\n+ qdict_put_str(options, \"export\", export_name);\n }\n \n /* extract the host_spec - fail if it's not nbd:... */\n@@ -196,8 +195,8 @@ static void nbd_parse_filename(const char *filename, QDict *options,\n \n /* are we a UNIX or TCP socket? */\n if (strstart(host_spec, \"unix:\", &unixpath)) {\n- qdict_put(options, \"server.type\", qstring_from_str(\"unix\"));\n- qdict_put(options, \"server.path\", qstring_from_str(unixpath));\n+ qdict_put_str(options, \"server.type\", \"unix\");\n+ qdict_put_str(options, \"server.path\", unixpath);\n } else {\n InetSocketAddress *addr = NULL;\n \n@@ -206,9 +205,9 @@ static void nbd_parse_filename(const char *filename, QDict *options,\n goto out;\n }\n \n- qdict_put(options, \"server.type\", qstring_from_str(\"inet\"));\n- qdict_put(options, \"server.host\", qstring_from_str(addr->host));\n- qdict_put(options, \"server.port\", qstring_from_str(addr->port));\n+ qdict_put_str(options, \"server.type\", \"inet\");\n+ qdict_put_str(options, \"server.host\", addr->host);\n+ qdict_put_str(options, \"server.port\", addr->port);\n qapi_free_InetSocketAddress(addr);\n }\n \n@@ -247,13 +246,13 @@ static bool nbd_process_legacy_socket_options(QDict *output_options,\n return false;\n }\n \n- qdict_put(output_options, \"server.type\", qstring_from_str(\"unix\"));\n- qdict_put(output_options, \"server.path\", qstring_from_str(path));\n+ qdict_put_str(output_options, \"server.type\", \"unix\");\n+ qdict_put_str(output_options, \"server.path\", path);\n } else if (host) {\n- qdict_put(output_options, \"server.type\", qstring_from_str(\"inet\"));\n- qdict_put(output_options, \"server.host\", qstring_from_str(host));\n- qdict_put(output_options, \"server.port\",\n- qstring_from_str(port ?: stringify(NBD_DEFAULT_PORT)));\n+ qdict_put_str(output_options, \"server.type\", \"inet\");\n+ qdict_put_str(output_options, \"server.host\", host);\n+ qdict_put_str(output_options, \"server.port\",\n+ port ?: stringify(NBD_DEFAULT_PORT));\n }\n \n return true;\n@@ -528,7 +527,7 @@ static void nbd_refresh_filename(BlockDriverState *bs, QDict *options)\n path = s->saddr->u.q_unix.path;\n } /* else can't represent as pseudo-filename */\n \n- qdict_put(opts, \"driver\", qstring_from_str(\"nbd\"));\n+ qdict_put_str(opts, \"driver\", \"nbd\");\n \n if (path && s->export) {\n snprintf(bs->exact_filename, sizeof(bs->exact_filename),\n@@ -551,10 +550,10 @@ static void nbd_refresh_filename(BlockDriverState *bs, QDict *options)\n qdict_put_obj(opts, \"server\", saddr_qdict);\n \n if (s->export) {\n- qdict_put(opts, \"export\", qstring_from_str(s->export));\n+ qdict_put_str(opts, \"export\", s->export);\n }\n if (s->tlscredsid) {\n- qdict_put(opts, \"tls-creds\", qstring_from_str(s->tlscredsid));\n+ qdict_put_str(opts, \"tls-creds\", s->tlscredsid);\n }\n \n qdict_flatten(opts);\ndiff --git a/block/nfs.c b/block/nfs.c\nindex 0816678..bfeebc1 100644\n--- a/block/nfs.c\n+++ b/block/nfs.c\n@@ -104,9 +104,9 @@ static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)\n goto out;\n }\n \n- qdict_put(options, \"server.host\", qstring_from_str(uri->server));\n- qdict_put(options, \"server.type\", qstring_from_str(\"inet\"));\n- qdict_put(options, \"path\", qstring_from_str(uri->path));\n+ qdict_put_str(options, \"server.host\", uri->server);\n+ qdict_put_str(options, \"server.type\", \"inet\");\n+ qdict_put_str(options, \"path\", uri->path);\n \n for (i = 0; i < qp->n; i++) {\n unsigned long long val;\n@@ -121,23 +121,17 @@ static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)\n goto out;\n }\n if (!strcmp(qp->p[i].name, \"uid\")) {\n- qdict_put(options, \"user\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"user\", qp->p[i].value);\n } else if (!strcmp(qp->p[i].name, \"gid\")) {\n- qdict_put(options, \"group\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"group\", qp->p[i].value);\n } else if (!strcmp(qp->p[i].name, \"tcp-syncnt\")) {\n- qdict_put(options, \"tcp-syn-count\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"tcp-syn-count\", qp->p[i].value);\n } else if (!strcmp(qp->p[i].name, \"readahead\")) {\n- qdict_put(options, \"readahead-size\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"readahead-size\", qp->p[i].value);\n } else if (!strcmp(qp->p[i].name, \"pagecache\")) {\n- qdict_put(options, \"page-cache-size\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"page-cache-size\", qp->p[i].value);\n } else if (!strcmp(qp->p[i].name, \"debug\")) {\n- qdict_put(options, \"debug\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"debug\", qp->p[i].value);\n } else {\n error_setg(errp, \"Unknown NFS parameter name: %s\",\n qp->p[i].name);\n@@ -811,7 +805,7 @@ static void nfs_refresh_filename(BlockDriverState *bs, QDict *options)\n QObject *server_qdict;\n Visitor *ov;\n \n- qdict_put(opts, \"driver\", qstring_from_str(\"nfs\"));\n+ qdict_put_str(opts, \"driver\", \"nfs\");\n \n if (client->uid && !client->gid) {\n snprintf(bs->exact_filename, sizeof(bs->exact_filename),\n@@ -834,28 +828,25 @@ static void nfs_refresh_filename(BlockDriverState *bs, QDict *options)\n visit_type_NFSServer(ov, NULL, &client->server, &error_abort);\n visit_complete(ov, &server_qdict);\n qdict_put_obj(opts, \"server\", server_qdict);\n- qdict_put(opts, \"path\", qstring_from_str(client->path));\n+ qdict_put_str(opts, \"path\", client->path);\n \n if (client->uid) {\n- qdict_put(opts, \"user\", qint_from_int(client->uid));\n+ qdict_put_int(opts, \"user\", client->uid);\n }\n if (client->gid) {\n- qdict_put(opts, \"group\", qint_from_int(client->gid));\n+ qdict_put_int(opts, \"group\", client->gid);\n }\n if (client->tcp_syncnt) {\n- qdict_put(opts, \"tcp-syn-cnt\",\n- qint_from_int(client->tcp_syncnt));\n+ qdict_put_int(opts, \"tcp-syn-cnt\", client->tcp_syncnt);\n }\n if (client->readahead) {\n- qdict_put(opts, \"readahead-size\",\n- qint_from_int(client->readahead));\n+ qdict_put_int(opts, \"readahead-size\", client->readahead);\n }\n if (client->pagecache) {\n- qdict_put(opts, \"page-cache-size\",\n- qint_from_int(client->pagecache));\n+ qdict_put_int(opts, \"page-cache-size\", client->pagecache);\n }\n if (client->debug) {\n- qdict_put(opts, \"debug\", qint_from_int(client->debug));\n+ qdict_put_int(opts, \"debug\", client->debug);\n }\n \n visit_free(ov);\ndiff --git a/block/null.c b/block/null.c\nindex b300390..876f909 100644\n--- a/block/null.c\n+++ b/block/null.c\n@@ -232,7 +232,7 @@ static void null_refresh_filename(BlockDriverState *bs, QDict *opts)\n bs->drv->format_name);\n }\n \n- qdict_put(opts, \"driver\", qstring_from_str(bs->drv->format_name));\n+ qdict_put_str(opts, \"driver\", bs->drv->format_name);\n bs->full_open_options = opts;\n }\n \ndiff --git a/block/qcow2.c b/block/qcow2.c\nindex 6a92d2e..49c737f 100644\n--- a/block/qcow2.c\n+++ b/block/qcow2.c\n@@ -2265,7 +2265,7 @@ static int qcow2_create2(const char *filename, int64_t total_size,\n * table)\n */\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(\"qcow2\"));\n+ qdict_put_str(options, \"driver\", \"qcow2\");\n blk = blk_new_open(filename, NULL, options,\n BDRV_O_RDWR | BDRV_O_RESIZE | BDRV_O_NO_FLUSH,\n &local_err);\n@@ -2327,7 +2327,7 @@ static int qcow2_create2(const char *filename, int64_t total_size,\n \n /* Reopen the image without BDRV_O_NO_FLUSH to flush it before returning */\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(\"qcow2\"));\n+ qdict_put_str(options, \"driver\", \"qcow2\");\n blk = blk_new_open(filename, NULL, options,\n BDRV_O_RDWR | BDRV_O_NO_BACKING, &local_err);\n if (blk == NULL) {\ndiff --git a/block/quorum.c b/block/quorum.c\nindex f7949e2..1b2a8c3 100644\n--- a/block/quorum.c\n+++ b/block/quorum.c\n@@ -1100,10 +1100,10 @@ static void quorum_refresh_filename(BlockDriverState *bs, QDict *options)\n }\n \n opts = qdict_new();\n- qdict_put(opts, \"driver\", qstring_from_str(\"quorum\"));\n- qdict_put(opts, QUORUM_OPT_VOTE_THRESHOLD, qint_from_int(s->threshold));\n- qdict_put(opts, QUORUM_OPT_BLKVERIFY, qbool_from_bool(s->is_blkverify));\n- qdict_put(opts, QUORUM_OPT_REWRITE, qbool_from_bool(s->rewrite_corrupted));\n+ qdict_put_str(opts, \"driver\", \"quorum\");\n+ qdict_put_int(opts, QUORUM_OPT_VOTE_THRESHOLD, s->threshold);\n+ qdict_put_bool(opts, QUORUM_OPT_BLKVERIFY, s->is_blkverify);\n+ qdict_put_bool(opts, QUORUM_OPT_REWRITE, s->rewrite_corrupted);\n qdict_put(opts, \"children\", children);\n \n bs->full_open_options = opts;\ndiff --git a/block/rbd.c b/block/rbd.c\nindex 1ceeeb5..2354ffc 100644\n--- a/block/rbd.c\n+++ b/block/rbd.c\n@@ -154,20 +154,20 @@ static void qemu_rbd_parse_filename(const char *filename, QDict *options,\n goto done;\n }\n qemu_rbd_unescape(found_str);\n- qdict_put(options, \"pool\", qstring_from_str(found_str));\n+ qdict_put_str(options, \"pool\", found_str);\n \n if (strchr(p, '@')) {\n found_str = qemu_rbd_next_tok(p, '@', &p);\n qemu_rbd_unescape(found_str);\n- qdict_put(options, \"image\", qstring_from_str(found_str));\n+ qdict_put_str(options, \"image\", found_str);\n \n found_str = qemu_rbd_next_tok(p, ':', &p);\n qemu_rbd_unescape(found_str);\n- qdict_put(options, \"snapshot\", qstring_from_str(found_str));\n+ qdict_put_str(options, \"snapshot\", found_str);\n } else {\n found_str = qemu_rbd_next_tok(p, ':', &p);\n qemu_rbd_unescape(found_str);\n- qdict_put(options, \"image\", qstring_from_str(found_str));\n+ qdict_put_str(options, \"image\", found_str);\n }\n if (!p) {\n goto done;\n@@ -189,9 +189,9 @@ static void qemu_rbd_parse_filename(const char *filename, QDict *options,\n qemu_rbd_unescape(value);\n \n if (!strcmp(name, \"conf\")) {\n- qdict_put(options, \"conf\", qstring_from_str(value));\n+ qdict_put_str(options, \"conf\", value);\n } else if (!strcmp(name, \"id\")) {\n- qdict_put(options, \"user\" , qstring_from_str(value));\n+ qdict_put_str(options, \"user\", value);\n } else {\n /*\n * We pass these internally to qemu_rbd_set_keypairs(), so\n@@ -204,8 +204,8 @@ static void qemu_rbd_parse_filename(const char *filename, QDict *options,\n if (!keypairs) {\n keypairs = qlist_new();\n }\n- qlist_append(keypairs, qstring_from_str(name));\n- qlist_append(keypairs, qstring_from_str(value));\n+ qlist_append_str(keypairs, name);\n+ qlist_append_str(keypairs, value);\n }\n }\n \ndiff --git a/block/snapshot.c b/block/snapshot.c\nindex 06b1185..a46564e 100644\n--- a/block/snapshot.c\n+++ b/block/snapshot.c\n@@ -200,7 +200,7 @@ int bdrv_snapshot_goto(BlockDriverState *bs,\n \n qdict_extract_subqdict(options, &file_options, \"file.\");\n QDECREF(file_options);\n- qdict_put(options, \"file\", qstring_from_str(bdrv_get_node_name(file)));\n+ qdict_put_str(options, \"file\", bdrv_get_node_name(file));\n \n drv->bdrv_close(bs);\n bdrv_unref_child(bs, bs->file);\ndiff --git a/block/ssh.c b/block/ssh.c\nindex 471ba8a..34a2f79 100644\n--- a/block/ssh.c\n+++ b/block/ssh.c\n@@ -227,24 +227,23 @@ static int parse_uri(const char *filename, QDict *options, Error **errp)\n }\n \n if(uri->user && strcmp(uri->user, \"\") != 0) {\n- qdict_put(options, \"user\", qstring_from_str(uri->user));\n+ qdict_put_str(options, \"user\", uri->user);\n }\n \n- qdict_put(options, \"server.host\", qstring_from_str(uri->server));\n+ qdict_put_str(options, \"server.host\", uri->server);\n \n port_str = g_strdup_printf(\"%d\", uri->port ?: 22);\n- qdict_put(options, \"server.port\", qstring_from_str(port_str));\n+ qdict_put_str(options, \"server.port\", port_str);\n g_free(port_str);\n \n- qdict_put(options, \"path\", qstring_from_str(uri->path));\n+ qdict_put_str(options, \"path\", uri->path);\n \n /* Pick out any query parameters that we understand, and ignore\n * the rest.\n */\n for (i = 0; i < qp->n; ++i) {\n if (strcmp(qp->p[i].name, \"host_key_check\") == 0) {\n- qdict_put(options, \"host_key_check\",\n- qstring_from_str(qp->p[i].value));\n+ qdict_put_str(options, \"host_key_check\", qp->p[i].value);\n }\n }\n \n@@ -574,9 +573,8 @@ static bool ssh_process_legacy_socket_options(QDict *output_opts,\n }\n \n if (host) {\n- qdict_put(output_opts, \"server.host\", qstring_from_str(host));\n- qdict_put(output_opts, \"server.port\",\n- qstring_from_str(port ?: stringify(22)));\n+ qdict_put_str(output_opts, \"server.host\", host);\n+ qdict_put_str(output_opts, \"server.port\", port ?: stringify(22));\n }\n \n return true;\ndiff --git a/block/vvfat.c b/block/vvfat.c\nindex af5153d..8b4e4eb 100644\n--- a/block/vvfat.c\n+++ b/block/vvfat.c\n@@ -1057,10 +1057,10 @@ static void vvfat_parse_filename(const char *filename, QDict *options,\n }\n \n /* Fill in the options QDict */\n- qdict_put(options, \"dir\", qstring_from_str(filename));\n- qdict_put(options, \"fat-type\", qint_from_int(fat_type));\n- qdict_put(options, \"floppy\", qbool_from_bool(floppy));\n- qdict_put(options, \"rw\", qbool_from_bool(rw));\n+ qdict_put_str(options, \"dir\", filename);\n+ qdict_put_int(options, \"fat-type\", fat_type);\n+ qdict_put_bool(options, \"floppy\", floppy);\n+ qdict_put_bool(options, \"rw\", rw);\n }\n \n static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,\n@@ -3040,7 +3040,7 @@ static int enable_write_target(BlockDriverState *bs, Error **errp)\n }\n \n options = qdict_new();\n- qdict_put(options, \"write-target.driver\", qstring_from_str(\"qcow\"));\n+ qdict_put_str(options, \"write-target.driver\", \"qcow\");\n s->qcow = bdrv_open_child(s->qcow_filename, options, \"write-target\", bs,\n &child_vvfat_qcow, false, errp);\n QDECREF(options);\ndiff --git a/blockdev.c b/blockdev.c\nindex 4927914..e2f9c1e 100644\n--- a/blockdev.c\n+++ b/blockdev.c\n@@ -527,7 +527,7 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,\n error_setg(errp, \"Cannot specify both 'driver' and 'format'\");\n goto early_err;\n }\n- qdict_put(bs_opts, \"driver\", qstring_from_str(buf));\n+ qdict_put_str(bs_opts, \"driver\", buf);\n }\n \n on_write_error = BLOCKDEV_ON_ERROR_ENOSPC;\n@@ -903,10 +903,8 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)\n copy_on_read = false;\n }\n \n- qdict_put(bs_opts, BDRV_OPT_READ_ONLY,\n- qstring_from_str(read_only ? \"on\" : \"off\"));\n- qdict_put(bs_opts, \"copy-on-read\",\n- qstring_from_str(copy_on_read ? \"on\" :\"off\"));\n+ qdict_put_str(bs_opts, BDRV_OPT_READ_ONLY, read_only ? \"on\" : \"off\");\n+ qdict_put_str(bs_opts, \"copy-on-read\", copy_on_read ? \"on\" : \"off\");\n \n /* Controller type */\n value = qemu_opt_get(legacy_opts, \"if\");\n@@ -1030,7 +1028,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)\n new_id = g_strdup_printf(\"%s%s%i\", if_name[type],\n mediastr, unit_id);\n }\n- qdict_put(bs_opts, \"id\", qstring_from_str(new_id));\n+ qdict_put_str(bs_opts, \"id\", new_id);\n g_free(new_id);\n }\n \n@@ -1067,7 +1065,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)\n error_report(\"werror is not supported by this bus type\");\n goto fail;\n }\n- qdict_put(bs_opts, \"werror\", qstring_from_str(werror));\n+ qdict_put_str(bs_opts, \"werror\", werror);\n }\n \n rerror = qemu_opt_get(legacy_opts, \"rerror\");\n@@ -1077,7 +1075,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)\n error_report(\"rerror is not supported by this bus type\");\n goto fail;\n }\n- qdict_put(bs_opts, \"rerror\", qstring_from_str(rerror));\n+ qdict_put_str(bs_opts, \"rerror\", rerror);\n }\n \n /* Actual block device init: Functionality shared with blockdev-add */\n@@ -1737,10 +1735,9 @@ static void external_snapshot_prepare(BlkActionState *common,\n \n options = qdict_new();\n if (s->has_snapshot_node_name) {\n- qdict_put(options, \"node-name\",\n- qstring_from_str(snapshot_node_name));\n+ qdict_put_str(options, \"node-name\", snapshot_node_name);\n }\n- qdict_put(options, \"driver\", qstring_from_str(format));\n+ qdict_put_str(options, \"driver\", format);\n \n flags |= BDRV_O_NO_BACKING;\n }\n@@ -2579,11 +2576,10 @@ void qmp_blockdev_change_medium(bool has_device, const char *device,\n \n options = qdict_new();\n detect_zeroes = blk_get_detect_zeroes_from_root_state(blk);\n- qdict_put(options, \"detect-zeroes\",\n- qstring_from_str(detect_zeroes ? \"on\" : \"off\"));\n+ qdict_put_str(options, \"detect-zeroes\", detect_zeroes ? \"on\" : \"off\");\n \n if (has_format) {\n- qdict_put(options, \"driver\", qstring_from_str(format));\n+ qdict_put_str(options, \"driver\", format);\n }\n \n medium_bs = bdrv_open(filename, NULL, options, bdrv_flags, errp);\n@@ -3251,7 +3247,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup, BlockJobTxn *txn,\n \n if (backup->format) {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(backup->format));\n+ qdict_put_str(options, \"driver\", backup->format);\n }\n \n target_bs = bdrv_open(backup->target, NULL, options, flags, errp);\n@@ -3555,10 +3551,10 @@ void qmp_drive_mirror(DriveMirror *arg, Error **errp)\n \n options = qdict_new();\n if (arg->has_node_name) {\n- qdict_put(options, \"node-name\", qstring_from_str(arg->node_name));\n+ qdict_put_str(options, \"node-name\", arg->node_name);\n }\n if (format) {\n- qdict_put(options, \"driver\", qstring_from_str(format));\n+ qdict_put_str(options, \"driver\", format);\n }\n \n /* Mirroring takes care of copy-on-write using the source's backing\ndiff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c\nindex 456a2d5..47b2ca1 100644\n--- a/hw/block/xen_disk.c\n+++ b/hw/block/xen_disk.c\n@@ -1082,7 +1082,7 @@ static int blk_connect(struct XenDevice *xendev)\n \n if (strcmp(blkdev->fileproto, \"<unset>\")) {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(blkdev->fileproto));\n+ qdict_put_str(options, \"driver\", blkdev->fileproto);\n }\n \n /* setup via xenbus -> create new block driver instance */\ndiff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c\nindex 8e676e6..6659415 100644\n--- a/hw/usb/xen-usb.c\n+++ b/hw/usb/xen-usb.c\n@@ -746,16 +746,16 @@ static void usbback_portid_add(struct usbback_info *usbif, unsigned port,\n portname++;\n \n qdict = qdict_new();\n- qdict_put(qdict, \"driver\", qstring_from_str(\"usb-host\"));\n+ qdict_put_str(qdict, \"driver\", \"usb-host\");\n tmp = g_strdup_printf(\"%s.0\", usbif->xendev.qdev.id);\n- qdict_put(qdict, \"bus\", qstring_from_str(tmp));\n+ qdict_put_str(qdict, \"bus\", tmp);\n g_free(tmp);\n tmp = g_strdup_printf(\"%s-%u\", usbif->xendev.qdev.id, port);\n- qdict_put(qdict, \"id\", qstring_from_str(tmp));\n+ qdict_put_str(qdict, \"id\", tmp);\n g_free(tmp);\n- qdict_put(qdict, \"port\", qint_from_int(port));\n- qdict_put(qdict, \"hostbus\", qint_from_int(atoi(busid)));\n- qdict_put(qdict, \"hostport\", qstring_from_str(portname));\n+ qdict_put_int(qdict, \"port\", port);\n+ qdict_put_int(qdict, \"hostbus\", atoi(busid));\n+ qdict_put_str(qdict, \"hostport\", portname);\n opts = qemu_opts_from_qdict(qemu_find_opts(\"device\"), qdict, &local_err);\n if (local_err) {\n goto err;\ndiff --git a/monitor.c b/monitor.c\nindex 2799a37..957361c 100644\n--- a/monitor.c\n+++ b/monitor.c\n@@ -2676,7 +2676,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n }\n goto fail;\n }\n- qdict_put(qdict, key, qstring_from_str(buf));\n+ qdict_put_str(qdict, key, buf);\n }\n break;\n case 'O':\n@@ -2778,9 +2778,9 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n size = -1;\n }\n }\n- qdict_put(qdict, \"count\", qint_from_int(count));\n- qdict_put(qdict, \"format\", qint_from_int(format));\n- qdict_put(qdict, \"size\", qint_from_int(size));\n+ qdict_put_int(qdict, \"count\", count);\n+ qdict_put_int(qdict, \"format\", format);\n+ qdict_put_int(qdict, \"size\", size);\n }\n break;\n case 'i':\n@@ -2823,7 +2823,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n }\n val <<= 20;\n }\n- qdict_put(qdict, key, qint_from_int(val));\n+ qdict_put_int(qdict, key, val);\n }\n break;\n case 'o':\n@@ -2846,7 +2846,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n monitor_printf(mon, \"invalid size\\n\");\n goto fail;\n }\n- qdict_put(qdict, key, qint_from_int(val));\n+ qdict_put_int(qdict, key, val);\n p = end;\n }\n break;\n@@ -2902,7 +2902,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n monitor_printf(mon, \"Expected 'on' or 'off'\\n\");\n goto fail;\n }\n- qdict_put(qdict, key, qbool_from_bool(val));\n+ qdict_put_bool(qdict, key, val);\n }\n break;\n case '-':\n@@ -2933,7 +2933,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n } else {\n /* has option */\n p++;\n- qdict_put(qdict, key, qbool_from_bool(true));\n+ qdict_put_bool(qdict, key, true);\n }\n }\n }\n@@ -2959,7 +2959,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,\n cmd->name);\n goto fail;\n }\n- qdict_put(qdict, key, qstring_from_str(p));\n+ qdict_put_str(qdict, key, p);\n p += len;\n }\n break;\n@@ -3738,9 +3738,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)\n QapiErrorClass_lookup[ERROR_CLASS_COMMAND_NOT_FOUND])) {\n /* Provide a more useful error message */\n qdict_del(qdict, \"desc\");\n- qdict_put(qdict, \"desc\",\n- qstring_from_str(\"Expecting capabilities negotiation\"\n- \" with 'qmp_capabilities'\"));\n+ qdict_put_str(qdict, \"desc\", \"Expecting capabilities negotiation\"\n+ \" with 'qmp_capabilities'\");\n }\n }\n \ndiff --git a/qapi/qmp-event.c b/qapi/qmp-event.c\nindex 802ede4..ba3029c 100644\n--- a/qapi/qmp-event.c\n+++ b/qapi/qmp-event.c\n@@ -51,7 +51,7 @@ static void timestamp_put(QDict *qdict)\n QDict *qmp_event_build_dict(const char *event_name)\n {\n QDict *dict = qdict_new();\n- qdict_put(dict, \"event\", qstring_from_str(event_name));\n+ qdict_put_str(dict, \"event\", event_name);\n timestamp_put(dict);\n return dict;\n }\ndiff --git a/qemu-img.c b/qemu-img.c\nindex 4b2d59a..2e61561 100644\n--- a/qemu-img.c\n+++ b/qemu-img.c\n@@ -313,7 +313,7 @@ static BlockBackend *img_open_file(const char *filename,\n \n if (fmt) {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(fmt));\n+ qdict_put_str(options, \"driver\", fmt);\n }\n \n blk = blk_new_open(filename, NULL, options, flags, &local_err);\n@@ -3162,7 +3162,7 @@ static int img_rebase(int argc, char **argv)\n \n if (bs->backing_format[0] != '\\0') {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(bs->backing_format));\n+ qdict_put_str(options, \"driver\", bs->backing_format);\n }\n \n bdrv_get_backing_filename(bs, backing_name, sizeof(backing_name));\n@@ -3179,7 +3179,7 @@ static int img_rebase(int argc, char **argv)\n if (out_baseimg[0]) {\n if (out_basefmt) {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(out_basefmt));\n+ qdict_put_str(options, \"driver\", out_basefmt);\n } else {\n options = NULL;\n }\ndiff --git a/qemu-io.c b/qemu-io.c\nindex 427cbae..ed0e2dc 100644\n--- a/qemu-io.c\n+++ b/qemu-io.c\n@@ -601,7 +601,7 @@ int main(int argc, char **argv)\n } else {\n if (format) {\n opts = qdict_new();\n- qdict_put(opts, \"driver\", qstring_from_str(format));\n+ qdict_put_str(opts, \"driver\", format);\n }\n if (openfile(argv[optind], flags, writethrough, opts)) {\n exit(1);\ndiff --git a/qemu-nbd.c b/qemu-nbd.c\nindex e080fb7..e4f00e2 100644\n--- a/qemu-nbd.c\n+++ b/qemu-nbd.c\n@@ -959,7 +959,7 @@ int main(int argc, char **argv)\n } else {\n if (fmt) {\n options = qdict_new();\n- qdict_put(options, \"driver\", qstring_from_str(fmt));\n+ qdict_put_str(options, \"driver\", fmt);\n }\n blk = blk_new_open(srcpath, NULL, options, flags, &local_err);\n }\ndiff --git a/qobject/qdict.c b/qobject/qdict.c\nindex 291eef1..88e2ecd 100644\n--- a/qobject/qdict.c\n+++ b/qobject/qdict.c\n@@ -463,7 +463,7 @@ void qdict_set_default_str(QDict *dst, const char *key, const char *val)\n return;\n }\n \n- qdict_put(dst, key, qstring_from_str(val));\n+ qdict_put_str(dst, key, val);\n }\n \n static void qdict_flatten_qdict(QDict *qdict, QDict *target,\ndiff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c\nindex ce461cc..8d27363 100644\n--- a/target/s390x/cpu_models.c\n+++ b/target/s390x/cpu_models.c\n@@ -376,12 +376,12 @@ static void cpu_model_from_info(S390CPUModel *model, const CpuModelInfo *info,\n \n static void qdict_add_disabled_feat(const char *name, void *opaque)\n {\n- qdict_put(opaque, name, qbool_from_bool(false));\n+ qdict_put_bool(opaque, name, false);\n }\n \n static void qdict_add_enabled_feat(const char *name, void *opaque)\n {\n- qdict_put(opaque, name, qbool_from_bool(true));\n+ qdict_put_bool(opaque, name, true);\n }\n \n /* convert S390CPUDef into a static CpuModelInfo */\ndiff --git a/tests/check-qdict.c b/tests/check-qdict.c\nindex 9cdc985..3effca5 100644\n--- a/tests/check-qdict.c\n+++ b/tests/check-qdict.c\n@@ -47,7 +47,7 @@ static void qdict_put_obj_test(void)\n qdict = qdict_new();\n \n // key \"\" will have tdb hash 12345\n- qdict_put(qdict, \"\", qint_from_int(num));\n+ qdict_put_int(qdict, \"\", num);\n \n g_assert(qdict_size(qdict) == 1);\n ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);\n@@ -66,8 +66,8 @@ static void qdict_destroy_simple_test(void)\n QDict *qdict;\n \n qdict = qdict_new();\n- qdict_put(qdict, \"num\", qint_from_int(0));\n- qdict_put(qdict, \"str\", qstring_from_str(\"foo\"));\n+ qdict_put_int(qdict, \"num\", 0);\n+ qdict_put_str(qdict, \"str\", \"foo\");\n \n QDECREF(qdict);\n }\n@@ -80,7 +80,7 @@ static void qdict_get_test(void)\n const char *key = \"test\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qint_from_int(value));\n+ qdict_put_int(tests_dict, key, value);\n \n obj = qdict_get(tests_dict, key);\n g_assert(obj != NULL);\n@@ -98,7 +98,7 @@ static void qdict_get_int_test(void)\n const char *key = \"int\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qint_from_int(value));\n+ qdict_put_int(tests_dict, key, value);\n \n ret = qdict_get_int(tests_dict, key);\n g_assert(ret == value);\n@@ -113,7 +113,7 @@ static void qdict_get_try_int_test(void)\n const char *key = \"int\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qint_from_int(value));\n+ qdict_put_int(tests_dict, key, value);\n \n ret = qdict_get_try_int(tests_dict, key, 0);\n g_assert(ret == value);\n@@ -128,7 +128,7 @@ static void qdict_get_str_test(void)\n const char *str = \"string\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qstring_from_str(str));\n+ qdict_put_str(tests_dict, key, str);\n \n p = qdict_get_str(tests_dict, key);\n g_assert(p != NULL);\n@@ -144,7 +144,7 @@ static void qdict_get_try_str_test(void)\n const char *str = \"string\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qstring_from_str(str));\n+ qdict_put_str(tests_dict, key, str);\n \n p = qdict_get_try_str(tests_dict, key);\n g_assert(p != NULL);\n@@ -188,7 +188,7 @@ static void qdict_haskey_test(void)\n const char *key = \"test\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qint_from_int(0));\n+ qdict_put_int(tests_dict, key, 0);\n g_assert(qdict_haskey(tests_dict, key) == 1);\n \n QDECREF(tests_dict);\n@@ -199,7 +199,7 @@ static void qdict_del_test(void)\n const char *key = \"key test\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qstring_from_str(\"foo\"));\n+ qdict_put_str(tests_dict, key, \"foo\");\n g_assert(qdict_size(tests_dict) == 1);\n \n qdict_del(tests_dict, key);\n@@ -226,9 +226,9 @@ static void qdict_iterapi_test(void)\n \n g_assert(qdict_first(tests_dict) == NULL);\n \n- qdict_put(tests_dict, \"key1\", qint_from_int(1));\n- qdict_put(tests_dict, \"key2\", qint_from_int(2));\n- qdict_put(tests_dict, \"key3\", qint_from_int(3));\n+ qdict_put_int(tests_dict, \"key1\", 1);\n+ qdict_put_int(tests_dict, \"key2\", 2);\n+ qdict_put_int(tests_dict, \"key3\", 3);\n \n count = 0;\n for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){\n@@ -294,20 +294,20 @@ static void qdict_flatten_test(void)\n * }\n */\n \n- qdict_put(dict1, \"a\", qint_from_int(0));\n- qdict_put(dict1, \"b\", qint_from_int(1));\n+ qdict_put_int(dict1, \"a\", 0);\n+ qdict_put_int(dict1, \"b\", 1);\n \n- qlist_append(list1, qint_from_int(23));\n- qlist_append(list1, qint_from_int(66));\n+ qlist_append_int(list1, 23);\n+ qlist_append_int(list1, 66);\n qlist_append(list1, dict1);\n- qlist_append(list2, qint_from_int(42));\n+ qlist_append_int(list2, 42);\n qlist_append(list2, list1);\n \n- qdict_put(dict2, \"c\", qint_from_int(2));\n- qdict_put(dict2, \"d\", qint_from_int(3));\n+ qdict_put_int(dict2, \"c\", 2);\n+ qdict_put_int(dict2, \"d\", 3);\n qdict_put(dict3, \"e\", list2);\n qdict_put(dict3, \"f\", dict2);\n- qdict_put(dict3, \"g\", qint_from_int(4));\n+ qdict_put_int(dict3, \"g\", 4);\n \n qdict_flatten(dict3);\n \n@@ -369,12 +369,12 @@ static void qdict_array_split_test(void)\n * This example is given in the comment of qdict_array_split().\n */\n \n- qdict_put(test_dict, \"1.x\", qint_from_int(0));\n- qdict_put(test_dict, \"4.y\", qint_from_int(1));\n- qdict_put(test_dict, \"0.a\", qint_from_int(42));\n- qdict_put(test_dict, \"o.o\", qint_from_int(7));\n- qdict_put(test_dict, \"0.b\", qint_from_int(23));\n- qdict_put(test_dict, \"2\", qint_from_int(66));\n+ qdict_put_int(test_dict, \"1.x\", 0);\n+ qdict_put_int(test_dict, \"4.y\", 1);\n+ qdict_put_int(test_dict, \"0.a\", 42);\n+ qdict_put_int(test_dict, \"o.o\", 7);\n+ qdict_put_int(test_dict, \"0.b\", 23);\n+ qdict_put_int(test_dict, \"2\", 66);\n \n qdict_array_split(test_dict, &test_list);\n \n@@ -441,9 +441,9 @@ static void qdict_array_split_test(void)\n \n test_dict = qdict_new();\n \n- qdict_put(test_dict, \"0\", qint_from_int(42));\n- qdict_put(test_dict, \"1\", qint_from_int(23));\n- qdict_put(test_dict, \"1.x\", qint_from_int(84));\n+ qdict_put_int(test_dict, \"0\", 42);\n+ qdict_put_int(test_dict, \"1\", 23);\n+ qdict_put_int(test_dict, \"1.x\", 84);\n \n qdict_array_split(test_dict, &test_list);\n \n@@ -472,38 +472,38 @@ static void qdict_array_entries_test(void)\n \n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, 0);\n \n- qdict_put(dict, \"bar\", qint_from_int(0));\n- qdict_put(dict, \"baz.0\", qint_from_int(0));\n+ qdict_put_int(dict, \"bar\", 0);\n+ qdict_put_int(dict, \"baz.0\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, 0);\n \n- qdict_put(dict, \"foo.1\", qint_from_int(0));\n+ qdict_put_int(dict, \"foo.1\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, -EINVAL);\n- qdict_put(dict, \"foo.0\", qint_from_int(0));\n+ qdict_put_int(dict, \"foo.0\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, 2);\n- qdict_put(dict, \"foo.bar\", qint_from_int(0));\n+ qdict_put_int(dict, \"foo.bar\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, -EINVAL);\n qdict_del(dict, \"foo.bar\");\n \n- qdict_put(dict, \"foo.2.a\", qint_from_int(0));\n- qdict_put(dict, \"foo.2.b\", qint_from_int(0));\n- qdict_put(dict, \"foo.2.c\", qint_from_int(0));\n+ qdict_put_int(dict, \"foo.2.a\", 0);\n+ qdict_put_int(dict, \"foo.2.b\", 0);\n+ qdict_put_int(dict, \"foo.2.c\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"foo.\"), ==, 3);\n g_assert_cmpint(qdict_array_entries(dict, \"\"), ==, -EINVAL);\n \n QDECREF(dict);\n \n dict = qdict_new();\n- qdict_put(dict, \"1\", qint_from_int(0));\n+ qdict_put_int(dict, \"1\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"\"), ==, -EINVAL);\n- qdict_put(dict, \"0\", qint_from_int(0));\n+ qdict_put_int(dict, \"0\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"\"), ==, 2);\n- qdict_put(dict, \"bar\", qint_from_int(0));\n+ qdict_put_int(dict, \"bar\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"\"), ==, -EINVAL);\n qdict_del(dict, \"bar\");\n \n- qdict_put(dict, \"2.a\", qint_from_int(0));\n- qdict_put(dict, \"2.b\", qint_from_int(0));\n- qdict_put(dict, \"2.c\", qint_from_int(0));\n+ qdict_put_int(dict, \"2.a\", 0);\n+ qdict_put_int(dict, \"2.b\", 0);\n+ qdict_put_int(dict, \"2.c\", 0);\n g_assert_cmpint(qdict_array_entries(dict, \"\"), ==, 3);\n \n QDECREF(dict);\n@@ -529,7 +529,7 @@ static void qdict_join_test(void)\n \n /* First iteration: Test movement */\n /* Second iteration: Test empty source and non-empty destination */\n- qdict_put(dict2, \"foo\", qint_from_int(42));\n+ qdict_put_int(dict2, \"foo\", 42);\n \n for (i = 0; i < 2; i++) {\n qdict_join(dict1, dict2, overwrite);\n@@ -541,7 +541,7 @@ static void qdict_join_test(void)\n }\n \n /* Test non-empty source and destination without conflict */\n- qdict_put(dict2, \"bar\", qint_from_int(23));\n+ qdict_put_int(dict2, \"bar\", 23);\n \n qdict_join(dict1, dict2, overwrite);\n \n@@ -552,7 +552,7 @@ static void qdict_join_test(void)\n g_assert(qdict_get_int(dict1, \"bar\") == 23);\n \n /* Test conflict */\n- qdict_put(dict2, \"foo\", qint_from_int(84));\n+ qdict_put_int(dict2, \"foo\", 84);\n \n qdict_join(dict1, dict2, overwrite);\n \n@@ -594,15 +594,15 @@ static void qdict_crumple_test_recursive(void)\n QList *rules;\n \n src = qdict_new();\n- qdict_put(src, \"vnc.listen.addr\", qstring_from_str(\"127.0.0.1\"));\n- qdict_put(src, \"vnc.listen.port\", qstring_from_str(\"5901\"));\n- qdict_put(src, \"vnc.acl.rules.0.match\", qstring_from_str(\"fred\"));\n- qdict_put(src, \"vnc.acl.rules.0.policy\", qstring_from_str(\"allow\"));\n- qdict_put(src, \"vnc.acl.rules.1.match\", qstring_from_str(\"bob\"));\n- qdict_put(src, \"vnc.acl.rules.1.policy\", qstring_from_str(\"deny\"));\n- qdict_put(src, \"vnc.acl.default\", qstring_from_str(\"deny\"));\n- qdict_put(src, \"vnc.acl..name\", qstring_from_str(\"acl0\"));\n- qdict_put(src, \"vnc.acl.rule..name\", qstring_from_str(\"acl0\"));\n+ qdict_put_str(src, \"vnc.listen.addr\", \"127.0.0.1\");\n+ qdict_put_str(src, \"vnc.listen.port\", \"5901\");\n+ qdict_put_str(src, \"vnc.acl.rules.0.match\", \"fred\");\n+ qdict_put_str(src, \"vnc.acl.rules.0.policy\", \"allow\");\n+ qdict_put_str(src, \"vnc.acl.rules.1.match\", \"bob\");\n+ qdict_put_str(src, \"vnc.acl.rules.1.policy\", \"deny\");\n+ qdict_put_str(src, \"vnc.acl.default\", \"deny\");\n+ qdict_put_str(src, \"vnc.acl..name\", \"acl0\");\n+ qdict_put_str(src, \"vnc.acl.rule..name\", \"acl0\");\n \n dst = qobject_to_qdict(qdict_crumple(src, &error_abort));\n g_assert(dst);\n@@ -669,8 +669,8 @@ static void qdict_crumple_test_bad_inputs(void)\n \n src = qdict_new();\n /* rule.0 can't be both a string and a dict */\n- qdict_put(src, \"rule.0\", qstring_from_str(\"fred\"));\n- qdict_put(src, \"rule.0.policy\", qstring_from_str(\"allow\"));\n+ qdict_put_str(src, \"rule.0\", \"fred\");\n+ qdict_put_str(src, \"rule.0.policy\", \"allow\");\n \n g_assert(qdict_crumple(src, &error) == NULL);\n g_assert(error != NULL);\n@@ -680,8 +680,8 @@ static void qdict_crumple_test_bad_inputs(void)\n \n src = qdict_new();\n /* rule can't be both a list and a dict */\n- qdict_put(src, \"rule.0\", qstring_from_str(\"fred\"));\n- qdict_put(src, \"rule.a\", qstring_from_str(\"allow\"));\n+ qdict_put_str(src, \"rule.0\", \"fred\");\n+ qdict_put_str(src, \"rule.a\", \"allow\");\n \n g_assert(qdict_crumple(src, &error) == NULL);\n g_assert(error != NULL);\n@@ -692,7 +692,7 @@ static void qdict_crumple_test_bad_inputs(void)\n src = qdict_new();\n /* The input should be flat, ie no dicts or lists */\n qdict_put(src, \"rule.a\", qdict_new());\n- qdict_put(src, \"rule.b\", qstring_from_str(\"allow\"));\n+ qdict_put_str(src, \"rule.b\", \"allow\");\n \n g_assert(qdict_crumple(src, &error) == NULL);\n g_assert(error != NULL);\n@@ -702,8 +702,8 @@ static void qdict_crumple_test_bad_inputs(void)\n \n src = qdict_new();\n /* List indexes must not have gaps */\n- qdict_put(src, \"rule.0\", qstring_from_str(\"deny\"));\n- qdict_put(src, \"rule.3\", qstring_from_str(\"allow\"));\n+ qdict_put_str(src, \"rule.0\", \"deny\");\n+ qdict_put_str(src, \"rule.3\", \"allow\");\n \n g_assert(qdict_crumple(src, &error) == NULL);\n g_assert(error != NULL);\n@@ -713,8 +713,8 @@ static void qdict_crumple_test_bad_inputs(void)\n \n src = qdict_new();\n /* List indexes must be in %zu format */\n- qdict_put(src, \"rule.0\", qstring_from_str(\"deny\"));\n- qdict_put(src, \"rule.+1\", qstring_from_str(\"allow\"));\n+ qdict_put_str(src, \"rule.0\", \"deny\");\n+ qdict_put_str(src, \"rule.+1\", \"allow\");\n \n g_assert(qdict_crumple(src, &error) == NULL);\n g_assert(error != NULL);\n@@ -733,8 +733,8 @@ static void qdict_put_exists_test(void)\n const char *key = \"exists\";\n QDict *tests_dict = qdict_new();\n \n- qdict_put(tests_dict, key, qint_from_int(1));\n- qdict_put(tests_dict, key, qint_from_int(2));\n+ qdict_put_int(tests_dict, key, 1);\n+ qdict_put_int(tests_dict, key, 2);\n \n value = qdict_get_int(tests_dict, key);\n g_assert(value == 2);\ndiff --git a/tests/check-qlist.c b/tests/check-qlist.c\nindex e16da5e..4983867 100644\n--- a/tests/check-qlist.c\n+++ b/tests/check-qlist.c\n@@ -74,7 +74,7 @@ static void qlist_destroy_test(void)\n qlist = qlist_new();\n \n for (i = 0; i < 42; i++)\n- qlist_append(qlist, qint_from_int(i));\n+ qlist_append_int(qlist, i);\n \n QDECREF(qlist);\n }\n@@ -103,7 +103,7 @@ static void qlist_iter_test(void)\n qlist = qlist_new();\n \n for (i = 0; i < iter_max; i++)\n- qlist_append(qlist, qint_from_int(i));\n+ qlist_append_int(qlist, i);\n \n iter_called = 0;\n qlist_iter(qlist, iter_func, NULL);\ndiff --git a/tests/device-introspect-test.c b/tests/device-introspect-test.c\nindex c5637cc..b1abb2a 100644\n--- a/tests/device-introspect-test.c\n+++ b/tests/device-introspect-test.c\n@@ -32,9 +32,9 @@ static QList *qom_list_types(const char *implements, bool abstract)\n QList *ret;\n QDict *args = qdict_new();\n \n- qdict_put(args, \"abstract\", qbool_from_bool(abstract));\n+ qdict_put_bool(args, \"abstract\", abstract);\n if (implements) {\n- qdict_put(args, \"implements\", qstring_from_str(implements));\n+ qdict_put_str(args, \"implements\", implements);\n }\n resp = qmp(\"{'execute': 'qom-list-types',\"\n \" 'arguments': %p }\", args);\ndiff --git a/tests/test-qemu-opts.c b/tests/test-qemu-opts.c\nindex 0ad74b4..cc1bb1a 100644\n--- a/tests/test-qemu-opts.c\n+++ b/tests/test-qemu-opts.c\n@@ -299,7 +299,7 @@ static void test_qemu_opt_get_size(void)\n dict = qdict_new();\n g_assert(dict != NULL);\n \n- qdict_put(dict, \"size1\", qstring_from_str(\"10\"));\n+ qdict_put_str(dict, \"size1\", \"10\");\n \n qemu_opts_absorb_qdict(opts, dict, &error_abort);\n g_assert(error_abort == NULL);\n@@ -309,7 +309,7 @@ static void test_qemu_opt_get_size(void)\n g_assert(opt == 10);\n \n /* reset value */\n- qdict_put(dict, \"size1\", qstring_from_str(\"15\"));\n+ qdict_put_str(dict, \"size1\", \"15\");\n \n qemu_opts_absorb_qdict(opts, dict, &error_abort);\n g_assert(error_abort == NULL);\ndiff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c\nindex ac3fd03..acdded4 100644\n--- a/tests/test-qmp-commands.c\n+++ b/tests/test-qmp-commands.c\n@@ -94,7 +94,7 @@ static void test_dispatch_cmd(void)\n QDict *req = qdict_new();\n QObject *resp;\n \n- qdict_put(req, \"execute\", qstring_from_str(\"user_def_cmd\"));\n+ qdict_put_str(req, \"execute\", \"user_def_cmd\");\n \n resp = qmp_dispatch(&qmp_commands, QOBJECT(req));\n assert(resp != NULL);\n@@ -111,7 +111,7 @@ static void test_dispatch_cmd_failure(void)\n QDict *args = qdict_new();\n QObject *resp;\n \n- qdict_put(req, \"execute\", qstring_from_str(\"user_def_cmd2\"));\n+ qdict_put_str(req, \"execute\", \"user_def_cmd2\");\n \n resp = qmp_dispatch(&qmp_commands, QOBJECT(req));\n assert(resp != NULL);\n@@ -122,10 +122,10 @@ static void test_dispatch_cmd_failure(void)\n \n /* check that with extra arguments it throws an error */\n req = qdict_new();\n- qdict_put(args, \"a\", qint_from_int(66));\n+ qdict_put_int(args, \"a\", 66);\n qdict_put(req, \"arguments\", args);\n \n- qdict_put(req, \"execute\", qstring_from_str(\"user_def_cmd\"));\n+ qdict_put_str(req, \"execute\", \"user_def_cmd\");\n \n resp = qmp_dispatch(&qmp_commands, QOBJECT(req));\n assert(resp != NULL);\n@@ -164,14 +164,14 @@ static void test_dispatch_cmd_io(void)\n QDict *ret_dict_dict2, *ret_dict_dict2_userdef;\n QInt *ret3;\n \n- qdict_put(ud1a, \"integer\", qint_from_int(42));\n- qdict_put(ud1a, \"string\", qstring_from_str(\"hello\"));\n- qdict_put(ud1b, \"integer\", qint_from_int(422));\n- qdict_put(ud1b, \"string\", qstring_from_str(\"hello2\"));\n+ qdict_put_int(ud1a, \"integer\", 42);\n+ qdict_put_str(ud1a, \"string\", \"hello\");\n+ qdict_put_int(ud1b, \"integer\", 422);\n+ qdict_put_str(ud1b, \"string\", \"hello2\");\n qdict_put(args, \"ud1a\", ud1a);\n qdict_put(args, \"ud1b\", ud1b);\n qdict_put(req, \"arguments\", args);\n- qdict_put(req, \"execute\", qstring_from_str(\"user_def_cmd2\"));\n+ qdict_put_str(req, \"execute\", \"user_def_cmd2\");\n \n ret = qobject_to_qdict(test_qmp_dispatch(req));\n \n@@ -190,9 +190,9 @@ static void test_dispatch_cmd_io(void)\n assert(!strcmp(qdict_get_str(ret_dict_dict2, \"string\"), \"blah4\"));\n QDECREF(ret);\n \n- qdict_put(args3, \"a\", qint_from_int(66));\n+ qdict_put_int(args3, \"a\", 66);\n qdict_put(req, \"arguments\", args3);\n- qdict_put(req, \"execute\", qstring_from_str(\"guest-get-time\"));\n+ qdict_put_str(req, \"execute\", \"guest-get-time\");\n \n ret3 = qobject_to_qint(test_qmp_dispatch(req));\n assert(qint_get_int(ret3) == 66);\n@@ -244,7 +244,7 @@ static void test_dealloc_partial(void)\n Visitor *v;\n \n ud2_dict = qdict_new();\n- qdict_put(ud2_dict, \"string0\", qstring_from_str(text));\n+ qdict_put_str(ud2_dict, \"string0\", text);\n \n v = qobject_input_visitor_new(QOBJECT(ud2_dict));\n visit_type_UserDefTwo(v, NULL, &ud2, &err);\ndiff --git a/tests/test-qmp-event.c b/tests/test-qmp-event.c\nindex 7bb621b..4c0f096 100644\n--- a/tests/test-qmp-event.c\n+++ b/tests/test-qmp-event.c\n@@ -153,7 +153,7 @@ static void test_event_a(TestEventData *data,\n {\n QDict *d;\n d = data->expect;\n- qdict_put(d, \"event\", qstring_from_str(\"EVENT_A\"));\n+ qdict_put_str(d, \"event\", \"EVENT_A\");\n qapi_event_send_event_a(&error_abort);\n }\n \n@@ -162,7 +162,7 @@ static void test_event_b(TestEventData *data,\n {\n QDict *d;\n d = data->expect;\n- qdict_put(d, \"event\", qstring_from_str(\"EVENT_B\"));\n+ qdict_put_str(d, \"event\", \"EVENT_B\");\n qapi_event_send_event_b(&error_abort);\n }\n \n@@ -177,16 +177,16 @@ static void test_event_c(TestEventData *data,\n b.has_enum1 = false;\n \n d_b = qdict_new();\n- qdict_put(d_b, \"integer\", qint_from_int(2));\n- qdict_put(d_b, \"string\", qstring_from_str(\"test1\"));\n+ qdict_put_int(d_b, \"integer\", 2);\n+ qdict_put_str(d_b, \"string\", \"test1\");\n \n d_data = qdict_new();\n- qdict_put(d_data, \"a\", qint_from_int(1));\n+ qdict_put_int(d_data, \"a\", 1);\n qdict_put(d_data, \"b\", d_b);\n- qdict_put(d_data, \"c\", qstring_from_str(\"test2\"));\n+ qdict_put_str(d_data, \"c\", \"test2\");\n \n d = data->expect;\n- qdict_put(d, \"event\", qstring_from_str(\"EVENT_C\"));\n+ qdict_put_str(d, \"event\", \"EVENT_C\");\n qdict_put(d, \"data\", d_data);\n \n qapi_event_send_event_c(true, 1, true, &b, \"test2\", &error_abort);\n@@ -213,22 +213,22 @@ static void test_event_d(TestEventData *data,\n a.enum2 = ENUM_ONE_VALUE2;\n \n d_struct1 = qdict_new();\n- qdict_put(d_struct1, \"integer\", qint_from_int(2));\n- qdict_put(d_struct1, \"string\", qstring_from_str(\"test1\"));\n- qdict_put(d_struct1, \"enum1\", qstring_from_str(\"value1\"));\n+ qdict_put_int(d_struct1, \"integer\", 2);\n+ qdict_put_str(d_struct1, \"string\", \"test1\");\n+ qdict_put_str(d_struct1, \"enum1\", \"value1\");\n \n d_a = qdict_new();\n qdict_put(d_a, \"struct1\", d_struct1);\n- qdict_put(d_a, \"string\", qstring_from_str(\"test2\"));\n- qdict_put(d_a, \"enum2\", qstring_from_str(\"value2\"));\n+ qdict_put_str(d_a, \"string\", \"test2\");\n+ qdict_put_str(d_a, \"enum2\", \"value2\");\n \n d_data = qdict_new();\n qdict_put(d_data, \"a\", d_a);\n- qdict_put(d_data, \"b\", qstring_from_str(\"test3\"));\n- qdict_put(d_data, \"enum3\", qstring_from_str(\"value3\"));\n+ qdict_put_str(d_data, \"b\", \"test3\");\n+ qdict_put_str(d_data, \"enum3\", \"value3\");\n \n d = data->expect;\n- qdict_put(d, \"event\", qstring_from_str(\"EVENT_D\"));\n+ qdict_put_str(d, \"event\", \"EVENT_D\");\n qdict_put(d, \"data\", d_data);\n \n qapi_event_send_event_d(&a, \"test3\", false, NULL, true, ENUM_ONE_VALUE3,\ndiff --git a/tests/test-qobject-output-visitor.c b/tests/test-qobject-output-visitor.c\nindex c213fce..94b9518 100644\n--- a/tests/test-qobject-output-visitor.c\n+++ b/tests/test-qobject-output-visitor.c\n@@ -343,9 +343,9 @@ static void test_visitor_out_any(TestOutputVisitorData *data,\n \n visitor_reset(data);\n qdict = qdict_new();\n- qdict_put(qdict, \"integer\", qint_from_int(-42));\n- qdict_put(qdict, \"boolean\", qbool_from_bool(true));\n- qdict_put(qdict, \"string\", qstring_from_str(\"foo\"));\n+ qdict_put_int(qdict, \"integer\", -42);\n+ qdict_put_bool(qdict, \"boolean\", true);\n+ qdict_put_str(qdict, \"string\", \"foo\");\n qobj = QOBJECT(qdict);\n visit_type_any(data->ov, NULL, &qobj, &error_abort);\n qobject_decref(qobj);\ndiff --git a/util/qemu-option.c b/util/qemu-option.c\nindex 5ce1b5c..a36cafa 100644\n--- a/util/qemu-option.c\n+++ b/util/qemu-option.c\n@@ -1060,7 +1060,7 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict)\n qdict = qdict_new();\n }\n if (opts->id) {\n- qdict_put(qdict, \"id\", qstring_from_str(opts->id));\n+ qdict_put_str(qdict, \"id\", opts->id);\n }\n QTAILQ_FOREACH(opt, &opts->head, next) {\n val = QOBJECT(qstring_from_str(opt->str));\n", "prefixes": [ "18/79" ] }