From nobody Mon Feb 9 16:46:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=qq.com ARC-Seal: i=1; a=rsa-sha256; t=1663663774; cv=none; d=zohomail.com; s=zohoarc; b=Z4HTGbMyMVm1/dEX0eX4ZzVx9zoz565V+MhVSA29d5YWCLIW6CkWQX3zV0hN/FJY02exzC5lf7Z55Hu/7JyXK+QbFwXBpTKTIsmgXM1vkd2A3LItRFtb1usme3Z+Pa+kmMOI39zKLOlI+gS0+cNeMMhpA14ufbv0AMeUzwI9tsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1663663774; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=N+t0d6Nvpec5x8VcM1G94bPh3CB8QeK90Y3GUa487Gk=; b=m3sqaTVEEPppBHPjPqCZjQU8UEQGWjtN/UA7BsKM+zfv8KwicQFMEaT6jDAIKZDyR4/XEbkbLTgCdM6Ll7dKLBFdQBqxeL4aX08Y11gbF+pTGmiRhpIEU9Lua5+FWDCUflEcv61yLHDPhoAVqIlyJxLIFBzKwPaTCUbmRCGez8Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from=<281773481@qq.com> (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1663663774937422.52988801771846; Tue, 20 Sep 2022 01:49:34 -0700 (PDT) Received: from localhost ([::1]:56518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oaYwf-0007aM-Ai for importer@patchew.org; Tue, 20 Sep 2022 04:49:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <281773481@qq.com>) id 1oaW7P-0007yq-VG for qemu-devel@nongnu.org; Tue, 20 Sep 2022 01:48:33 -0400 Received: from out203-205-251-82.mail.qq.com ([203.205.251.82]:41807) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <281773481@qq.com>) id 1oaW7J-0000FE-Eu for qemu-devel@nongnu.org; Tue, 20 Sep 2022 01:48:24 -0400 Received: from lihonglei0300.home.langchao.com ([117.160.246.157]) by newxmesmtplogicsvrszc14.qq.com (NewEsmtp) with SMTP id C05B1EB9; Tue, 20 Sep 2022 13:48:05 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1663652891; bh=N+t0d6Nvpec5x8VcM1G94bPh3CB8QeK90Y3GUa487Gk=; h=From:To:Cc:Subject:Date; b=lWJmQEcKJn0X8gtiUnKUihcth9OthonWm+2E747/Xo1Ca7sw9DXOlf/T2mbCjQUYl zTQf3i0FyAA8w3BiP+kws0OU7m+I8MbVNw4J1JomE8kDDSUg7oOdlDQpUFc5wp3s2i bk9ei+Dn+TlNFe8D3rJeq3wMbv0EhqW28MX0SbUQ= X-QQ-mid: xmsmtpt1663652885t3sq52kyq Message-ID: X-QQ-XMAILINFO: OdIVOfqOaVcr5YWLyNdDOWeSlP/ie9IJHRNoQOI6/Z6PlURhv+ypvs+ZXMDmIe dhh83W6hcDCf3TP8VgsPliF3uFRUivEHx8XH+iNZ/obOlEHaLy3mD3y+HRGCk8QzMHWJ5LQ2eQ5f TJOs4//JTde1uNEX4u2ma5taO/js5S3QGVPN3K+HZUtQiUkt3VHAHs7BePaxAHjuIUVqk+r2alft grYFkcvF83Wf9HmxDz1Qtyx6G5BnV24soe4WBvfHFVlRtUQlK+uRc+6AFUVqKKuSA2Fw7osJdrkG TXiIIJCujCM1zcKQj9Et5dwqRP0xsvKu6sRZXV6ZcMqje7aGCYjg2/m+T0lGpNELLNhrPdlOp2Q+ xV+Ba4qQsPPOiHEvtam8mhpjwmsQ0yXoGJNaMPbF0hTnGNuwJReY9KRumIqJ9lfgdtpOsTsr+MVD 6JpH8PCPDXka9Ddbm2H2dfgu599pRs5Vw055bAT3hVWcMvImZlEAtBZReQFqaCjHz6xcJ58zcO5i d7bYxvXQPer97014JD5OYC7HeHmEaFv0WXUGekIwRMH+C8HhpDUVUUfkbzTiOIWFQAW1Cqoz4PwY QEGG2osWTVVhPFqMZLQVxGDK4sVZo+TnB0SPg1f/51a5pcyyJ9WNJ0Xv2nfXDlUID9RIfjAR8xS1 F+C2FuJKgW8JTfaJNa5uJUny3mzwHMpdkGJJ91li6jFTxSWqaEjU/2Jjet9kzY9NzuQVRonbp9gh FuM54BXkvjbMNUFxAtqVYLpcXRyxbmh0o+AP1jlTQ33pnyY+Kgtp6HLApiPgm/ZSRbVMR/0sU8rI YXMnm6ep3kzX9EfUh5EO3cBhUCU0t+f4GMm4fCHi7rylUexfzZc/0spWqDOQpAqIhP7GlKl5FU0M l4e+C1745JJreFFU3tH+0XKuugTSXPUDTS1P1iJNsJx+GKxPQpqbYcMUPrTTaVwvLyP4T8dXQvE2 NVRm62EX7lARMiBezA5g== From: Hongleilee <281773481@qq.com> To: qemu-devel@nongnu.org Cc: vsementsov@yandex-team.ru, eblake@redhat.com, hreitz@redhat.com, kwolf@redhat.com, richard.henderson@linaro.org, Hongleilee <281773481@qq.com> Subject: [PATCH] This patch is to solve the problem that bitmaps in memory are lost after dirve-mirror is completed. Date: Tue, 20 Sep 2022 13:47:52 +0800 X-OQ-MSGID: <20220920054752.1167-1-281773481@qq.com> X-Mailer: git-send-email 2.37.3.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=203.205.251.82; envelope-from=281773481@qq.com; helo=out203-205-251-82.mail.qq.com X-Spam_score_int: 11 X-Spam_score: 1.1 X-Spam_bar: + X-Spam_report: (1.1 / 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, HELO_DYNAMIC_IPADDR=1.951, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_DYNAMIC=0.982, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 20 Sep 2022 04:42:26 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @qq.com) X-ZM-MESSAGEID: 1663663778041100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Hongleilee <281773481@qq.com> --- block/mirror.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/block/mirror.c b/block/mirror.c index 3c4ab1159d..86d2cd6b67 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -24,6 +24,7 @@ #include "qemu/ratelimit.h" #include "qemu/bitmap.h" #include "qemu/memalign.h" +#include "qemu/queue.h" =20 #define MAX_IN_FLIGHT 16 #define MAX_IO_BYTES (1 << 20) /* 1 Mb */ @@ -654,7 +655,10 @@ static int mirror_exit_common(Job *job) BlockDriverState *target_bs; BlockDriverState *mirror_top_bs; Error *local_err =3D NULL; + BdrvDirtyBitmap *bm, *next, *bt_mp; + HBitmap *hb; bool abort =3D job->ret < 0; + int i, j; int ret =3D 0; =20 if (s->prepared) { @@ -671,6 +675,31 @@ static int mirror_exit_common(Job *job) bdrv_unfreeze_backing_chain(mirror_top_bs, target_bs); } =20 + QLIST_INIT(&target_bs->dirty_bitmaps); + QLIST_FOREACH_SAFE(bm, &src->dirty_bitmaps, list, next) { + if (bm->name) { + bt_mp =3D g_new0(BdrvDirtyBitmap, 1); + hb =3D g_new0(struct HBitmap, 1); + hb->count =3D bm->bitmap->count; + hb->size =3D bm->bitmap->size; + hb->granularity =3D bm->bitmap->granularity; + for (i =3D 0; i < HBITMAP_LEVELS; i++) { + hb->sizes[i] =3D bm->bitmap->sizes[i]; + hb->levels[i] =3D g_new0(unsigned long, bm->bitmap->sizes[= i]); + for (j =3D 0; j < bm->bitmap->sizes[i]; j++) { + hb->levels[i][j] =3D bm->bitmap->levels[i][j]; + } + } + bt_mp->mutex =3D &target_bs->dirty_bitmap_mutex; + bt_mp->bitmap =3D hb; + bt_mp->size =3D bm->size; + bt_mp->name =3D g_strdup(bm->name); + qemu_mutex_lock(&target_bs->dirty_bitmap_mutex); + QLIST_INSERT_HEAD(&target_bs->dirty_bitmaps, bt_mp, list); + qemu_mutex_unlock(&target_bs->dirty_bitmap_mutex); + } + } + bdrv_release_dirty_bitmap(s->dirty_bitmap); =20 /* Make sure that the source BDS doesn't go away during bdrv_replace_n= ode, --=20 2.37.3.windows.1