From nobody Sun Feb 8 06:54:36 2026 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 162609096801354.23438139893926; Mon, 12 Jul 2021 04:56:08 -0700 (PDT) Received: from localhost ([::1]:42822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2uXe-00035c-VB for importer@patchew.org; Mon, 12 Jul 2021 07:56:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55432) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uVy-0000D8-Bz; Mon, 12 Jul 2021 07:54:22 -0400 Received: from mout.web.de ([212.227.17.12]:53449) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uVv-0005tw-M7; Mon, 12 Jul 2021 07:54:22 -0400 Received: from gecko.fritz.box ([88.130.61.76]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LyUkU-1l7LqT1LNO-015rTr; Mon, 12 Jul 2021 13:53:59 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626090839; bh=pxzzQbjQHGmEgHR63nik675WL0F0T3YSIqZLGM4zN8s=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=EwSdXiI1qo8TOb2UO8fmhZWWp7XRe1uk6LbUWPkSRVjjYEd6j2kT+rL6nykX+QNOF HPqE0Ji5Qx+6re1f7fqMFYli5MGbm2jA73GHtVLZPVnVfUzWRnFdK95tNSOoDDLwvk 5Fw638s6aLIliUPErNQ/2+F2XisKzrrEY141AAy0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Mon, 12 Jul 2021 13:53:58 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 1/5] replication: Remove s->active_disk Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/rAFL55SmKjFvvdAazMm4Eyr"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:X+G9sxvYSLuMoQyYcZwbBOTHFYyaSrTEchBHOr/KP3SOizxO8vl MnxFD26wlHmOv9mo7lbeL66rctaokwhERu2inbaKe3mCTLPWWCvjJ+lkjpABTYI1nXWuLIS cwcsN+x9GdtbFBgHcg9Y+S27ThWs1ZZWpNG2tl6KW0l2G90v50XnCZxRCUPGexlYpyjMIOn xIiwJ4c24ukqY/mrQqFfA== X-UI-Out-Filterresults: notjunk:1;V03:K0:6DTqnbOKSXA=:v6bcy5me4rf+G2eadCwmWa A+lxWlfjhpncy7vRhPAAEbJCORKy8YrOYAbzjOGJPc16o1NeKgrhfUKr9ygqQm0rP/g9UVWy7 W5XS69u9EM7SUHrbWoJ97AdlKDmtdG4HzdfnMEpsu0CvVrQlC7m+7ArHdU7/9bctSOsmesB9V nv+mQko4ZZSJ1Ejwc1BKo6VL/tC7s/g+Ne9c5sZ75Mhk2USRXYFgV5AuDA6aTX7V2RiF9PIhw 54aS5bkAnQrxPrifHK7Ta+I9sDiz0yGtMNznjW+B1A9Tu4rPpqoqa4oubWjWqPj7ec472D9Wp JfljneED7byMbtsUzp9OeNodyhwhZ41Gv0KxGNc4uUKzQ3qAA0c5ZWXpj7l3sdbxBdYpeEZXz PCZDPbcUIkndfymM/pr708nzceQy3uwPsrmflaE43VWpm596DAPDjN4fP7n2DaVewYRnBL2eK H+SUwYJULSCQw1G8w2XyKOUMHITGxfFSo8xCUpltjKnBOqdgGJtKbM4IOroacufo2cRpy2q0K HOxkQUKdotwbrdaQMbyOIdL6hS75fa/oosb11bdh+z4aNN10DlWsqn/wJocdn7mkdmajw1E1Z 1sk8RpW53JX2PBRdtVZEacyh75AcqHqBpt/O+VdJ1sSuNCwIJreNZ3+ZaZPEciGF0qP9gT3tx BjbSMsD7hTF8pWVgafzo/EpZt1/ZyTzv/VUbC5PWSayj1qmrw4D42mn8G0Uq+K/4A4yqlKQ6b 5nTh3Vv8ZSVzrX2AmEO1GT6QwKam+gCTYcQ18SwQyrJfWD8MhovLmrhbWunGAUvpLrYdKJNQF P1J2IGW2yd/WqIrdTEdraCZmeQ35ftmv/68z3XVuMKRgUBEE/uj5sjKqNU/lx+7tXSaUCZhWy U06DQwChqNrNXNfukb7Z099dhaJl5FC85Oxi0dL1KNEfPxINNACRRHmvgU9YFvk9dvW9C31HS VjqHkMoFVn1Z185gjJiUoF1G1YBmzm3ofILBZTV0rLF7lXtZjJqBwf9FNJgC1OuwwjiI+5yg+ tgQ+jZVYI7ICXip6Dihal+Der2qsvTIF5ufstGBt/fGtX2Chd/l5NXZ3QyxHDYlBpDAX6rMrr IaVqqOZysgenKqWQO35BtSg3DpKl7OHp635 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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: 1 X-Spam_score: 0.1 X-Spam_bar: / X-Spam_report: (0.1 / 5.0 requ) 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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: 1626090968350100003 --Sig_/rAFL55SmKjFvvdAazMm4Eyr 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 --- 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_/rAFL55SmKjFvvdAazMm4Eyr Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmDsLVYACgkQNasLKJxd slhAQg/9HnLBrpbDAYxsmf7geuaMIh6fRlpzbEUlIoE73HKWHiutV8gDTs8q0/jq cfZ0xqKRlnQjm5zRcea5JHH8OsVM8gT0L8WcPJXH5QlY5AEj+heRzpBuGgUjogiE PIEXmm387yN7M+bb8ZYohE6HCdobqqPJI8WuRwFOUzVeOkmOj0YSlZmCQ1vfxvHP iElgHiZRVPT5uOCUFWFWByrA4lnRqmvDWKIlIz/DfxmIwfXJvU+HIcAkeBPiX1c+ WACej5Q274IJa530C5ZFRTMrItkXIHwaso+MWqWjpqBJvJfoa4vKg7erzsUu4MOX OUiysi2iSNhvFsSXZKAONPsknKO29GfmDdhE+JYh++gQ9/T56GFAKODtC0ojwJ4s 87J2FrAyTIYNugZZvCWza1lJgdw1mLswhNEYJg4aLrcn5H1rLnqv0dpEZz1zbK6g O8wzZWGgUQnHe5p2TDUYSR/HNZDr87CKGf4V/1YfTs3jya5FBat0HZGD4rbVWXyC sNLR4Q6UySPxHB7ylYqqKbdzKBM8Awc8jhV+T+Hg+44MUh5BFE3kuzGqmnnxnALl lS44WoBbn4+kmrfg0alyi5f8o5Y+JF6CyXp+I0NKLP2yKzY6i1peBf/kBOOQenXy HxAfz5m1Gd/5ftUTYMQCZsu8cyCUPKkuUoZzbHUfbK5j5zACvho= =3k7q -----END PGP SIGNATURE----- --Sig_/rAFL55SmKjFvvdAazMm4Eyr-- From nobody Sun Feb 8 06:54:36 2026 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 1626091052534168.0381721969071; Mon, 12 Jul 2021 04:57:32 -0700 (PDT) Received: from localhost ([::1]:45982 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2uZ1-0005Ld-Ga for importer@patchew.org; Mon, 12 Jul 2021 07:57:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55400) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uVw-00009x-U6; Mon, 12 Jul 2021 07:54:20 -0400 Received: from mout.web.de ([212.227.17.12]:50417) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uVu-0005sk-Uv; Mon, 12 Jul 2021 07:54:20 -0400 Received: from gecko.fritz.box ([88.130.61.76]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1M28WJ-1m0yZ82SRV-002Y8d; Mon, 12 Jul 2021 13:54:03 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626090843; bh=aY3Mw3hwsf/JlGVdZQgu/Xo23JhYBMtJ8fU+3Y4C52o=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=JGTeAOjFxyEQhyH2qNn+m6mG5ULG5XuaP1Ve/CwJXvlPyoN9NjAHjdzfMmvDYO1tj CTpftEKQqFlh2q3uYA2l3X94xLjTFG8XtbXzdEp8//K6BFucX91WWEdPj0QiVKXsTs uN9aqQ9gGDCH+w7brLcImwE1EJttJQrF40Eskr7A= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Mon, 12 Jul 2021 13:54:01 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 2/5] replication: Reduce usage of s->hidden_disk and s->secondary_disk Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/bVlCT.=9durZQY4dY2r3RCn"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:aTD/jUkY9HIl09Fy3RdWJBgW9gT+cUK1u9XRCubmwJdS8qkuRDc 4EX3IYm1swi0PGkU3fFqK3lKdpnvwy6a5LJUv6J9jVQNMV1E9IkkBOm4BySHvg361JgZIOY XSE9qZK55rZ3WKObBHxEVArW/uDunVjWbt0nS2kU1d2uIdYsWQiDVETaz+V22d8i/EQE12o OhlrdtuN/CoLbqrxopkJw== X-UI-Out-Filterresults: notjunk:1;V03:K0:1xRWH4pzFXk=:yMA+6uj8utghZ3Yf6Y2OqV SlYdKuJZ4e+tXDhqTp8IHDqG43KjBrg090m103vjNLO7iLnHp9RGoktHOfDynKoNwu/FfkeJs IxlxlTXpffgvpd22S5CfoHPs+KVWO+wstfhTFtrfuwj4dtlczF/mBrT7u9SplDmQsyoz1NxCg lDjtmXAwEFpCIULSriBeidz5oDDOfe0SMFxwOoy6CvoE1eQIwFLOKm+G9/mqlsTHKb7OGMSmu 6okszG8+CPMWGh+ytGfTp+nasL2PrNpML4zzTOV1I2tIkoo0Emh/IgOiePhzcxXjmwg30ETvy LOHCdc6QTJSqJdgH46C3XXJgG5sRr5imh9FGHlxh2zTt7MtwWr5QUOFb0D7WiS26Awu9oaFAi vHqBnH8gK2yU0FZlZJZrNsjKj997DWUMl+Oga24/rXoZk5sXTVhTzsfr9U4Dj7/37hQTV2K0+ iu3VlwG43CKmzSMlEaygj9t2MhJPSpnKnq+1xE7+PWwI1OlK4Vv9yTK0tigITsDZ06ZxzVX6b ntGLg0174TXQFDmm1EsQaoe8vLv0xExZASi3madc78UEN/JNt4dqgCTa0XLG9skih+aSV5tt2 h6Ok4mHyFA0PT7QQxrK478yWA0jKMeUZ4ufN/bekv3Kj6c8IIvgFakZu2NfJFICYwPgleqg3F mzKPRfl6fY7nWMtp3iTM9W2acqdQvWhQ7BoBP9nws1LUkChaifgdmTsHpRxn78oA6z8azBffH nm65KcgpS/NS4DBKBu7RNa3tR7aZCbk1eMGZbthpK+G6sl5IfBIX1j0IoiPvj594yRmRUaof3 T35W21mqPAJW5OL0Vj2OwwCJNedBjgwG8BS8NxYpw1Eiv2PrWLzN+EcqCfHf0PMqsisIu3sZa Qsb4FPUl/DezK8T1+Yt5QIaxuQEswQ3q1VJGjWG3oHztghDXj8ab5ZRTqc8pmn9lEdWGiSsxF fubly06RKtB7v8P4TkoqX5OvTnDIIaPEnsfJM687eKLn3Wce6qp7VYHmMl7LNq4+9y2uuFE1f K6opPuGtARuVdesrNplJ0TZW7luONAAfXx+FjjNP68UHc41rEyxNTmE9IdnFuZdevcFpmPlxA PN0/ZW0maJA66JKu2ZYChE9EdgrVw9E0Fr4 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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: 1626091054573100001 --Sig_/bVlCT.=9durZQY4dY2r3RCn 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_/bVlCT.=9durZQY4dY2r3RCn Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmDsLVkACgkQNasLKJxd slhEFQ//WDDiTUWaWZ37znziHyt5Cd9CdbZ21Ks35LS96QAH4a9WTyOisdA0T4rE 68N1BshAWVgiPexaz7GbQP6SxLWRNlWbEDjLMbROF/o0xOvxy8cB4k991QE1BkHD WLxWCYku72luWHfjUyLrzsPVwmPTQxJw347dk1hYnQuZ4z5VSqeyCQqPvI58/6dX bVmcfm5YzaS/RB9HYLKC8lymtCXMiOvT4hHHvajTg3WnCFhKRqXXwY4QpEopeB3W WVRKOVAixF5KoW2bg9UTl1KGgc3tAwEnVTgos1Xv2V07CXsJp7G1bL0LrtbwYbc/ M7rM5Qwbw/PqMW7jV20UAPvvPAzMoAv0d2E+t3s5GXAL0T2JSVOq6lq32Qmk26AD Ak3RL1OAdkEwuvUmkLZPlPD+o47aQldBs/zyx6jCVRRloTdOaCHPILUpZd8zfQtP tDCwHTWeRPrjsFnyWsNOsUcp+CBZWWHbsSRKTiHWfQhYGEOn35qBMovHbhACFVZv B7AnOHZbALH6Ijm22zu9+NJ7wYZT9Q7NTxiricdow7XjIfy7ABUPphiYbcUqQCcz /gCD2a/dOpb2Hd6Vp1im8ahm+i3k4xLoThlU1K2RoJqglnF1YaewiQjYzxH8SxQ1 Qw8N9bs4X8zBPsXRlK4V0TJ87LAplm+McOw3H/11JiI3x14cKFo= =le0I -----END PGP SIGNATURE----- --Sig_/bVlCT.=9durZQY4dY2r3RCn-- From nobody Sun Feb 8 06:54:36 2026 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 1626091131903147.38150203278315; Mon, 12 Jul 2021 04:58:51 -0700 (PDT) Received: from localhost ([::1]:49922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2uaI-0008A0-Sb for importer@patchew.org; Mon, 12 Jul 2021 07:58:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55498) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW2-0000S7-Ij; Mon, 12 Jul 2021 07:54:26 -0400 Received: from mout.web.de ([217.72.192.78]:45139) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW0-0005wg-S0; Mon, 12 Jul 2021 07:54:26 -0400 Received: from gecko.fritz.box ([88.130.61.76]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N5CUp-1l2eks087J-0119P1; Mon, 12 Jul 2021 13:54:07 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626090847; bh=XrMo2wXI4WKVbPoMqH3ioO76/a0UaPjfPMhLaxMQpzU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=aIwU6bOisI5LN6VsOiJYlNUh902nie9Xrv5GqhJMf34dEqLpZmX+JqvZ6D8qs2o1q 2Hlv1118OXDSkqOunZ0tVEp8hHSd25xoaKfhawyDaI4//TTQMsYhH1LofF5/Hf3A0Z gYkL8s+sBDnqG55wdh+07XKzzPRiaL61QAud4ZGM= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Mon, 12 Jul 2021 13:54:05 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 3/5] replication: Properly attach children Message-ID: <4555f4074e16ed97e134ebd91ac5d9012f30fc70.1626090553.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/cggLnocPYT8Jh1tsVQfBA52"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:/3pJ3pjZuHGRFyVzk7IdQFwrfzT2drhh94cE6UeDIiO3LgbLpYw oBu7w29dvI3X3u4ozZpoCyj9dxtYpJCA/ryT9L9o6v3qUFdnZgfyu65MBymRz8hjy7cBugo z8/g3MpQW/XhZlyMotitqqwzR2mRdAByuWh3LaXdogI5rfOVjthrbPmKkTV2Vqu1grEfKLQ lTYUTLFXpGLM1Ewqr77nQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:GH2WfwWWJj8=:iPTiXU8A7Ci2Xg9L+C9s+2 CxsL/9mc4WgfJOvRgoDsKgNTghZFQ/yZGYbGVo+XHqQOH1g2DvQZHSnKqY48LKWcnSo/wsnmH 1toedT/UG+pDdB5nk6OJ0vIE+ZkPElogXJ3v57sZbgOPvAFAAOwb3etOp4JYshWB538pstN57 z6pOKY5DSSBSOMNE7+69eUJN7F/5mAJt9+tcUJU9Nk6NOooythA/W1b3mSeXcyYF6d4e4ecGt XxvVebLFEytpgrJofvnSd6fW8KaaTvdfIysmUc6+pzq6leKThOkA4y+8HkvQjZUiVlgZTjLc5 g/e4YUGuWHHRO49gqKjSQnR7HOqQXJVwLDqqCgj7lkt6BWqL7+ftpe4JyhTMsUEDIcLjMN+1Z JDLnmnbgktbGFdayhOmlJeh0jWR5KeS7+2GlnA+6AMS4UJTZqvXkF2/UwGITRpjvfHZrpPV4p nIMKJsLIPqoIB5sD39qxcmB3xlq4CRxcyVDmke7SS/yGrpAyBuhd+XJaejsSr5DfKzJzu76YT L6f0JBYkcgegMD8/XPeh+LRwuQbqqJso22TroQ7c0/dE8NepaP5Bm/sfNUPQ50NmKmhZWtgHG 1IQsU04YsOXRE0DwD2CBlcEnzFGz1ARW8tKrK000vcXWoo/6Bao7KfRqqck/hS2+c789kNROL QNYfY6bCknt5y4FnKIJg7TsmX5x+YHULDIdfSC777PLLHZ4uEJip/dg8aOdr+WK5AziSt4X3L goqwOK3lUhnBfXPpRfq7OR7cGtISmD8XBQymthmwngvr3NHfHsFbToZeK/NLXiimDuC1kU09u Wn2yV/3Cp4CyDmitCTUzCB/5Dfx+t/hbkD5BXvoqw4IqZhu6ABJGg84o6Joc/HZJBIm+x4qY6 ksVRndXfY7QusIiuFbkSEY/bkC/tsuHSG8Vi1rRzTGXbua/hl6SZxD3pCFH43l41gmBTjVhiw yHfDV66T0SVnSON4Q8UJpPCW3Pll8sSg4cGN2hPtLNYHLYU+RL3zNPbJHDxgUMjkEsAW84aD8 hkoYDF03+ONd+ZWs8B+2KLhBy4eP5V6SSf5y0qm40QI0V/DBNSkYF9yDgodAh3RCu/Gh8XSzC squ83eJAcJX4e/lEWedvLiBQdWdDWWAvo1m 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=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 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_H2=-0.001, 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: 1626091133910100001 --Sig_/cggLnocPYT8Jh1tsVQfBA52 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_/cggLnocPYT8Jh1tsVQfBA52 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmDsLV0ACgkQNasLKJxd sliKoA//QDt0hojmg41HmJrzADE8Tpre058TfASs5lBSsSPxltsQCWcecVYgXtOV LM/QUDtEbdX7KjQfu9ZsTsei6HhecRy4qRupuYBfBnUX3LRxE1GDQgzBdUbAE3ga SWMNf0sdXwb68qx8Y1egttpfqE/SAcd/8Qc4CQJo0wM3s/DYeRmbCXUHzj5ziKBQ LVH9Gknxo6OXz9YtugRxbx/AsUshk2IY9Bz2/3wqy+sN6YN+o3MAXOEwwTJid/uo 7nWdMlkvllVtWc40ENHE43SAc7JBhSkIS1vaaU0EHYw/bk7tAJ+DblPMi6lq29MT JB7+Hncu0YPmDULIwM2FVj9i+FbUANvk5vXmlFSa4h8OGiCo22z3Bg/jkjbmkiv2 ttgiiB1ENsPxqluR3aJBKQjx9DSc2Qwwf7AAc9iRMsfX2QbRydLBqnCgNWF+19zY Rccdptneu6jHxHxFGqq9ZOpG18ZgwaNx7GXkW3AD7GysuNe34v80ECQqVJbc8fc7 NqUGz3Pe6iaq6kSgk6pdw06Gn4DCRTD7SDO3JB1oXWvu0PJEoYtPPYUMk84WQqyT jbgUYptBEwffBrdAofrv17S6C1QI6gM2asun90bzVxm/PBOz7dn8I4dUPrBnvbAl oR28eS4t1vvSN0ilxHUWuL40L0pjjb9Im+WkYVnuWNBTaQaZfto= =Fs44 -----END PGP SIGNATURE----- --Sig_/cggLnocPYT8Jh1tsVQfBA52-- From nobody Sun Feb 8 06:54:36 2026 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 162609113395829.95357770364035; Mon, 12 Jul 2021 04:58:53 -0700 (PDT) Received: from localhost ([::1]:50070 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2uaK-0008Fu-TK for importer@patchew.org; Mon, 12 Jul 2021 07:58:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55530) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW9-0000WN-1s; Mon, 12 Jul 2021 07:54:33 -0400 Received: from mout.web.de ([212.227.17.12]:38573) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW4-0005yX-Ij; Mon, 12 Jul 2021 07:54:31 -0400 Received: from gecko.fritz.box ([88.130.61.76]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M5OYl-1lEFbg2cYR-00zXCw; Mon, 12 Jul 2021 13:54:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626090851; bh=aexX3buFrOB7dBsOnfVXQzYeQMJnVRzvUohu2kYYRhg=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=Wgz0jZjSBPISwt/sggBRWGT6xZPB++ygWLs//BLaRK2iRDIXkXbkQqDM2ZUMLqkj5 Nk0WxR4O0+qc4u+nD5qQP+wZxeBx4elgBVKHYSZLUmveN7IGSC1XgA0qOy1Eb14do3 PRVO6hN3U8NdvCsGp5Mu2agP1rhxVYoeodRtxOa4= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Mon, 12 Jul 2021 13:54:09 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 4/5] replication: Assert that children are writable Message-ID: <360083cb9c08e364eb99e232b2705226b23f4503.1626090553.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/9Gf7bQZgjrow0vo7T0jZnpI"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:dK0CITChRmUTOU9UqL8Gh9Y1vdCDJ4XuNftiKW5RzSnIo4JfeXH YoxXNa6Hp0/HZLBP3JBqurqykj2vKcwhtlLFf9phSUmtbfDaDe0bwWOXlj781bqvkI7aLzS 9AiXHtrAgPL9iUgK5WaQb19cGIql0v01/t3vDTNeuKmbTowUwZ/gyoLJ1tbL7kZL5ZwM0n5 hAC/14rskr/NLPBK54dng== X-UI-Out-Filterresults: notjunk:1;V03:K0:RnRXsiEvLwc=:JbBSRXWn2A0VShjRj3Zqx/ VmKyEkSrVtamiyfq0z3NG7uHpNg5wz1O0RYl3lIqQviz7Sct5WgiuFkKkZhIHXsAKQmT9lrKr yMYdmwTWBx7FWNjN6Pw/DrxBNBE8Q8hLSbFQbE7g55rmTWu8xokNnf2hCRpa8AoFQTjR/gJNY efT8s1nE4dZBxTkZGFujpFThhdplLmO1o3/FG+ejtGKJM2HrQTXE6zUhfyBx5+DfQr+s3S9lt 42mrjz+SWGOk58ZkGCDQXYk3BvdKFWCgmzQlxCw88Pro7gPsgeNCLoLTHHLrrURoQiUEkGfHZ V8hELnLlN0HfUM6Nx0iU3uDQpWth/WuN3h4iCdVqjkNb3RxI13v2sqfRHW/5K0V6pIBRvJhvl giOISQW+Ag9+C+lTP/OJfVXJnvBsCwFXBo218/4vF/eBoJ1/nWcRWZJh010jiUP12nnQxuF80 abTSqwcmlZnHZ9Uz4r6VE3FFQsmeFMiED6StKu5LlQMGe9NDVw+cZf0vxnmjf2kl08xr2hI54 Yup4yLILPyeOu/4V3LsL0zlZvb9+Lo7n9Nhuivtoktj0PsRafdY4hK40wLoUZbNn6mROiZAiy Og9Sk/SFDweQ/wnSMYZiNSNTy8SqCDTA/jpXkvllfMMl6LwiQJm9FsM7QYULkJBXJaCMyM4ht Ad4L1OWxQfeuRq5QkzCmhSU5LyZxI4jCIr+iwUYh23F7MY5EekWUJEtXV9GbOJO+aCRPlrxqB TRiJao3V41xALAUTkGvickA/8PhYQffSbnzAQuPWq55mv3bmeiMwuLuBjIPNgrt/hl3t7W5tt lhv5zR5H8kddP4H2MFMfpN8wdRo7rV42FFgmgkXrarK96xIxdjBNpWfDuw90oWSZF7sKKgjOs SxTDiYt6VYwTJePkFne+6Whuk1P8V4rApsXcHKf5a+xJsRAcyvQyKF7iZbNYWzZHu9JBm+ZsW 9eJbAgHk/jscT1rfJ6fU5vkLpGS/74EYcNX5oJBy42UJ9Y1xKVHLmjlAqX9yJAb5E4vrrRFQr +AO/UAyd6T9WPbz9MAWyTebOGDmxi867A7OyFuKw3FU2aOtQ00yes+m8oNW7xQ1wZ2QmQOaZh Z06/UNhuTuUP3QUp1g/u2gWEO6vWXkiOBQ3 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.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: 1626091136193100001 --Sig_/9Gf7bQZgjrow0vo7T0jZnpI Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Assert that the children are writable where it's needed. While there is no test-case for the BLOCK_REPLICATION_FAILOVER_FAILED state, this at least ensures that s->secondary_disk is always writable in case replication might go into that state. Signed-off-by: Lukas Straub --- block/replication.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/block/replication.c b/block/replication.c index b74192f795..772bb63374 100644 --- a/block/replication.c +++ b/block/replication.c @@ -261,6 +261,13 @@ static coroutine_fn int replication_co_writev(BlockDri= verState *bs, int64_t n; assert(!flags); + assert(top->perm & BLK_PERM_WRITE); + if (s->mode =3D=3D REPLICATION_MODE_SECONDARY && + s->stage !=3D BLOCK_REPLICATION_NONE && + s->stage !=3D BLOCK_REPLICATION_DONE) { + assert(base->perm & BLK_PERM_WRITE); + } + ret =3D replication_get_io_status(s); if (ret < 0) { goto out; @@ -318,6 +325,9 @@ static void secondary_do_checkpoint(BlockDriverState *b= s, Error **errp) Error *local_err =3D NULL; int ret; + assert(active_disk->perm & BLK_PERM_WRITE); + assert(s->hidden_disk->perm & BLK_PERM_WRITE); + if (!s->backup_job) { error_setg(errp, "Backup job was cancelled unexpectedly"); return; -- 2.20.1 --Sig_/9Gf7bQZgjrow0vo7T0jZnpI Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmDsLWEACgkQNasLKJxd slgKnw//XS6duoR0NDjezu6lYLnf5hCpp8fjd4ZyMf/I+KajMvrW83OAqm7IT3cv OPJrmjyUfi0O/6JqMHnAyJ1TS1UB2YdaKryhwTZNWcp9vNwHOZtznva8ACI2QXGL y9tORTLcA86+JN0qXvDIXplYazxylX+KBBbVSBs8Ek8QUNSx+d1Pc2srLORoEYG0 rZv80y2+bPf/j7gFGLlwJv3sTreH/D09GhqW57XKFdsoxdYvlQPhayMYEDwOr7ID ZbaoXo2CjD3Wn98SoHh16MA5Is+vaKcAlBYI/MfT0RTiPZrjQTEILOSfyWT4bBoe LEP89nFQE/Ks5nwbnxHihAx/7B6nw40Pa1z10QiiKapN7RZySPUbAmu8wQnRB0VD aY1QrD1YyNbwRU7821c/Ihil61P3x5HePGjFf29P0tJR7TBS7+3UR02+TBQwehq/ cKKrBE9RD6SEl08XPZzyyPz5mIYDEkK4TxMVHv0LrF6fnJBKmvhZoK6kfNh7KQjY PYuXdH/kgLC4UX3BQZmru3EZ/Nxc3K/LQlDtLiDYnDp0QAC/RT1LHyuqGmF3Qb5p uuC4KAAk/xiw8g3r6Zrmj1umWvnbG5nZhIIQJiEjSl7Eq65gqruIqgKIuyrjQquA apPoMdgDw2FVEq+5nu5LvoNdHBuJBDO+ZGdeQQm35kGEskFy1xA= =iOwI -----END PGP SIGNATURE----- --Sig_/9Gf7bQZgjrow0vo7T0jZnpI-- From nobody Sun Feb 8 06:54:36 2026 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 1626091199977494.534788602077; Mon, 12 Jul 2021 04:59:59 -0700 (PDT) Received: from localhost ([::1]:53652 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2ubO-0002JK-Jx for importer@patchew.org; Mon, 12 Jul 2021 07:59:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55532) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW9-0000Wl-Fn; Mon, 12 Jul 2021 07:54:33 -0400 Received: from mout.web.de ([212.227.17.11]:57453) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2uW5-0005zS-4b; Mon, 12 Jul 2021 07:54:32 -0400 Received: from gecko.fritz.box ([88.130.61.76]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N0qr9-1lFuIU1gHN-00wpxH; Mon, 12 Jul 2021 13:54:15 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626090855; bh=28jQJ+YAJQ1b41afUYKfr8L0ZoTRrU9xPacgIfbcigU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=arUq7sYDu2iVxdXCHtNtMAnunoZFQDdViarfl4qXdErRMR/cnoxJDbe7jnpMKuwi3 Rs01tq7+RK4aTA+4Q5I19OU7wXqT1ZSMnIGGgKOrDab/OUaKAFYDeHhHGqVAzqR/F7 i6ev9sdIhcQf4g1gWyY9rmSm/jIyHxG3cypgFf1o= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Mon, 12 Jul 2021 13:54:13 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v5 5/5] replication: Remove workaround Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/E626Qs6lQIZ.T.inCtEUtJY"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:iNh+HjZRaIWKsZN95/WtPBPhATxTMCVEZPiyh2d/cg3W2q6Dpqx 2ngRlvEjnTCrnr0rxHE6ub7UacZLOF1G+1MM5r7boY3LjtfCoeT91k37CrVFx4p6YxXYdM8 cStmDqb7Jz7A47xTOz4QBmgUbgH6ijitYU0Pv7F6/VOLuxrSh61svrQqNMf5Y71CBi+UcHq /apD4luy0YD4tZmjHUGmQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:tXfSpPqeF/s=:T0fQDWItu3DOwcsrf9Djdp 6LragnNgo7FRn+5DVpTFxC6wFSH3sEk3STkbIHRsBJKVIPYTVeWORTOtrBS5VZsGgNcvUfROo rcKer0azRUSIQLbsN3I1qjaJmK5iGyhTRJdaunvfyJAcPRhTXkITJ3MIhg7o+egCz70CzzS7e HsIUykBx0zzGsVYjXsic/BuJiySwKsEe4y3qXOJRweZSJVWlhQ4o6GUj264t5enOxcl5bneHO V52q1rCXxlUUI67i1aUdt4DuQFVszTM0yhVCOYnyNLI9nEtIH0Ji0XjWm6+cNXObpmFaQjMgm s2oEPCKPtdnJyqmHDxnGyAc0+5qcub9zqxJMQW+bqbbeajxcsB52RqgUlkNlAWZ1RQXh9YYoY zY71kzaVu08CyXzvbRigpNDErZipOEkUbIDXo35zMCagbtGsEOEuyOuvrrsIWDQLTRSyhJh/R c7H4UPeyaA6tfO4CkcY6vQH66xySO1JeX0ba58VyKciV6wC76qy+FvT4Gv00ez1U/HrsyCKjn WbfAjNwT0l3t+5P3CfxQrlYQVZ5eC06jMimG42ITp51RYZPRAa/gO/lxxQaIPqwEhtV+nzGGc xpluzULi6oISdItzkGHCreUpquoBFMl+8ZSyiUrfGsJ+rN/xqSQnyk8KPfDSsABOfuHdN3nvB QkvmoWuOyJtNSdeuM0p5FVkm7AtW70OBHxhVuENVpatgj7WtgvFd5ZO1z9sIjP4qpQA2a6G+1 GfICn6DTboMBy5ZHiFYZSmAsoni8KQz+DOYHA/wfEX/QLE4YLoZSGo+tryyym5Oja7uVRtsC1 WAeYmmhKpjB251j+Exu4U225RpIKnf9jBt0L3+yFt8KW1dHRfku+s1jQwhY0G89wL1xLCoK/V 8NpHnkwGqfuCGQv1a1OynRhkhKKc7w7E3QwzVBu59CmBajwg/vZOoRAgv2I4tiiHP7pVJuG71 0yNhRtSVzdt4KRWEBJvwLosjVR9f2Vs4XmFnoT/sxJ/ZttkOvkN/uodDheskWwlRBHP9V5Z1V DDJIBYlN0EirP+YwHuOFot5pzFmCfNaYkVu/uSu00infYtvA6spJ20qrFW0JbB1WhI7AxG79s N81y/VCBnoqFqkKR+v1110MGZBACNjbzCAJ 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.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: 1626091200997100001 --Sig_/E626Qs6lQIZ.T.inCtEUtJY 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 772bb63374..1e9dc4d309 100644 --- a/block/replication.c +++ b/block/replication.c @@ -356,17 +356,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_/E626Qs6lQIZ.T.inCtEUtJY Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmDsLWUACgkQNasLKJxd sliOfA/+N1FXMwujAlfnJxTO7OKKUTBpqX848ksWikjoFaovmS9FK/+w29/w7R8v P/4joSWDAknnmGluQ9UE3muHWfnIzNqDi5ke4vNcVmgprnlTBY7TSFWR3Q1jh7bi 7pw8wK/7CBolROVZbub4974vmI5kdf3qODdWyAWJW6BGSblignLHMBdPoYgT89Ty +cAKcBcMWGxs1GNoJVrZRmRN4pJh/Bq9PvTO94HIy5BSBePAcD9r+JBqcHC/RKz8 +JVFfiLANRbAjwhp3rzDjr/DjM6uHR5YGFcoAVuiSmwTvPLeXJWHgM5DqLY7+jE3 YRnZyx8cGpzlqjGpbURIW4lkcxjlpI/WC+Uovo5OJ0caGnOhZvvXtuS/a6m3Fcnn yZvLcLFVNZ36a11FtXQBTMu3e23e8gZwTZgx8Fyv5g4mJxpA0pz5fCMdnt245Epr M5ZTfgJVrfgas6sLQGlXp1SSjr0HJlGYlLQq9LH0FavpnoVg90p25FHWbFFz6STi fxffk9U/NyPZcNJ7w7XJMVgnnL1Y8x2XsDsQX03sMmPnmygYHQRrzzwf607DOQhb gnTV66wisr04FKjugnwMzH5/aLo+S0V1siuiZUTE95MlsMebXg4G7uton0AHRMkc m+M/7y47V/USDkiiDgQXutZrcXmuM7RwFj58N8IgVb/A4Epv/A8= =olnk -----END PGP SIGNATURE----- --Sig_/E626Qs6lQIZ.T.inCtEUtJY--