From nobody Mon May 13 14:52:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=web.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162661982922858.709731204926356; Sun, 18 Jul 2021 07:50:29 -0700 (PDT) Received: from localhost ([::1]:37942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m587g-0007dv-4i for importer@patchew.org; Sun, 18 Jul 2021 10:50:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m5860-00053b-NJ; Sun, 18 Jul 2021 10:48:44 -0400 Received: from mout.web.de ([212.227.15.4]:47927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m585y-0006al-Sk; Sun, 18 Jul 2021 10:48:44 -0400 Received: from gecko.fritz.box ([89.247.255.49]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MPKB7-1lkXlW0FPJ-00PIqG; Sun, 18 Jul 2021 16:48:27 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626619707; bh=mo37842ZcCneXuNNELXoRfP7tT44+hgbDC62XN80mMU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=XUwo9oggSiAMsYxP8asLkP6hZGYza4LIRz+qfDr61XO4nqtDEFjIaHiLbvb5/LMyU i7cOr/K7CRi9gPA/7u9WDjTosDA8J20A7rK/PW8I0RCPtjwa7rIp1+cUfKnNi0C/ne mwvZRBF9vB+FYH+Ruh12USakZsqGbGsD45YjtiWw= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 18 Jul 2021 16:48:24 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v6 1/4] replication: Remove s->active_disk Message-ID: <2534f867ea9be5b666dfce19744b7d4e2b96c976.1626619393.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/xnNNE2LNqNxdnLlyife6AHu"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:Whbm+Lof7bDsksclQHIInhM+nScSx2lpC6nl3JmEnWMbi28QxZd mD4kYCIKr0Cv9JTP2Cch8knH0NMDO9GyDkRlILlnUIPNzNp7f3ElFwDL32e8PyydOfv01Qh mkrkv+TgKfGVo04uJl2N7JNDmyeoYRec1TTlbQDVHCY1ZrsQgTrTu33nQAa9/6FvYFL5DaR fnlOKY1IfN1ljo52cPRRQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:cDLnOfe6/g8=:E+Ug47lBxiUMdji9+C2kk1 Ddp2u/GvxNKRvDKoKFNvHkQr+HzlHcNkvSZaECALc/QTo4Brz1AFzNvf1NOUrogzpGN4hFvTJ 04zKH/kUlz8U7GIITjESGLQuP9krmmE9RcyMmHxl5okl104mLbW4b7Fur1M8Lr6BKPPObEDwC 7NfJkC6asOrM0CWiCHInBMcfWUq1fBMBFJzmRofwDFU67rhvy0oAqPMp+XHPR5UxWZpIHg4HI e7E0mUd6gv/Q5fd1yZzP2P8OxLjbBrSXpNUAPYvodQQ1XXL7tBGnfNMRdF7FB2hxQEq6Mw2BN ZNeO7U/0Ti5kUJGXNMUeJD6iwFgVp1ztfpcA+0ltF2XuPYSf+fqVlLkUZ7bTVaJLDPtHL5XKx nPttV5NkGuCmwllwk3r418Yjr2VzLFtDhRR0RGC6r3YO4TIMqBaZ8x/Se7fY3YLgobadj7XTZ b6wFDgWAsMTiLHRccRmZgWe1zHObKcoCyTPmlYQapABXJsiJW5b+dSdN/ak+vy9sa2J4tcb7D d3Ar3Tu0JCuXVMfUiy6JSwrRKpdGjaZ0iyKTAy7OMOa2aSDzZsSbfYjIGjxiu2IED5RUMP0+M NQSg2IBd+PK62wEASVdbx85Gn15KsVBqGxJXbIK8pXQjeoj1R6vJRkKzJz+FN9rVl0qE7Z7xp CVIJNQg88spx9BSvvb54G7Qvf88/SrJj6HCNR7DXfRF0sy55Vh+sAOVVJ0PbY6j2suEtf495W G5zD5VtpVClHnuU+CBPD+n4ILZl0nXo4DID3Px+nKateyYhZlltk2StcGAUlUK+7dDNkkIgpc /QlJMBSTuAbyKwEoIgcDDdp2OGCEcfE8dvx2GVlVXJjdWMHP8z4nnSx/3vjJm8y3G/gaYnmTw k7+RlSxHRXSzbPUug0ZLy+pbC+gqWDorajxpiMyyEksXIkkDACtXqhp7hUGEXHJ7AoSRmqRHl rVK3b2+KHmZgU/BVu4zUfeBNsSW6FYSArtZAxqi1WD7Zr8Qrvvs7DcD3EAAdQ/SvlXg87WiU1 cYf5PlNZMYy7/h9uLcOFnotPfiUcySlyBEdObKoO35e1VKPWgOaVF0doXQAmH4ccKbOB/Xlc3 cNl/1bzjQ3XwLsNtKpuD/M2PVciX1bKU8NE Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block , Wen Congyang , Xie Changlong , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1626619830440100001 --Sig_/xnNNE2LNqNxdnLlyife6AHu Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" s->active_disk is bs->file. Remove it and use local variables instead. Signed-off-by: Lukas Straub Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Zhang Chen --- block/replication.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/block/replication.c b/block/replication.c index 774e15df16..9ad2dfdc69 100644 --- a/block/replication.c +++ b/block/replication.c @@ -35,7 +35,6 @@ typedef enum { typedef struct BDRVReplicationState { ReplicationMode mode; ReplicationStage stage; - BdrvChild *active_disk; BlockJob *commit_job; BdrvChild *hidden_disk; BdrvChild *secondary_disk; @@ -307,8 +306,10 @@ out: return ret; } -static void secondary_do_checkpoint(BDRVReplicationState *s, Error **errp) +static void secondary_do_checkpoint(BlockDriverState *bs, Error **errp) { + BDRVReplicationState *s =3D bs->opaque; + BdrvChild *active_disk =3D bs->file; Error *local_err =3D NULL; int ret; @@ -323,13 +324,13 @@ static void secondary_do_checkpoint(BDRVReplicationSt= ate *s, Error **errp) return; } - if (!s->active_disk->bs->drv) { + if (!active_disk->bs->drv) { error_setg(errp, "Active disk %s is ejected", - s->active_disk->bs->node_name); + active_disk->bs->node_name); return; } - ret =3D bdrv_make_empty(s->active_disk, errp); + ret =3D bdrv_make_empty(active_disk, errp); if (ret < 0) { return; } @@ -458,6 +459,7 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, BlockDriverState *bs =3D rs->opaque; BDRVReplicationState *s; BlockDriverState *top_bs; + BdrvChild *active_disk; int64_t active_length, hidden_length, disk_length; AioContext *aio_context; Error *local_err =3D NULL; @@ -495,15 +497,14 @@ static void replication_start(ReplicationState *rs, R= eplicationMode mode, case REPLICATION_MODE_PRIMARY: break; case REPLICATION_MODE_SECONDARY: - s->active_disk =3D bs->file; - if (!s->active_disk || !s->active_disk->bs || - !s->active_disk->bs->backing) { + active_disk =3D bs->file; + if (!active_disk || !active_disk->bs || !active_disk->bs->backing)= { error_setg(errp, "Active disk doesn't have backing file"); aio_context_release(aio_context); return; } - s->hidden_disk =3D s->active_disk->bs->backing; + s->hidden_disk =3D active_disk->bs->backing; if (!s->hidden_disk->bs || !s->hidden_disk->bs->backing) { error_setg(errp, "Hidden disk doesn't have backing file"); aio_context_release(aio_context); @@ -518,7 +519,7 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, } /* verify the length */ - active_length =3D bdrv_getlength(s->active_disk->bs); + active_length =3D bdrv_getlength(active_disk->bs); hidden_length =3D bdrv_getlength(s->hidden_disk->bs); disk_length =3D bdrv_getlength(s->secondary_disk->bs); if (active_length < 0 || hidden_length < 0 || disk_length < 0 || @@ -530,9 +531,9 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, } /* Must be true, or the bdrv_getlength() calls would have failed */ - assert(s->active_disk->bs->drv && s->hidden_disk->bs->drv); + assert(active_disk->bs->drv && s->hidden_disk->bs->drv); - if (!s->active_disk->bs->drv->bdrv_make_empty || + if (!active_disk->bs->drv->bdrv_make_empty || !s->hidden_disk->bs->drv->bdrv_make_empty) { error_setg(errp, "Active disk or hidden disk doesn't support make_em= pty"); @@ -586,7 +587,7 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, s->stage =3D BLOCK_REPLICATION_RUNNING; if (s->mode =3D=3D REPLICATION_MODE_SECONDARY) { - secondary_do_checkpoint(s, errp); + secondary_do_checkpoint(bs, errp); } s->error =3D 0; @@ -615,7 +616,7 @@ static void replication_do_checkpoint(ReplicationState = *rs, Error **errp) } if (s->mode =3D=3D REPLICATION_MODE_SECONDARY) { - secondary_do_checkpoint(s, errp); + secondary_do_checkpoint(bs, errp); } aio_context_release(aio_context); } @@ -652,7 +653,6 @@ static void replication_done(void *opaque, int ret) if (ret =3D=3D 0) { s->stage =3D BLOCK_REPLICATION_DONE; - s->active_disk =3D NULL; s->secondary_disk =3D NULL; s->hidden_disk =3D NULL; s->error =3D 0; @@ -705,7 +705,7 @@ static void replication_stop(ReplicationState *rs, bool= failover, Error **errp) } if (!failover) { - secondary_do_checkpoint(s, errp); + secondary_do_checkpoint(bs, errp); s->stage =3D BLOCK_REPLICATION_DONE; aio_context_release(aio_context); return; @@ -713,7 +713,7 @@ static void replication_stop(ReplicationState *rs, bool= failover, Error **errp) s->stage =3D BLOCK_REPLICATION_FAILOVER; s->commit_job =3D commit_active_start( - NULL, s->active_disk->bs, s->secondary_disk->b= s, + NULL, bs->file->bs, s->secondary_disk->bs, JOB_INTERNAL, 0, BLOCKDEV_ON_ERROR_REPORT, NULL, replication_done, bs, true, errp); break; -- 2.20.1 --Sig_/xnNNE2LNqNxdnLlyife6AHu Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmD0PzgACgkQNasLKJxd sliZ1Q//WJCZMZ3DnZshz0rArD3DytmAmGoazBQAzAn138SLc2UnT8CXHIfK/dDp ReXIgMBqOYOT5Tk92fSV0jpS9fkFZHgPW6HeeTczKdqcyfK2foQ9y8wTubwmAzvU 2Y96vV94R7qBky1M0n8Z7ewoJoche0+4t2Qxs2iOdumMd6rIXHwmwojR/5pzofZg cLo1Ba5vE4mgbMyrFbX1adYwixd3rB2IPflIClfroF4mX0UEJtJadKUnX0Wm+njs sYLyrwN8aeKGfTt6oaWtPFMvDpzymGObTorwbWue0VxCzGkhQ/UjJ1bwp8fdnQlz Dpmu2TWMuzetrT2q5Tiyh+NknsoJ0QXtdUG5tYQygCm7B2qS/XiG2yC44DFQicPD R42XjVZD2pqD/bL0MU/HOpzWqfYB9jpa3AfH4pLfHnQ2cNn+xX2FRbzE2Cpz6BwJ Z0wgu5BzSadGF/DlhMY7t1Y3TsFkKtaL6NkM+M7dIx3W1wm1FaCTprGweComMPwF oml+TXgAhooh4c0gQIIRZLTgf/oF8Sf1silvxklylQXCyWb8AXA8WRrDxphjBnmJ SLjsAL8vwmwSTF4VB4kXexv+yY4CU5ITQ9m9kqrvUh56aO7w2AfKKV0MAc9yi1cw BJ4n8NicrN+7WppwEpgH6p4J6zn7B5OFXiEoalXMO/mfndfQjLY= =DEKz -----END PGP SIGNATURE----- --Sig_/xnNNE2LNqNxdnLlyife6AHu-- From nobody Mon May 13 14:52:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=web.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1626619976514456.9647510863829; Sun, 18 Jul 2021 07:52:56 -0700 (PDT) Received: from localhost ([::1]:45132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m58A3-0004I2-Iy for importer@patchew.org; Sun, 18 Jul 2021 10:52:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m5864-0005BP-5C; Sun, 18 Jul 2021 10:48:48 -0400 Received: from mout.web.de ([212.227.15.3]:55767) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m5862-0006da-99; Sun, 18 Jul 2021 10:48:47 -0400 Received: from gecko.fritz.box ([89.247.255.49]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LaTtv-1lP91c2AN5-00mKW9; Sun, 18 Jul 2021 16:48:31 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626619711; bh=RcT51x0uGvx/VXymThtSy6KzgjNEbcTDd+d3Y151Mok=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=rMV0RUsYCuvZv/V4by3epUl0DS0jtshrg0aXxKGWhbja9HGdjRCCdbIZvgwTjIiaW 043t4odiAvqI7QcMUAPdz2gY252a88xGqSH0xSenZxuil+YIiXawRXc3pvAmy5zM0G FFmkV5f+QRj5HP8yNedu94YnlvBc0ruuqxl3wNQw= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 18 Jul 2021 16:48:29 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v6 2/4] replication: Reduce usage of s->hidden_disk and s->secondary_disk Message-ID: <1eb9dc179267207d9c7eccaeb30761758e32e9ab.1626619393.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/.eBmBUJdEd8e_Js_lsPu_.e"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:ZbTro+QLBFe86VqB8VcX1ZNfSVZgFvoEvwiEeU8d4TIPGu+DiM8 JbRLPhv+7xi2kecP/klKp3BF+d9loAyFaQOnsZYUIFNs5CWRtxSp7LikCNO057dCqCROykJ hBsTqPXq2/t0aTm+I/n3FgADGYlOQuW/djA5aKhcHDVVpk/hPLhohcYUH6N8O9Ccoz8fqFJ Ttetmks4kJxDxAyQhRv8Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:qN293fo1s2g=:niBsgR8yaGaPR7sbIEj+m5 gDlUCkYLvPG2JSBsRi8umC8h5mQtLKUjxPCI02xmXO/MFhecrfzkcvNNmP7XaclLdx4zISKSP SK6B1L/EncwoAO22Va3hxaOEHXDxzeV2sexCrtL1FKU3E4Yjpr3/2JTPVs+l1X76xNs3OWv92 jCquDPwvAl0Dp3GovKHaEwF6sT+nXB7vQ3BcKtFm5P+DxawdUfK5b5+ao1vIFGInXeYYdrQ3h SM8L7TXj/UPGXXuUwC6yfbBT1lrvVa9AhukdtH8Ld+i1Scc/AnyCaVpMc1nwaM+Sr2pwS16UK EeOhC27hBOYzJWFV2lLPSCZIivcvmS9JMVYhaqhOSEvayR2C119wY3OoU5dchQOcXpZlvZ8s6 0m1DXA/+oqv7Y/9QJuEhgiL/joIgYCLNzxbynbGYSFCk37GMb4BRo+rmHIXcxWHdfUUfEei8i 5I+7LOiN9Pk8VEE8rvn0gABT0pFAWSjai5FnJpC2S7Mu8S7p/HmCghvukzUGGHuY9KYIX/M3F zl/ysrXjC7CYAUidWRoFtdINZernBPRnudKABA/cLRMvglyvcnphMRKmjQddJgSfj56fD/a1g es98Uij3vkNnxBuDZuRFSu40dEU4gM2dzuGNgXd84cXpM0JINYkdZT2HAXmhAHQAUfgX1+uET k9a0I2EZpKmHoWOGzDNyODQawAbb0/6YEF4Ug3XilbqWqj+ExkdfhNJU58I/5o08zZH+clC7v tjNYVUcvCzC5ypuyK43UseA4/uOIxNP5o9009J1YGDkXecKxkPv3zYrfDT20Lla3ZrcSZ4v1G n6f+CqDnV+UZN9VnHQBOcJdYYYwILw8HVDgbvt1YGirPNP/Fa8H/EhMTfBwONb/podWUwjEeE YTx+hw8g0zlGXQC8yf2OHFQpB8VwhuNrGxdNML/zlB7QfVSTYhTgADlR4s6DBu9QXmW30VfdX yUOZE4ycXFQi2phHrHtwpZR1QU1jxvVXHv1JG6OK5WOo6OOt81eKw+ULR/WXLowDXo3t8rI0g qTyFho6ST55VfucSDVYj6hGS47QTFtxf3M/TEGHKBKzBcbMdu23gT2pGSR3N/1LHtxrySiXEW 805GWn9DccuCpBY5gpHacHKFfacepUM0F7j Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block , Wen Congyang , Xie Changlong , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1626619977053100001 --Sig_/.eBmBUJdEd8e_Js_lsPu_.e Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In preparation for the next patch, initialize s->hidden_disk and s->secondary_disk later and replace access to them with local variables in the places where they aren't initialized yet. Signed-off-by: Lukas Straub Reviewed-by: Vladimir Sementsov-Ogievskiy --- block/replication.c | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/block/replication.c b/block/replication.c index 9ad2dfdc69..25bbdf5d4b 100644 --- a/block/replication.c +++ b/block/replication.c @@ -366,27 +366,35 @@ static void reopen_backing_file(BlockDriverState *bs,= bool writable, Error **errp) { BDRVReplicationState *s =3D bs->opaque; + BdrvChild *hidden_disk, *secondary_disk; BlockReopenQueue *reopen_queue =3D NULL; + /* + * s->hidden_disk and s->secondary_disk may not be set yet, as they wi= ll + * only be set after the children are writable. + */ + hidden_disk =3D bs->file->bs->backing; + secondary_disk =3D hidden_disk->bs->backing; + if (writable) { - s->orig_hidden_read_only =3D bdrv_is_read_only(s->hidden_disk->bs); - s->orig_secondary_read_only =3D bdrv_is_read_only(s->secondary_dis= k->bs); + s->orig_hidden_read_only =3D bdrv_is_read_only(hidden_disk->bs); + s->orig_secondary_read_only =3D bdrv_is_read_only(secondary_disk->= bs); } - bdrv_subtree_drained_begin(s->hidden_disk->bs); - bdrv_subtree_drained_begin(s->secondary_disk->bs); + bdrv_subtree_drained_begin(hidden_disk->bs); + bdrv_subtree_drained_begin(secondary_disk->bs); if (s->orig_hidden_read_only) { QDict *opts =3D qdict_new(); qdict_put_bool(opts, BDRV_OPT_READ_ONLY, !writable); - reopen_queue =3D bdrv_reopen_queue(reopen_queue, s->hidden_disk->b= s, + reopen_queue =3D bdrv_reopen_queue(reopen_queue, hidden_disk->bs, opts, true); } if (s->orig_secondary_read_only) { QDict *opts =3D qdict_new(); qdict_put_bool(opts, BDRV_OPT_READ_ONLY, !writable); - reopen_queue =3D bdrv_reopen_queue(reopen_queue, s->secondary_disk= ->bs, + reopen_queue =3D bdrv_reopen_queue(reopen_queue, secondary_disk->b= s, opts, true); } @@ -401,8 +409,8 @@ static void reopen_backing_file(BlockDriverState *bs, b= ool writable, } } - bdrv_subtree_drained_end(s->hidden_disk->bs); - bdrv_subtree_drained_end(s->secondary_disk->bs); + bdrv_subtree_drained_end(hidden_disk->bs); + bdrv_subtree_drained_end(secondary_disk->bs); } static void backup_job_cleanup(BlockDriverState *bs) @@ -459,7 +467,7 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, BlockDriverState *bs =3D rs->opaque; BDRVReplicationState *s; BlockDriverState *top_bs; - BdrvChild *active_disk; + BdrvChild *active_disk, *hidden_disk, *secondary_disk; int64_t active_length, hidden_length, disk_length; AioContext *aio_context; Error *local_err =3D NULL; @@ -504,15 +512,15 @@ static void replication_start(ReplicationState *rs, R= eplicationMode mode, return; } - s->hidden_disk =3D active_disk->bs->backing; - if (!s->hidden_disk->bs || !s->hidden_disk->bs->backing) { + hidden_disk =3D active_disk->bs->backing; + if (!hidden_disk->bs || !hidden_disk->bs->backing) { error_setg(errp, "Hidden disk doesn't have backing file"); aio_context_release(aio_context); return; } - s->secondary_disk =3D s->hidden_disk->bs->backing; - if (!s->secondary_disk->bs || !bdrv_has_blk(s->secondary_disk->bs)= ) { + secondary_disk =3D hidden_disk->bs->backing; + if (!secondary_disk->bs || !bdrv_has_blk(secondary_disk->bs)) { error_setg(errp, "The secondary disk doesn't have block backen= d"); aio_context_release(aio_context); return; @@ -520,8 +528,8 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, /* verify the length */ active_length =3D bdrv_getlength(active_disk->bs); - hidden_length =3D bdrv_getlength(s->hidden_disk->bs); - disk_length =3D bdrv_getlength(s->secondary_disk->bs); + hidden_length =3D bdrv_getlength(hidden_disk->bs); + disk_length =3D bdrv_getlength(secondary_disk->bs); if (active_length < 0 || hidden_length < 0 || disk_length < 0 || active_length !=3D hidden_length || hidden_length !=3D disk_le= ngth) { error_setg(errp, "Active disk, hidden disk, secondary disk's l= ength" @@ -531,10 +539,10 @@ static void replication_start(ReplicationState *rs, R= eplicationMode mode, } /* Must be true, or the bdrv_getlength() calls would have failed */ - assert(active_disk->bs->drv && s->hidden_disk->bs->drv); + assert(active_disk->bs->drv && hidden_disk->bs->drv); if (!active_disk->bs->drv->bdrv_make_empty || - !s->hidden_disk->bs->drv->bdrv_make_empty) { + !hidden_disk->bs->drv->bdrv_make_empty) { error_setg(errp, "Active disk or hidden disk doesn't support make_em= pty"); aio_context_release(aio_context); @@ -549,6 +557,9 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, return; } + s->hidden_disk =3D hidden_disk; + s->secondary_disk =3D secondary_disk; + /* start backup job now */ error_setg(&s->blocker, "Block device is in use by internal backup job"); -- 2.20.1 --Sig_/.eBmBUJdEd8e_Js_lsPu_.e Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmD0Pz0ACgkQNasLKJxd slgTJQ/8CkCMDzzeT6AGpK1oZ6MvOLEI5m5H5v/IzCXN9ucJTMVUVs9jOCKy9iSb A0/Yjhd/V35d4XJEMnlEo5KKxt1ZKU7acWdEZ2voxQaKqEHiAYWFMzPqa1EyvMAs gKINpdDavGWdarHbc3duu6ftFPrlhbVdLZtTWS146cz8BJ/KyMJ0074dfe7eyjif ej4sdpAC1mTCR3uohQ8NSOqe6hVVt3zWi3ikD4d3u1e6YoNv/YeIApyJBlbaWpHm BBOQ45e5r04uNOl/dDCWtIu0Yr3VFufInuWx6qH36U+WEaWv8tGzZCXXrSpqmEem rZ8sBFTXC5Zzz+p7XkJyZBXZsZVlg8glF1+LK1FaiL2h7vyMyU9f+o6n+J0qaLCS PHI5tji9rE3Ui2pLqUf21yW1Nm86EFBd9B3sPpaqyphKnwWcSZxjuh9zlNLyle9j 3LqzwWsKllLtAk63hyIE7tFO1mvekmvmQEkJ5CzfE+aZ3PQKXW17AfuMNV0ZUqmx 0+z6t0+LNHfC4RqQY17mkGEAB038KiLc9BvEVOXMhO5gcZHgVfOqv3tLW64VuvdV MX4t8jICb/G2QblEHoWXu45oBALbb8sMjp+jOPZVjmOQSOaTtQk033T06JD1p5FU aqjiHxYXAIsP8Z28FKG+qMCqiQY2euv4MttjDD/quwxJVvVPov4= =tG7G -----END PGP SIGNATURE----- --Sig_/.eBmBUJdEd8e_Js_lsPu_.e-- From nobody Mon May 13 14:52:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=web.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1626619955276892.179846825038; Sun, 18 Jul 2021 07:52:35 -0700 (PDT) Received: from localhost ([::1]:44654 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m589i-0003xd-6H for importer@patchew.org; Sun, 18 Jul 2021 10:52:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m5865-0005Fp-Sg; Sun, 18 Jul 2021 10:48:49 -0400 Received: from mout.web.de ([212.227.15.4]:47097) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m5864-0006ee-1W; Sun, 18 Jul 2021 10:48:49 -0400 Received: from gecko.fritz.box ([89.247.255.49]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LZvfZ-1lOb5K37NN-00lmGG; Sun, 18 Jul 2021 16:48:35 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626619716; bh=N5lx1n+FmWrGGPFXhrHbEwqzKxw+96SNpsfYoSYG6C0=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=s5j4yscwKAVSHFAuNN7/23veKi09SH4k8OWa6njWqaX7drGyA4iIzL+L6I1bOsFP2 /mqW138Q8wnd93DjUGG9VcxHiWiq+V5/LgxKJ0FJrPt+4ITemjiNjH9PqRmWVQJ9rh BSBzyASsGqI4FyZYj6rh4HQPAXyjs8sAuVX7VebM= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 18 Jul 2021 16:48:33 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v6 3/4] replication: Properly attach children Message-ID: <5d0539d729afb8072d0d7cde977c5066285591b4.1626619393.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/RZHpnrGRnZmXSu_YEnZN/t+"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:QKPLLz5zud7s6bdSttrgjU8/h72t8FIWxow1Eroiu1v/TyeCnBd qBHBrx9qE+S4DFBh8ragN2FKhHuDwUNbVCqUm5G2h3oXMd/t3jloI7DD24WQUORxSKohoml uqp8avkPqMdIsg3FUEIisSJ+MFSH+6l+iH9Bt+CrxGNUI6RTSeNLCnZHZp8Yla1mzETeiTs 5Ms8B8r8XFoBKAXT2g2/Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:XLGM+kjdlc0=:Vb3kZ1wvAI08aE3ODw99Fo syW5asjcGEPX0rWn+gAUahBEcJw2f5iurahTtYtG2csnmOHpgg3g8uKwRvbZ0vF4ysLtx8pAv nXfKb4y/+Z9A2yN+kYJpPz12OO4FK20pIu2vkbNzAvTgI2DG/ZwvXVd60HB/8DKVaggLuCzj6 RZuTKHicoiiYZQka/lGvp/X4a1fXKiIL/ksHXhz6r8gjefsvbkpPArlfNIrylpmS4KneXfm8E AeBQ4ChdBio5io9P6QHQZHpei5/Pov7W9pREHB3JoO9lLX3weu1Bzh3+JKsaDJiT2Eq3YhFtq 1Bai88HQtA7xOtca/QQvxgNSOf4FdmRZ45r5HwV+FlaSUtpyaz53SRBLRHcnmzlpIq3D6bztf 3VDVocm0pYGb/InhyjXTuI/GFGN/XE3fmntc5nX0IOoT8ZAm2O+D58d0xs8UFvAb/Xnqmi74t bN56aGMwxggyi2a5wZCMIUKqMZQU2FkGqTCXsc2lrdLp7bY0emvub+gBzVZECR9qzT0m3kzbC D+0oQaau5q5ONQt/aQBdZH97f3yq6RZrFzvsOeBoYfchVbKrd5Isdtb2UgAzHxJYMiEj4plsO LloW0FjnRysFVV3pVs6NeG4EuMAnbd7aCY4OvxiNtihVVj6AFcu0YL11qzOKWOcFDp/Tjp69Q 7iWHnfWbBCDhHgrHv7ZjmRYvjULUOvQEW2ULhDodgnvGeX8TqFUXmL9hJoCTBOnCSwodcrLvl g3Iu0+sPwYtK38pZ4W4IWXJe0OEJ3Uw6F/6BNXiCmyaGE8EQY7sUqf0/4sCqC6RvDkKDyyKpH pp9HwquwDQnmJxAXBOq+BuTzSMTobEwWAEk6Zkb3nB1f/lHmqZLRIgez71zphLpCtdiPB5sv0 Oiwql8ojTlZBDCgIdn/ic+64+Z2ELWK0P5eQZJg2UDC0qsX2UzgMb8OZ6VyfOr8t3/o3/2+Jz EQpex9RVgSp77PKC8606Lv4CgZE2xZOQdE2qBPoxjL74QGTjSkPkmnU6BiPPe6RUuhKgbDWmJ W6ce6+EAymtLTja53NtlWQT5iPSkMkdu+vQyQySVRGkUY21fzLfrDOUSKDAXQ26N4y6/nhYaP H6HPueD7bKfF/cRL136hqdw7th+QJbhs16e Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block , Wen Congyang , Xie Changlong , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1626619956189100001 --Sig_/RZHpnrGRnZmXSu_YEnZN/t+ Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The replication driver needs access to the children block-nodes of it's child so it can issue bdrv_make_empty() and bdrv_co_pwritev() to manage the replication. However, it does this by directly copying the BdrvChilds, which is wrong. Fix this by properly attaching the block-nodes with bdrv_attach_child() and requesting the required permissions. This ultimatively fixes a potential crash in replication_co_writev(), because it may write to s->secondary_disk if it is in state BLOCK_REPLICATION_FAILOVER_FAILED, without requesting write permissions first. And now the workaround in secondary_do_checkpoint() can be removed. Signed-off-by: Lukas Straub Reviewed-by: Vladimir Sementsov-Ogievskiy --- block/replication.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/block/replication.c b/block/replication.c index 25bbdf5d4b..b74192f795 100644 --- a/block/replication.c +++ b/block/replication.c @@ -165,7 +165,12 @@ static void replication_child_perm(BlockDriverState *b= s, BdrvChild *c, uint64_t perm, uint64_t shared, uint64_t *nperm, uint64_t *nshared) { - *nperm =3D BLK_PERM_CONSISTENT_READ; + if (role & BDRV_CHILD_PRIMARY) { + *nperm =3D BLK_PERM_CONSISTENT_READ; + } else { + *nperm =3D 0; + } + if ((bs->open_flags & (BDRV_O_INACTIVE | BDRV_O_RDWR)) =3D=3D BDRV_O_R= DWR) { *nperm |=3D BLK_PERM_WRITE; } @@ -557,8 +562,25 @@ static void replication_start(ReplicationState *rs, Re= plicationMode mode, return; } - s->hidden_disk =3D hidden_disk; - s->secondary_disk =3D secondary_disk; + bdrv_ref(hidden_disk->bs); + s->hidden_disk =3D bdrv_attach_child(bs, hidden_disk->bs, "hidden = disk", + &child_of_bds, BDRV_CHILD_DATA, + &local_err); + if (local_err) { + error_propagate(errp, local_err); + aio_context_release(aio_context); + return; + } + + bdrv_ref(secondary_disk->bs); + s->secondary_disk =3D bdrv_attach_child(bs, secondary_disk->bs, + "secondary disk", &child_of_= bds, + BDRV_CHILD_DATA, &local_err); + if (local_err) { + error_propagate(errp, local_err); + aio_context_release(aio_context); + return; + } /* start backup job now */ error_setg(&s->blocker, @@ -664,7 +686,9 @@ static void replication_done(void *opaque, int ret) if (ret =3D=3D 0) { s->stage =3D BLOCK_REPLICATION_DONE; + bdrv_unref_child(bs, s->secondary_disk); s->secondary_disk =3D NULL; + bdrv_unref_child(bs, s->hidden_disk); s->hidden_disk =3D NULL; s->error =3D 0; } else { -- 2.20.1 --Sig_/RZHpnrGRnZmXSu_YEnZN/t+ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmD0P0EACgkQNasLKJxd sljJLRAAkuNIR3BQAXSUjI5+Ttqhef1/Vc1T8KWGpwvFkhV8m3GYsyhIrgCBtSnl 6PUciLfJXPG8xAvupiY6l0fEmp0y4WyqmLzgttHUyDnUL1DXShI+vAebyRJ+jD70 hTLI8MXEjq32GvfmyaP0DtmlqyNx5/hrdzbpMcLW+D2CFCcUhNzrVUoNNAax7ru4 i02LiwoumNXpn3+frWz/lSBbF5MARKoz1CecTZeXG+O+0Bj1euUfJD1wtmuALbC7 Xv5HmgxQ3jeTfYfIAqa1UHqThPgGJ7+1rhYPlsAx2A6tpPF4tQ/e+sMWrEpo4nvz Q0olHpCeZsaKdeZp+DCec8GfZPRe/r8w6MwKq+bxayfHkjOpCsHrRLb2GAQTjlCy kUPX67uj9nfPuCT3eM7kWYQmP6+b08TlyZGCbhYaHmsB733uJwWZr102HdNOCeIQ pf7LzGSJ5/d1MJgUWtjWawthWgvrOwEGo9wRdI5+0QdeL9weE05vAvPyiPXJ610r IAEJiVVNII+/yXZuLkoR7YMrQSGMA4x9Qmnuo/r8gj5KWc85rhg1N309DXocWSlW J/eqYXqtqNyjlqycWGfqimfGbGJnk1DEKpJ3UU1WOg/dTZI+ENmqdDkWlC4tEFS6 uP+5TACmdS3zD4DQOKOTJaukqxwkFqc2M2RLwbYnUiekHpneJhU= =dpHp -----END PGP SIGNATURE----- --Sig_/RZHpnrGRnZmXSu_YEnZN/t+-- From nobody Mon May 13 14:52:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=web.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1626619887601125.36459999061253; Sun, 18 Jul 2021 07:51:27 -0700 (PDT) Received: from localhost ([::1]:40884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m588c-0001LB-E4 for importer@patchew.org; Sun, 18 Jul 2021 10:51:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58480) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m586H-0005gk-Tg; Sun, 18 Jul 2021 10:49:03 -0400 Received: from mout.web.de ([212.227.15.4]:51017) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m586G-0006mI-8P; Sun, 18 Jul 2021 10:49:01 -0400 Received: from gecko.fritz.box ([89.247.255.49]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MA4fW-1lz2ED0YVW-00Bwda; Sun, 18 Jul 2021 16:48:43 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626619723; bh=Xdx3AT1ta8Wzmt0uIMYWRw/wFZ/Bqr7Zn6wzhDeMz9o=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=hp+6xkmUvLvuKCZsXXapS1/QBQb9l9HcJa90V2AKtElK8FHaKMRKw/P9dKCxIJQ6k iPzrcaELGGE5lQSqLqQbZIwAKt9MiwS2CzSXM2YyZqqhmqktKnUms3HnRYUdH0vGwG DTrd6KYRxRNZF1oc5R37FVSO2ETOfyRxbB2JDWrU= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Sun, 18 Jul 2021 16:48:42 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v6 4/4] replication: Remove workaround Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Q85aOlKPnG_1CM2NYs3+qc/"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:Yhxfm+ArU7RCDaVik9FSrL60zGp7Iqkc4RWho90BBULkAIbYFQk DPF70S9Uu158e2EC7bN62fjQ+vZnS5qNchZapMzbLwyJTvYw/j0JdWcwQ+ECv5WrbbceoXX m0Czjt2mFtVcAnv7z60BvxiClNO/Aqe4EAApbAmHjX21t+yRdEKL2irzkNsi6g6QL5GBTgq 5NnP3uSFUGYcYOaHbKeXA== X-UI-Out-Filterresults: notjunk:1;V03:K0:t/VMsmKmKrA=:hCqMZyeRkmkI6bJmbfRAHd zFXYqO6mLLEhK/6di51a26KG/ejGSlW9umAseTalSPcswbOnab8oDiBI4eYFR0ynspz+gmuFU TfqYOmQoVi+0kkcRMqm9J2w+HWqYsyju71r3RH41vHU2LLQiPtVdzxrChTgdlwsiKZKG116Ul HpoOmmR6KH7EOmPejqAPm7wYhbCWk08p7dyYitKuk6URCmZ8e+SE6LnT/FcdNQuzPlFy6D5dC To3Xz+SHCMllF1fLVOcZlYM9W/5p1AaBsXtkxcHQA0xBoCJ9S4/bmeSnrPgKsbqz+LjmYyQHh imJ2aqKuBfXNKbOzVoFd71S1Ulxc6QutggNiO1y8HdsvNRzhojoD2zfM1N5KQvGjetpcqD/40 f2mpZNAqcG5gQdObzhjBs9mgtAZ0zinE6XKwRPBrtpMh4D4P3ct7wg9LSyE/wVET/ef250tUs ewbmWsva9l5zscv2hQyEAwVME/U1i0Od38Mm8fuk0iiFDRbCcGHUNVaFHDsPUZHZ6cuMMMyNT q/oMX8KZIZtWd7Dt021249Ecz+/VBkyJoa2FpTtFqlxWD/tpap+TsrH0ZhArMlIs7NQJuLB2S Uv+1sva1K2uPvuadnQ0U8bydfU4hdffPaCIz8OGmrgsWzRc/rzzqxArfJ3LlmTIOK6OoZNacW evDq7sQnqz+Gikrd3dbr4poFp1dJau3A88HVAmYRo5iEYyyr7ChtjMZ7ryxb881hztfrIrUcb Ht2XJaX+yeKTLs/aA0fEegsnuajnH2XfWrRYj7nurzdp2QV9wbbR0T6xPvC2t2zOzcSGZ8FAj pRhGyaqSg54XAZbYQENMQV/FrfqiuMADP/TKUQdICIxxU0n348f3PxH6yCHKoxXYO5t0xjtxC ggbDSUKLvPL4nj6oB+LQIySoN/4+97QjqhmiKSwxgaqRB+I7RYzvBLJGJ6XqK7JiqCvG3Afg6 HI1vFStoOS7mE3+pR5S4D86q7PbyEg/kvzy6Dwrqhr3MvpnWaak4NNXXAQ4yVQePrwD5A5SK4 HM0Q9Thqr/GR/QFG5aIMRKHLyicZOa7IYfYlFThftRDkYSjKU2qYbfIHZmhVA3PB3EmNRbeb/ z2OKM0EXzXJP1xrBeksPdYrs/l/O/lUFeeo Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block , Wen Congyang , Xie Changlong , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1626619889964100001 --Sig_/Q85aOlKPnG_1CM2NYs3+qc/ Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Remove the workaround introduced in commit 6ecbc6c52672db5c13805735ca02784879ce8285 "replication: Avoid blk_make_empty() on read-only child". It is not needed anymore since s->hidden_disk is guaranteed to be writable when secondary_do_checkpoint() runs. Because replication_start(), _do_checkpoint() and _stop() are only called by COLO migration code and COLO-migration activates all disks via bdrv_invalidate_cache_all() before it calls these functions. Signed-off-by: Lukas Straub Reviewed-by: Vladimir Sementsov-Ogievskiy --- block/replication.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/block/replication.c b/block/replication.c index b74192f795..32444b9a8f 100644 --- a/block/replication.c +++ b/block/replication.c @@ -346,17 +346,7 @@ static void secondary_do_checkpoint(BlockDriverState *= bs, Error **errp) return; } - BlockBackend *blk =3D blk_new(qemu_get_current_aio_context(), - BLK_PERM_WRITE, BLK_PERM_ALL); - blk_insert_bs(blk, s->hidden_disk->bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); - blk_unref(blk); - return; - } - - ret =3D blk_make_empty(blk, errp); - blk_unref(blk); + ret =3D bdrv_make_empty(s->hidden_disk, errp); if (ret < 0) { return; } -- 2.20.1 --Sig_/Q85aOlKPnG_1CM2NYs3+qc/ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmD0P0oACgkQNasLKJxd sljAaw/7BjRQomywGo3uyCc+GdAZ50Mc+nAizoesz7XsLMAmpMk8APFxNIQMm/2h HSg3IyUcw6N9OdQXoDwgaPz1SQQFO4BeGkyUwF3ANxBbTeU9BdG1KL8Ya+Lk0pBS DdfZnESU4qzQPDnbX6lO4EdS9MMORKZZdiykDg8CErjtBFGJ3jtgjAXHYxUzFViU 3NX7zX2vp59E7A1MumBHsPbpGBnyDiHchQ6w363LDf78yfq+SnFqvglYAYNNABoi Ug3x/IyTjVXx+I05p0yjUaZIf5pg3Wm7DuV5lSr1tTiqxyRwLf248yJqHpddfkD9 mHARXg6ERsN1x0j13oQVLLNYpIsjTUIwkpYcRz/R6fyve7maNqjCZqfSs7xuait2 ftxWxKMWWhacO46/e2Tmf+dF4N5D6GcR7yUX95IOyvON0pRuDVmrts3bwUDzGwyX JfIcQJAKv96UP8acvL4LKVMZj+eabmq2Bgiul7IFSjsWUn5ZtSPSP1qSjjR2tqwR egzb/EG6UpZgmgdJb6SPnL2ivit1Na3pxxCvazon+Cxcr5AB33w3DmHNVK/Wr4V8 Esb3hEkETTC65YjUhDP42ZydYauI1D31YEws1NzJlDzXHU6BCOweUqg2HzlQgAQR QCNZfH5r/J4tITLICxjjKbgqIzwxEdnwvDZxgAF/XruVEmYqYwo= =0t0J -----END PGP SIGNATURE----- --Sig_/Q85aOlKPnG_1CM2NYs3+qc/--