From nobody Fri Apr 26 12:31:18 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1557865288; cv=none; d=zoho.com; s=zohoarc; b=O5RrC59mO3CxIwjeMs1cUjcHvDJXGl7me5+gIGuOfs+J46XJWcQZqheWFG9txkvcjk+40CYNwPtTEmA4C1eTSwHdQAekMj/eGLdR7G9h+e6P6v7Lz/S3ttDJSfGfFsFJBduVu99oEe1aa3hCbKec7LDM3nUbCI1ZDKImGpMxyZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557865288; h=Content-Type: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:ARC-Authentication-Results; bh=j3G38OSCXLiAcEyp6+Z4TsGA1l23frfnxWinkW+79XA=; b=JLpKj2QFxmGMDW/aVAihAkxnBrCWYoXBpN7Xv9lMrq6uoXvzPmhps6DM3YSCx/aSf2yv3yNlDwTWVlZ3aKjl46oHyL92BwfOFbputL+H7ls7VnMH35EsXZvmYshk+ps62KL9wW3EFsMzsjzLkXQdCBa9fvZVKNbRIKjyB6QIuqA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557865288777857.4539118333626; Tue, 14 May 2019 13:21:28 -0700 (PDT) Received: from localhost ([127.0.0.1]:53702 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQduz-0000SE-Pk for importer@patchew.org; Tue, 14 May 2019 16:20:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33357) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdty-0008C0-Hk for qemu-devel@nongnu.org; Tue, 14 May 2019 16:19:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQdtx-0006sp-98 for qemu-devel@nongnu.org; Tue, 14 May 2019 16:19:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56380) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hQdtu-0006oB-1n; Tue, 14 May 2019 16:19:50 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3A8C9369CA; Tue, 14 May 2019 20:19:48 +0000 (UTC) Received: from probe.redhat.com (ovpn-123-95.rdu2.redhat.com [10.10.123.95]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7BC9E5D6A6; Tue, 14 May 2019 20:19:27 +0000 (UTC) From: John Snow To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Tue, 14 May 2019 16:19:26 -0400 Message-Id: <20190514201926.10407-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 14 May 2019 20:19:48 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2] migration/dirty-bitmaps: change bitmap enumeration method 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: Fam Zheng , Peter Maydell , vsementsov@virtuozzo.com, aihua liang , Juan Quintela , "Dr. David Alan Gilbert" , Stefan Hajnoczi , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Shift from looking at every root BDS to *every* BDS. This will migrate bitmaps that are attached to blockdev created nodes instead of just ones attached to emulated storage devices. Note that this will not migrate anonymous or internal-use bitmaps, as those are defined as having no name. This will also fix the Coverity issues Peter Maydell has been asking about for the past several releases, as well as fixing a real bug. Reported-by: Peter Maydell Reported-by: Coverity =F0=9F=98=85 Reported-by: aihua liang Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=3D1652490 Fixes: Coverity CID 1390625 CC: Stefan Hajnoczi Signed-off-by: John Snow Reviewed-by: Vladimir Sementsov-Ogievskiy --- migration/block-dirty-bitmap.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c index d1bb863cb6..4a896a09eb 100644 --- a/migration/block-dirty-bitmap.c +++ b/migration/block-dirty-bitmap.c @@ -273,7 +273,6 @@ static int init_dirty_bitmap_migration(void) BlockDriverState *bs; BdrvDirtyBitmap *bitmap; DirtyBitmapMigBitmapState *dbms; - BdrvNextIterator it; Error *local_err =3D NULL; =20 dirty_bitmap_mig_state.bulk_completed =3D false; @@ -281,13 +280,8 @@ static int init_dirty_bitmap_migration(void) dirty_bitmap_mig_state.prev_bitmap =3D NULL; dirty_bitmap_mig_state.no_bitmaps =3D false; =20 - for (bs =3D bdrv_first(&it); bs; bs =3D bdrv_next(&it)) { - const char *drive_name =3D bdrv_get_device_or_node_name(bs); - - /* skip automatically inserted nodes */ - while (bs && bs->drv && bs->implicit) { - bs =3D backing_bs(bs); - } + for (bs =3D bdrv_next_all_states(NULL); bs; bs =3D bdrv_next_all_state= s(bs)) { + const char *name =3D bdrv_get_device_or_node_name(bs); =20 for (bitmap =3D bdrv_dirty_bitmap_next(bs, NULL); bitmap; bitmap =3D bdrv_dirty_bitmap_next(bs, bitmap)) @@ -296,7 +290,7 @@ static int init_dirty_bitmap_migration(void) continue; } =20 - if (drive_name =3D=3D NULL) { + if (!name || strcmp(name, "") =3D=3D 0) { error_report("Found bitmap '%s' in unnamed node %p. It can= 't " "be migrated", bdrv_dirty_bitmap_name(bitmap)= , bs); goto fail; @@ -313,7 +307,7 @@ static int init_dirty_bitmap_migration(void) =20 dbms =3D g_new0(DirtyBitmapMigBitmapState, 1); dbms->bs =3D bs; - dbms->node_name =3D drive_name; + dbms->node_name =3D name; dbms->bitmap =3D bitmap; dbms->total_sectors =3D bdrv_nb_sectors(bs); dbms->sectors_per_chunk =3D CHUNK_SIZE * 8 * --=20 2.20.1