From nobody Sat May 4 02:45:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1528986678094524.4846777628044; Thu, 14 Jun 2018 07:31:18 -0700 (PDT) Received: from localhost ([::1]:41018 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fTTHR-0000WZ-65 for importer@patchew.org; Thu, 14 Jun 2018 10:31:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fTTG6-0008A9-9T for qemu-devel@nongnu.org; Thu, 14 Jun 2018 10:29:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fTTG5-0004wC-4O for qemu-devel@nongnu.org; Thu, 14 Jun 2018 10:29:54 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:32852 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fTTFy-0004sp-5j; Thu, 14 Jun 2018 10:29:46 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8F5A5406DE3D; Thu, 14 Jun 2018 14:29:45 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-117-1.ams2.redhat.com [10.36.117.1]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 494BA111D3CB; Thu, 14 Jun 2018 14:29:45 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 13A221138645; Thu, 14 Jun 2018 16:29:44 +0200 (CEST) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Thu, 14 Jun 2018 16:29:44 +0200 Message-Id: <20180614142944.10084-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Thu, 14 Jun 2018 14:29:45 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Thu, 14 Jun 2018 14:29:45 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'armbru@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH] block/crypto: Simplify block_crypto_{open, create}_opts_init() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" block_crypto_open_opts_init() and block_crypto_create_opts_init() contain a virtual visit of QCryptoBlockOptions and QCryptoBlockCreateOptions less member "format", respectively. Change their callers to put member "format" in the QDict, so they can use the generated visitors for these types instead. Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake --- block/crypto.c | 95 ++++++-------------------------------------------- block/crypto.h | 8 ++--- block/qcow.c | 5 ++- block/qcow2.c | 10 +++--- 4 files changed, 18 insertions(+), 100 deletions(-) diff --git a/block/crypto.c b/block/crypto.c index bc322b50f5..ea3b4aeb34 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -148,102 +148,26 @@ static QemuOptsList block_crypto_create_opts_luks = =3D { =20 =20 QCryptoBlockOpenOptions * -block_crypto_open_opts_init(QCryptoBlockFormat format, - QDict *opts, - Error **errp) +block_crypto_open_opts_init(QDict *opts, Error **errp) { Visitor *v; - QCryptoBlockOpenOptions *ret =3D NULL; - Error *local_err =3D NULL; - - ret =3D g_new0(QCryptoBlockOpenOptions, 1); - ret->format =3D format; + QCryptoBlockOpenOptions *ret; =20 v =3D qobject_input_visitor_new_keyval(QOBJECT(opts)); - - visit_start_struct(v, NULL, NULL, 0, &local_err); - if (local_err) { - goto out; - } - - switch (format) { - case Q_CRYPTO_BLOCK_FORMAT_LUKS: - visit_type_QCryptoBlockOptionsLUKS_members( - v, &ret->u.luks, &local_err); - break; - - case Q_CRYPTO_BLOCK_FORMAT_QCOW: - visit_type_QCryptoBlockOptionsQCow_members( - v, &ret->u.qcow, &local_err); - break; - - default: - error_setg(&local_err, "Unsupported block format %d", format); - break; - } - if (!local_err) { - visit_check_struct(v, &local_err); - } - - visit_end_struct(v, NULL); - - out: - if (local_err) { - error_propagate(errp, local_err); - qapi_free_QCryptoBlockOpenOptions(ret); - ret =3D NULL; - } + visit_type_QCryptoBlockOpenOptions(v, NULL, &ret, errp); visit_free(v); return ret; } =20 =20 QCryptoBlockCreateOptions * -block_crypto_create_opts_init(QCryptoBlockFormat format, - QDict *opts, - Error **errp) +block_crypto_create_opts_init(QDict *opts, Error **errp) { Visitor *v; - QCryptoBlockCreateOptions *ret =3D NULL; - Error *local_err =3D NULL; - - ret =3D g_new0(QCryptoBlockCreateOptions, 1); - ret->format =3D format; + QCryptoBlockCreateOptions *ret; =20 v =3D qobject_input_visitor_new_keyval(QOBJECT(opts)); - - visit_start_struct(v, NULL, NULL, 0, &local_err); - if (local_err) { - goto out; - } - - switch (format) { - case Q_CRYPTO_BLOCK_FORMAT_LUKS: - visit_type_QCryptoBlockCreateOptionsLUKS_members( - v, &ret->u.luks, &local_err); - break; - - case Q_CRYPTO_BLOCK_FORMAT_QCOW: - visit_type_QCryptoBlockOptionsQCow_members( - v, &ret->u.qcow, &local_err); - break; - - default: - error_setg(&local_err, "Unsupported block format %d", format); - break; - } - if (!local_err) { - visit_check_struct(v, &local_err); - } - - visit_end_struct(v, NULL); - - out: - if (local_err) { - error_propagate(errp, local_err); - qapi_free_QCryptoBlockCreateOptions(ret); - ret =3D NULL; - } + visit_type_QCryptoBlockCreateOptions(v, NULL, &ret, errp); visit_free(v); return ret; } @@ -281,8 +205,9 @@ static int block_crypto_open_generic(QCryptoBlockFormat= format, } =20 cryptoopts =3D qemu_opts_to_qdict(opts, NULL); + qdict_put_str(cryptoopts, "format", QCryptoBlockFormat_str(format)); =20 - open_opts =3D block_crypto_open_opts_init(format, cryptoopts, errp); + open_opts =3D block_crypto_open_opts_init(cryptoopts, errp); if (!open_opts) { goto cleanup; } @@ -605,8 +530,8 @@ static int coroutine_fn block_crypto_co_create_opts_luk= s(const char *filename, &block_crypto_create_opts_luk= s, true); =20 - create_opts =3D block_crypto_create_opts_init(Q_CRYPTO_BLOCK_FORMAT_LU= KS, - cryptoopts, errp); + qdict_put_str(cryptoopts, "format", "luks"); + create_opts =3D block_crypto_create_opts_init(cryptoopts, errp); if (!create_opts) { ret =3D -EINVAL; goto fail; diff --git a/block/crypto.h b/block/crypto.h index 0f985ea4e2..dd7d47903c 100644 --- a/block/crypto.h +++ b/block/crypto.h @@ -89,13 +89,9 @@ } =20 QCryptoBlockCreateOptions * -block_crypto_create_opts_init(QCryptoBlockFormat format, - QDict *opts, - Error **errp); +block_crypto_create_opts_init(QDict *opts, Error **errp); =20 QCryptoBlockOpenOptions * -block_crypto_open_opts_init(QCryptoBlockFormat format, - QDict *opts, - Error **errp); +block_crypto_open_opts_init(QDict *opts, Error **errp); =20 #endif /* BLOCK_CRYPTO_H__ */ diff --git a/block/qcow.c b/block/qcow.c index 1f866af0d3..7a90d0ef9a 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -202,9 +202,8 @@ static int qcow_open(BlockDriverState *bs, QDict *optio= ns, int flags, ret =3D -EINVAL; goto fail; } - qdict_del(encryptopts, "format"); - crypto_opts =3D block_crypto_open_opts_init( - Q_CRYPTO_BLOCK_FORMAT_QCOW, encryptopts, errp); + qdict_put_str(encryptopts, "format", "qcow"); + crypto_opts =3D block_crypto_open_opts_init(encryptopts, errp); if (!crypto_opts) { ret =3D -EINVAL; goto fail; diff --git a/block/qcow2.c b/block/qcow2.c index 6fa5e1d71a..e4ce74f29d 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1039,9 +1039,8 @@ static int qcow2_update_options_prepare(BlockDriverSt= ate *bs, ret =3D -EINVAL; goto fail; } - qdict_del(encryptopts, "format"); - r->crypto_opts =3D block_crypto_open_opts_init( - Q_CRYPTO_BLOCK_FORMAT_QCOW, encryptopts, errp); + qdict_put_str(encryptopts, "format", "qcow"); + r->crypto_opts =3D block_crypto_open_opts_init(encryptopts, errp); break; =20 case QCOW_CRYPT_LUKS: @@ -1052,9 +1051,8 @@ static int qcow2_update_options_prepare(BlockDriverSt= ate *bs, ret =3D -EINVAL; goto fail; } - qdict_del(encryptopts, "format"); - r->crypto_opts =3D block_crypto_open_opts_init( - Q_CRYPTO_BLOCK_FORMAT_LUKS, encryptopts, errp); + qdict_put_str(encryptopts, "format", "luks"); + r->crypto_opts =3D block_crypto_open_opts_init(encryptopts, errp); break; =20 default: --=20 2.17.1