From patchwork Thu Oct 27 10:49:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 687552 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 3t4PJt5FJ4z9s2Q for ; Thu, 27 Oct 2016 22:08:43 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=0VNY02ff; dkim-atps=neutral Received: from localhost ([::1]:40294 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bziY4-0002uE-72 for incoming@patchwork.ozlabs.org; Thu, 27 Oct 2016 07:08:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46610) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bziFk-0003UT-UZ for qemu-devel@nongnu.org; Thu, 27 Oct 2016 06:49:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bziFk-00048A-2l for qemu-devel@nongnu.org; Thu, 27 Oct 2016 06:49:45 -0400 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:36319) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1bziFj-00047r-SW for qemu-devel@nongnu.org; Thu, 27 Oct 2016 06:49:44 -0400 Received: by mail-wm0-x241.google.com with SMTP id c17so2043235wmc.3 for ; Thu, 27 Oct 2016 03:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=eW5rRQiHIrRi/usaXSDAJmrHZ+cKtNAXUKu/JCk/0+k=; b=0VNY02ffDuVeMzeP/pT/F3mcX6zVaCbw/Zrx+jNsAmvWQPFqkMmuGnD+oaSO7MDsks iRaHF8Ehh3J0wwZiYhTey8OMp+wHT1/QqyddUvIAfU/GXrFZFsS0tOj051fEsVDl8H28 P1YBvtDbTLjmnc9OmZ5W4BKAB6tHkUMEzBfNLnOpdOCHuu69zk6uIs6QcsHe1YvIGqkC I0eZS6otCxyeLkE7VCmvt/AvRVO8F3ZYKRrmxiIpUBOGIGAjObrkhmiwxJ6xnpZHmAsO Xq0Z0XpglIbtOaVzJcpT3j/0V4ww5Rtm2W6+wgAiuVFK+2QbJg2Ez2+rXIKcpdZYc0Pb iKJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=eW5rRQiHIrRi/usaXSDAJmrHZ+cKtNAXUKu/JCk/0+k=; b=heXQmO75ydVygV5qN/v/LbvxpapYQXrsD1XjJVeHjNijPNo286hPFKlbpqLc63ZMC6 Hv6AzzETkkQ5VOkhA3zgt+WsTusl+mvzh39jbIMQNTQ9recdu87IYf1d2vVAySbGzGOC DxWUy5N0gg+l/ugTsbdQ1EL+HiDBoZlDnKbJW0Y76pYJemiNBY1F39jBHE4Gyagkm+/G J5mGL3DLOYAsw3liK6mdJhH2u2XTcCAdlrHd0wWCXF3p1iiCvA5m3eNFGEcl4J4Lhe4+ LoF80o3NVeW4H16Hfh4XN0r+gsDaUqsKac74B1gEsj6T6CY+ayHn+XAJ7PELuzE6C4xk oXUA== X-Gm-Message-State: ABUngvc4qH4kK6E93AHk01VqhS20d48uloZjxY9CNB9BYn1EZoJXiUrHIaHRsW4Ego5Rlg== X-Received: by 10.194.248.162 with SMTP id yn2mr6194579wjc.203.1477565382541; Thu, 27 Oct 2016 03:49:42 -0700 (PDT) Received: from donizetti.redhat.com ([149.6.153.187]) by smtp.gmail.com with ESMTPSA id n6sm7745304wjg.30.2016.10.27.03.49.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Oct 2016 03:49:41 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 27 Oct 2016 12:49:02 +0200 Message-Id: <1477565348-5458-15-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477565348-5458-1-git-send-email-pbonzini@redhat.com> References: <1477565348-5458-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PATCH 14/20] block: prepare bdrv_reopen_multiple to release AioContext 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, famz@redhat.com, stefanha@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" After the next patch bdrv_drain_all will have to be called without holding any AioContext. Prepare to do this by adding an AioContext argument to bdrv_reopen_multiple. Reviewed-by: Stefan Hajnoczi Signed-off-by: Paolo Bonzini --- block.c | 4 ++-- block/commit.c | 2 +- block/replication.c | 3 ++- include/block/block.h | 2 +- qemu-io-cmds.c | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/block.c b/block.c index 7f3e7bc..fbe485c 100644 --- a/block.c +++ b/block.c @@ -2082,7 +2082,7 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue, * to all devices. * */ -int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp) +int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error **errp) { int ret = -1; BlockReopenQueueEntry *bs_entry, *next; @@ -2131,7 +2131,7 @@ int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp) Error *local_err = NULL; BlockReopenQueue *queue = bdrv_reopen_queue(NULL, bs, NULL, bdrv_flags); - ret = bdrv_reopen_multiple(queue, &local_err); + ret = bdrv_reopen_multiple(bdrv_get_aio_context(bs), queue, &local_err); if (local_err != NULL) { error_propagate(errp, local_err); } diff --git a/block/commit.c b/block/commit.c index 9f67a8b..499ecca 100644 --- a/block/commit.c +++ b/block/commit.c @@ -251,7 +251,7 @@ void commit_start(const char *job_id, BlockDriverState *bs, orig_overlay_flags | BDRV_O_RDWR); } if (reopen_queue) { - bdrv_reopen_multiple(reopen_queue, &local_err); + bdrv_reopen_multiple(bdrv_get_aio_context(bs), reopen_queue, &local_err); if (local_err != NULL) { error_propagate(errp, local_err); block_job_unref(&s->common); diff --git a/block/replication.c b/block/replication.c index 3bd8356..02aeaaf 100644 --- a/block/replication.c +++ b/block/replication.c @@ -360,7 +360,8 @@ static void reopen_backing_file(BlockDriverState *bs, bool writable, } if (reopen_queue) { - bdrv_reopen_multiple(reopen_queue, &local_err); + bdrv_reopen_multiple(bdrv_get_aio_context(bs), + reopen_queue, &local_err); error_propagate(errp, local_err); } } diff --git a/include/block/block.h b/include/block/block.h index a9d7c0d..84257ab 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -218,7 +218,7 @@ BlockDriverState *bdrv_open(const char *filename, const char *reference, BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue, BlockDriverState *bs, QDict *options, int flags); -int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp); +int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error **errp); int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp); int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue, Error **errp); diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c index 3a3838a..dbe0413 100644 --- a/qemu-io-cmds.c +++ b/qemu-io-cmds.c @@ -1956,7 +1956,7 @@ static int reopen_f(BlockBackend *blk, int argc, char **argv) qemu_opts_reset(&reopen_opts); brq = bdrv_reopen_queue(NULL, bs, opts, flags); - bdrv_reopen_multiple(brq, &local_err); + bdrv_reopen_multiple(bdrv_get_aio_context(bs), brq, &local_err); if (local_err) { error_report_err(local_err); } else {