From nobody Sat May 18 14:54:11 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1612979706; cv=none; d=zohomail.com; s=zohoarc; b=imNkb7qherqzgsH6wPTHvZcyTQaILDgLug7x4lG3GtkY9XtgEb7i6Dfxc0sko2J65IWhcwo5MB+aNAZg+/mywUwsD9t6TgH6jGR4QfrysNp4b64m7+cY51cGNb/4WLHQHWVcaBa22ondSf0n3Y5t6ER2ErhXe/AvFb8/clXnQac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1612979706; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=H1xQGlRxXrCPO9HMaifmi3/8w+FSEXik1tDJBShY4Ws=; b=ZYNIw0jcnggvYtvXBincE2jlet3qplik4P3pdtRlNi40edQT/J5v+3FS/rVxYYg+sqlyEd/eGxmGHIqVIAIxckdiizzqZUulRXGsf4LOlOqqWLKOR0tjfp7VVDlwV6kOUoOCTrMgweTy09MAQrd43DLpKd3TgctdrkfEwLrE4uI= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1612979706483728.6287191284276; Wed, 10 Feb 2021 09:55:06 -0800 (PST) Received: from localhost ([::1]:36274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9t6K-0002mE-Cr for importer@patchew.org; Wed, 10 Feb 2021 12:16:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44782) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l9sk9-0003SX-Rt for qemu-devel@nongnu.org; Wed, 10 Feb 2021 11:53:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:36518) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l9sk4-00035I-A4 for qemu-devel@nongnu.org; Wed, 10 Feb 2021 11:53:33 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-215-7OgvJMr4NtKWLOgbW150Zw-1; Wed, 10 Feb 2021 11:53:23 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6A37910983C6; Wed, 10 Feb 2021 16:53:22 +0000 (UTC) Received: from speedmetal.lan (unknown [10.40.208.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id D84A212D7E; Wed, 10 Feb 2021 16:53:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612976007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H1xQGlRxXrCPO9HMaifmi3/8w+FSEXik1tDJBShY4Ws=; b=W9Hy5/20y8W43LpmB5uAM6uPOH3r0hism79+1o/AdVkZxuN3xOnV63rMC0lRiqDJ1k7vLf cAxrQCXUYWxoADWHxz5eg0LqWeHHE27akEqR7tEbMGuNLEmhWyV/1dd2Uf/oYtgFa6OQRZ 61lM9+3UxYU0CRqK3E7wwwLCFGhgPfI= X-MC-Unique: 7OgvJMr4NtKWLOgbW150Zw-1 From: Peter Krempa To: qemu-devel@nongnu.org Subject: [PATCH v2 1/2] migration: dirty-bitmap: Convert alias map inner members to a struct Date: Wed, 10 Feb 2021 17:53:16 +0100 Message-Id: <394ba566353d8b9fa30a4543c702325af555cbdc.1612953419.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pkrempa@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=216.205.24.124; envelope-from=pkrempa@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.568, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: Vladimir Sementsov-Ogievskiy , Markus Armbruster , qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Currently the alias mapping hash stores just strings of the target objects internally. In further patches we'll be adding another member which will need to be stored in the map so convert the members to a struct. Signed-off-by: Peter Krempa Reviewed-by: Eric Blake Reviewed-by: Vladimir Sementsov-Ogievskiy --- v2: - NULL-check in freeing function (Eric) - style problems (Vladimir) migration/block-dirty-bitmap.c | 43 +++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c index c61d382be8..0169f672df 100644 --- a/migration/block-dirty-bitmap.c +++ b/migration/block-dirty-bitmap.c @@ -169,6 +169,22 @@ typedef struct DBMState { static DBMState dbm_state; +typedef struct AliasMapInnerBitmap { + char *string; +} AliasMapInnerBitmap; + +static void free_alias_map_inner_bitmap(void *amin_ptr) +{ + AliasMapInnerBitmap *amin =3D amin_ptr; + + if (!amin_ptr) { + return; + } + + g_free(amin->string); + g_free(amin); +} + /* For hash tables that map node/bitmap names to aliases */ typedef struct AliasMapInnerNode { char *string; @@ -263,8 +279,8 @@ static GHashTable *construct_alias_map(const BitmapMigr= ationNodeAliasList *bbm, node_map_to =3D bmna->node_name; } - bitmaps_map =3D g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, g_free); + bitmaps_map =3D g_hash_table_new_full(g_str_hash, g_str_equal, g_f= ree, + free_alias_map_inner_bitmap); amin =3D g_new(AliasMapInnerNode, 1); *amin =3D (AliasMapInnerNode){ @@ -277,6 +293,7 @@ static GHashTable *construct_alias_map(const BitmapMigr= ationNodeAliasList *bbm, for (bmbal =3D bmna->bitmaps; bmbal; bmbal =3D bmbal->next) { const BitmapMigrationBitmapAlias *bmba =3D bmbal->value; const char *bmap_map_from, *bmap_map_to; + AliasMapInnerBitmap *bmap_inner; if (strlen(bmba->alias) > UINT8_MAX) { error_setg(errp, @@ -311,8 +328,11 @@ static GHashTable *construct_alias_map(const BitmapMig= rationNodeAliasList *bbm, } } + bmap_inner =3D g_new0(AliasMapInnerBitmap, 1); + bmap_inner->string =3D g_strdup(bmap_map_to); + g_hash_table_insert(bitmaps_map, - g_strdup(bmap_map_from), g_strdup(bmap_map= _to)); + g_strdup(bmap_map_from), bmap_inner); } } @@ -538,11 +558,15 @@ static int add_bitmaps_to_list(DBMSaveState *s, Block= DriverState *bs, } if (bitmap_aliases) { - bitmap_alias =3D g_hash_table_lookup(bitmap_aliases, bitmap_na= me); - if (!bitmap_alias) { + AliasMapInnerBitmap *bmap_inner; + + bmap_inner =3D g_hash_table_lookup(bitmap_aliases, bitmap_name= ); + if (!bmap_inner) { /* Skip bitmaps with no alias */ continue; } + + bitmap_alias =3D bmap_inner->string; } else { if (strlen(bitmap_name) > UINT8_MAX) { error_report("Cannot migrate bitmap '%s' on node '%s': " @@ -1074,14 +1098,17 @@ static int dirty_bitmap_load_header(QEMUFile *f, DB= MLoadState *s, bitmap_name =3D s->bitmap_alias; if (!s->cancelled && bitmap_alias_map) { - bitmap_name =3D g_hash_table_lookup(bitmap_alias_map, - s->bitmap_alias); - if (!bitmap_name) { + AliasMapInnerBitmap *bmap_inner; + + bmap_inner =3D g_hash_table_lookup(bitmap_alias_map, s->bitmap= _alias); + if (!bmap_inner) { error_report("Error: Unknown bitmap alias '%s' on node " "'%s' (alias '%s')", s->bitmap_alias, s->bs->node_name, s->node_alias); cancel_incoming_locked(s); } + + bitmap_name =3D bmap_inner->string; } if (!s->cancelled) { --=20 2.29.2 From nobody Sat May 18 14:54:11 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1612978425; cv=none; d=zohomail.com; s=zohoarc; b=E/wJDAdXj/dFotlC0JY/z9PmZgC+bgWT/m9yAxTV4CmXYkX/2iBL5abBJqcKvA0i+LArf5sPimqG35ZBMCccqRD7j6HXZijcZsyyuTFvvM++JZlwllF0JX3Ba1Cp3zjdtxefE0ENfrAy7sK54YpWMHiChGN8hzLl8rC77oPKKJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1612978425; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/Gi8T+Qi5HIh2n6tIGEzELbmRSeFkugTlBDt1y9IxNY=; b=PA9ibU0FssM2rYiotSjPg+8cJHiT9PyZooXCpXgLwYrF+wB2nsj8ztTMyiN8auHSKuyYvEx9NbWocFbudEUx2pEIIffeYEbu8852ted+mdWZGgWkaMWwzom0ocTTXwPe65CPrZ87C8rkbZncVQ574tipQgL8g8D8hjuz+UVMbHM= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1612978425382381.0839182623322; Wed, 10 Feb 2021 09:33:45 -0800 (PST) Received: from localhost ([::1]:58842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9t44-0000Km-9F for importer@patchew.org; Wed, 10 Feb 2021 12:14:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44778) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l9sk8-0003Rv-PY for qemu-devel@nongnu.org; Wed, 10 Feb 2021 11:53:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:22658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l9sk5-00035Q-4m for qemu-devel@nongnu.org; Wed, 10 Feb 2021 11:53:32 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-292-szt0m5f-MImQJDmUAwjYqg-1; Wed, 10 Feb 2021 11:53:25 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 61AFF192CC46; Wed, 10 Feb 2021 16:53:24 +0000 (UTC) Received: from speedmetal.lan (unknown [10.40.208.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id D693770477; Wed, 10 Feb 2021 16:53:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612976008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/Gi8T+Qi5HIh2n6tIGEzELbmRSeFkugTlBDt1y9IxNY=; b=Vj0X1WYvrPxs/5Nw1/2xe8mT+zHQAsGQ7IvPWnCOiS2qKQc04btNoA8YZNcZo2PX8tVe7S D9wc6nQ437I7OVvUnikG20/YkEHYoS1pLEGqa6dqQQz1jgR3gR5hY2E/6B46+Rlq4p7AM0 qQVfLVa6h816xdahn0C250br7x4z5cE= X-MC-Unique: szt0m5f-MImQJDmUAwjYqg-1 From: Peter Krempa To: qemu-devel@nongnu.org Subject: [PATCH v2 2/2] migration: dirty-bitmap: Allow control of bitmap persistance Date: Wed, 10 Feb 2021 17:53:17 +0100 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pkrempa@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=63.128.21.124; envelope-from=pkrempa@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.568, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=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: Vladimir Sementsov-Ogievskiy , Markus Armbruster , qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Bitmap's source persistance is transported over the migration stream and the destination mirrors it. In some cases the destination might want to persist bitmaps which are not persistent on the source (e.g. the result of merge of bitmaps from a number of layers on the source when migrating into a squashed image) but currently it would need to create another set of persistent bitmaps and merge them. This patch adds a 'transform' property to the alias map which allows to override the persistance of migrated bitmaps both on the source and destination sides. Signed-off-by: Peter Krempa --- v2: - grammar fixes (Eric) - added 'transform' object to group other possible transformations (Vladim= ir) - transformation can also be used on source (Vladimir) - put bmap_inner directly into DBMLoadState for deduplication (Vladimir) migration/block-dirty-bitmap.c | 38 +++++++++++++++++++++++++++------- qapi/migration.json | 20 +++++++++++++++++- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c index 0169f672df..a05bf74073 100644 --- a/migration/block-dirty-bitmap.c +++ b/migration/block-dirty-bitmap.c @@ -138,6 +138,13 @@ typedef struct LoadBitmapState { bool enabled; } LoadBitmapState; +typedef struct AliasMapInnerBitmap { + char *string; + + /* 'transform' properties borrowed from QAPI */ + BitmapMigrationBitmapAliasTransform *transform; +} AliasMapInnerBitmap; + /* State of the dirty bitmap migration (DBM) during load process */ typedef struct DBMLoadState { uint32_t flags; @@ -148,6 +155,7 @@ typedef struct DBMLoadState { BdrvDirtyBitmap *bitmap; bool before_vm_start_handled; /* set in dirty_bitmap_mig_before_vm_sta= rt */ + AliasMapInnerBitmap *bmap_inner; /* * cancelled @@ -169,10 +177,6 @@ typedef struct DBMState { static DBMState dbm_state; -typedef struct AliasMapInnerBitmap { - char *string; -} AliasMapInnerBitmap; - static void free_alias_map_inner_bitmap(void *amin_ptr) { AliasMapInnerBitmap *amin =3D amin_ptr; @@ -330,6 +334,7 @@ static GHashTable *construct_alias_map(const BitmapMigr= ationNodeAliasList *bbm, bmap_inner =3D g_new0(AliasMapInnerBitmap, 1); bmap_inner->string =3D g_strdup(bmap_map_to); + bmap_inner->transform =3D bmba->transform; g_hash_table_insert(bitmaps_map, g_strdup(bmap_map_from), bmap_inner); @@ -547,6 +552,7 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockDr= iverState *bs, } FOR_EACH_DIRTY_BITMAP(bs, bitmap) { + BitmapMigrationBitmapAliasTransform *bitmap_transform =3D NULL; bitmap_name =3D bdrv_dirty_bitmap_name(bitmap); if (!bitmap_name) { continue; @@ -567,6 +573,7 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockDr= iverState *bs, } bitmap_alias =3D bmap_inner->string; + bitmap_transform =3D bmap_inner->transform; } else { if (strlen(bitmap_name) > UINT8_MAX) { error_report("Cannot migrate bitmap '%s' on node '%s': " @@ -592,8 +599,15 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockD= riverState *bs, if (bdrv_dirty_bitmap_enabled(bitmap)) { dbms->flags |=3D DIRTY_BITMAP_MIG_START_FLAG_ENABLED; } - if (bdrv_dirty_bitmap_get_persistence(bitmap)) { - dbms->flags |=3D DIRTY_BITMAP_MIG_START_FLAG_PERSISTENT; + if (bitmap_transform && + bitmap_transform->has_persistent) { + if (bitmap_transform->persistent) { + dbms->flags |=3D DIRTY_BITMAP_MIG_START_FLAG_PERSISTENT; + } + } else { + if (bdrv_dirty_bitmap_get_persistence(bitmap)) { + dbms->flags |=3D DIRTY_BITMAP_MIG_START_FLAG_PERSISTENT; + } } QSIMPLEQ_INSERT_TAIL(&s->dbms_list, dbms, entry); @@ -801,6 +815,7 @@ static int dirty_bitmap_load_start(QEMUFile *f, DBMLoad= State *s) uint32_t granularity =3D qemu_get_be32(f); uint8_t flags =3D qemu_get_byte(f); LoadBitmapState *b; + bool persistent; if (s->cancelled) { return 0; @@ -825,7 +840,15 @@ static int dirty_bitmap_load_start(QEMUFile *f, DBMLoa= dState *s) return -EINVAL; } - if (flags & DIRTY_BITMAP_MIG_START_FLAG_PERSISTENT) { + if (s->bmap_inner && + s->bmap_inner->transform && + s->bmap_inner->transform->has_persistent) { + persistent =3D s->bmap_inner->transform->persistent; + } else { + persistent =3D flags & DIRTY_BITMAP_MIG_START_FLAG_PERSISTENT; + } + + if (persistent) { bdrv_dirty_bitmap_set_persistence(s->bitmap, true); } @@ -1109,6 +1132,7 @@ static int dirty_bitmap_load_header(QEMUFile *f, DBML= oadState *s, } bitmap_name =3D bmap_inner->string; + s->bmap_inner =3D bmap_inner; } if (!s->cancelled) { diff --git a/qapi/migration.json b/qapi/migration.json index ce14d78071..338135320a 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -536,6 +536,20 @@ 'data': [ 'none', 'zlib', { 'name': 'zstd', 'if': 'defined(CONFIG_ZSTD)' } ] } +## +# @BitmapMigrationBitmapAliasTransform: +# +# @persistent: If present, the bitmap will be turned persistent +# or transient depending on this parameter. +# (since 6.0) +# +# Since: 6.0 +## +{ 'struct': 'BitmapMigrationBitmapAliasTransform', + 'data': { + '*persistent': 'bool' + } } + ## # @BitmapMigrationBitmapAlias: # @@ -544,12 +558,16 @@ # @alias: An alias name for migration (for example the bitmap name on # the opposite site). # +# @transform: Allows to modify properties of the migrated bitmap. +# (since 6.0) +# # Since: 5.2 ## { 'struct': 'BitmapMigrationBitmapAlias', 'data': { 'name': 'str', - 'alias': 'str' + 'alias': 'str', + '*transform': 'BitmapMigrationBitmapAliasTransform' } } ## --=20 2.29.2