From nobody Wed Nov 5 14:06:49 2025 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.zoho.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; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1498222545329569.1865116289254; Fri, 23 Jun 2017 05:55:45 -0700 (PDT) Received: from localhost ([::1]:35411 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dOO7j-0007xP-1O for importer@patchew.org; Fri, 23 Jun 2017 08:55:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60056) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dOO0p-0001aI-1k for qemu-devel@nongnu.org; Fri, 23 Jun 2017 08:48:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dOO0n-0004SE-50 for qemu-devel@nongnu.org; Fri, 23 Jun 2017 08:48:35 -0400 Received: from smtp1.ntua.gr ([2001:648:2000:de::183]:23055) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dOO0g-0004F0-1t; Fri, 23 Jun 2017 08:48:26 -0400 Received: from mail.ntua.gr (ppp141255063244.access.hol.gr [141.255.63.244]) (authenticated bits=0) by smtp1.ntua.gr (8.15.2/8.15.2) with ESMTPSA id v5NCllph058573 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 23 Jun 2017 15:47:47 +0300 (EEST) (envelope-from el13635@mail.ntua.gr) X-Authentication-Warning: smtp1.ntua.gr: Host ppp141255063244.access.hol.gr [141.255.63.244] claimed to be mail.ntua.gr From: Manos Pitsidianakis To: qemu-devel Date: Fri, 23 Jun 2017 15:46:58 +0300 Message-Id: <20170623124700.1389-7-el13635@mail.ntua.gr> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170623124700.1389-1-el13635@mail.ntua.gr> References: <20170623124700.1389-1-el13635@mail.ntua.gr> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:648:2000:de::183 Subject: [Qemu-devel] [PATCH RFC v3 6/8] block: add options parameter to bdrv_new_open_driver() 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: Kevin Wolf , Alberto Garcia , Stefan Hajnoczi , qemu-block 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" Allow passing a QDict *options parameter to bdrv_new_open_driver() so that it can be used if a driver needs it upon creation. The previous behaviour (empty bs->options and bs->explicit_options) remains when options is NULL. Signed-off-by: Manos Pitsidianakis --- block.c | 13 +++++++++---- block/commit.c | 4 ++-- block/mirror.c | 2 +- block/vvfat.c | 2 +- include/block/block.h | 2 +- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/block.c b/block.c index 694396281b..c7d9f8959a 100644 --- a/block.c +++ b/block.c @@ -1150,20 +1150,25 @@ free_and_fail: } =20 BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_= name, - int flags, Error **errp) + int flags, QDict *options, Error **= errp) { BlockDriverState *bs; int ret; =20 bs =3D bdrv_new(); bs->open_flags =3D flags; - bs->explicit_options =3D qdict_new(); - bs->options =3D qdict_new(); + if (options) { + bs->explicit_options =3D qdict_clone_shallow(options); + bs->options =3D qdict_clone_shallow(options); + } else { + bs->explicit_options =3D qdict_new(); + bs->options =3D qdict_new(); + } bs->opaque =3D NULL; =20 update_options_from_flags(bs->options, flags); =20 - ret =3D bdrv_open_driver(bs, drv, node_name, bs->options, flags, errp); + ret =3D bdrv_open_driver(bs, drv, node_name, options, flags, errp); if (ret < 0) { QDECREF(bs->explicit_options); QDECREF(bs->options); diff --git a/block/commit.c b/block/commit.c index af6fa68cf3..e855f20d7f 100644 --- a/block/commit.c +++ b/block/commit.c @@ -338,7 +338,7 @@ void commit_start(const char *job_id, BlockDriverState = *bs, /* Insert commit_top block node above top, so we can block consistent = read * on the backing chain below it */ commit_top_bs =3D bdrv_new_open_driver(&bdrv_commit_top, filter_node_n= ame, 0, - errp); + NULL, errp); if (commit_top_bs =3D=3D NULL) { goto fail; } @@ -486,7 +486,7 @@ int bdrv_commit(BlockDriverState *bs) backing_file_bs =3D backing_bs(bs); =20 commit_top_bs =3D bdrv_new_open_driver(&bdrv_commit_top, NULL, BDRV_O_= RDWR, - &local_err); + NULL, &local_err); if (commit_top_bs =3D=3D NULL) { error_report_err(local_err); goto ro_cleanup; diff --git a/block/mirror.c b/block/mirror.c index 19afcc6f1a..3ebe953f18 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1155,7 +1155,7 @@ static void mirror_start_job(const char *job_id, Bloc= kDriverState *bs, * reads on the top, while disabling it in the intermediate nodes, and= make * the backing chain writable. */ mirror_top_bs =3D bdrv_new_open_driver(&bdrv_mirror_top, filter_node_n= ame, - BDRV_O_RDWR, errp); + BDRV_O_RDWR, NULL, errp); if (mirror_top_bs =3D=3D NULL) { return; } diff --git a/block/vvfat.c b/block/vvfat.c index 8ab647c0c6..c8e8944947 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -3064,7 +3064,7 @@ static int enable_write_target(BlockDriverState *bs, = Error **errp) #endif =20 backing =3D bdrv_new_open_driver(&vvfat_write_target, NULL, BDRV_O_ALL= OW_RDWR, - &error_abort); + NULL, &error_abort); *(void**) backing->opaque =3D s; =20 bdrv_set_backing_hd(s->bs, backing, &error_abort); diff --git a/include/block/block.h b/include/block/block.h index a4f09df95a..e7db67c059 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -261,7 +261,7 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDict = *parent_options, BlockDriverState *bdrv_open(const char *filename, const char *reference, QDict *options, int flags, Error **errp); BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_= name, - int flags, Error **errp); + int flags, QDict *options, Error **= errp); BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue, BlockDriverState *bs, QDict *options, int flags); --=20 2.11.0