[{"id":3669194,"web_url":"http://patchwork.ozlabs.org/comment/3669194/","msgid":"<acQPOrC5YA89kr1P@x1.local>","list_archive_url":null,"date":"2026-03-25T16:37:14","subject":"Re: [RFC PATCH v1 02/17] vmstate: Remove vmstate_use_marker_field","submitter":{"id":67717,"url":"http://patchwork.ozlabs.org/api/people/67717/","name":"Peter Xu","email":"peterx@redhat.com"},"content":"On Tue, Mar 24, 2026 at 04:43:17PM -0300, Fabiano Rosas wrote:\n> Bring back is_null, but set use_marker_field based on it. This makes\n> it clear that the compression logic is only because of the null\n> marker. When the marker is not null, it doesn't make sense to\n> compress.\n\nYeah I see where this came from, I agree the is_null case is at least\nharder to follow now when without that variable being around.\n\nI'll squash this into my commit for now, maybe I'll still try to keep the\ncomments somewhere.\n\nThen I'll also hope we can remove the whole JSON blob very soon.  Do you\nplan to look into the \"vmsd walker rewrite analyze-migration script\" plan a\nbit?  Let me know if you want me to try; it'll not happen immediately, but\nafter seeing this I'm more eager to try removing those..\n\nWhen those are ready, we should be able to remove is_null again.\n\n> \n> Signed-off-by: Fabiano Rosas <farosas@suse.de>\n> ---\n>  migration/vmstate.c | 36 ++++++++++--------------------------\n>  1 file changed, 10 insertions(+), 26 deletions(-)\n> \n> diff --git a/migration/vmstate.c b/migration/vmstate.c\n> index 7d7d9c7e18..7edfa3d990 100644\n> --- a/migration/vmstate.c\n> +++ b/migration/vmstate.c\n> @@ -240,22 +240,6 @@ static bool vmstate_post_load(const VMStateDescription *vmsd,\n>      return true;\n>  }\n>  \n> -\n> -/*\n> - * If we will use a ptr marker in the stream for a field?  Two use cases:\n> - *\n> - * (1) When used with VMS_ARRAY_OF_POINTER_ALLOW_NULL, it must always be\n> - *     present to imply the population status of the pointer.\n> - *\n> - * (2) When used with normal VMSD array fields, only emit a null ptr marker\n> - *     if the pointer is NULL.\n> - */\n> -static inline bool\n> -vmstate_use_marker_field(void *ptr, int size, bool dynamic_array)\n> -{\n> -    return (!ptr && size) || dynamic_array;\n> -}\n> -\n>  bool vmstate_load_vmsd(QEMUFile *f, const VMStateDescription *vmsd,\n>                         void *opaque, int version_id, Error **errp)\n>  {\n> @@ -318,8 +302,8 @@ bool vmstate_load_vmsd(QEMUFile *f, const VMStateDescription *vmsd,\n>                      curr_elem = *(void **)curr_elem_p;\n>                  }\n>  \n> -                use_marker_field = vmstate_use_marker_field(curr_elem, size,\n> -                                                            use_dynamic_array);\n> +                use_marker_field = use_dynamic_array || (!curr_elem && size);\n> +\n>                  if (use_marker_field) {\n>                      /* Read the marker instead of VMSD first */\n>                      if (!vmstate_ptr_marker_load(f, &load_field, errp)) {\n> @@ -634,7 +618,7 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>              int i, n_elems = vmstate_n_elems(opaque, field);\n>              int size = vmstate_size(opaque, field);\n>              JSONWriter *vmdesc_loop = vmdesc;\n> -            bool use_marker_field_prev = false;\n> +            bool is_null_prev = false;\n>              /*\n>               * When this is enabled, it means we will always push a ptr\n>               * marker first for each element saying if it's populated.\n> @@ -651,7 +635,7 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>              for (i = 0; i < n_elems; i++) {\n>                  void *curr_elem = first_elem + size * i;\n>                  const VMStateField *inner_field;\n> -                bool use_marker_field;\n> +                bool use_marker_field, is_null;\n>                  int max_elems = n_elems - i;\n>  \n>                  if (field->flags & VMS_ARRAY_OF_POINTER) {\n> @@ -659,8 +643,8 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>                      curr_elem = *(void **)curr_elem;\n>                  }\n>  \n> -                use_marker_field = vmstate_use_marker_field(curr_elem, size,\n> -                                                            use_dynamic_array);\n> +                is_null = (!curr_elem && size);\n> +                use_marker_field = use_dynamic_array || is_null;\n>  \n>                  if (use_marker_field) {\n>                      inner_field = vmsd_create_ptr_marker_field(field);\n> @@ -681,16 +665,16 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>                   */\n>                  if (vmdesc && vmsd_can_compress(field) &&\n>                      (field->flags & VMS_ARRAY_OF_POINTER) &&\n> -                    use_marker_field != use_marker_field_prev) {\n> +                    is_null != is_null_prev) {\n>  \n> -                    use_marker_field_prev = use_marker_field;\n> +                    is_null_prev = is_null;\n>                      vmdesc_loop = vmdesc;\n>  \n>                      for (int j = i + 1; j < n_elems; j++) {\n>                          void *elem = *(void **)(first_elem + size * j);\n> -                        bool elem_use_marker_field = !elem && size;\n> +                        bool elem_is_null = !elem && size;\n>  \n> -                        if (use_marker_field != elem_use_marker_field) {\n> +                        if (is_null != elem_is_null) {\n>                              max_elems = j - i;\n>                              break;\n>                          }\n> -- \n> 2.51.0\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=fJdLz1Oz;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=google header.b=TqnK63ng;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgsyy681Gz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 03:38:02 +1100 (AEDT)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w5REU-00033f-JM; Wed, 25 Mar 2026 12:37:26 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <peterx@redhat.com>) id 1w5RES-00033U-Mp\n for qemu-devel@nongnu.org; Wed, 25 Mar 2026 12:37:24 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <peterx@redhat.com>) id 1w5REQ-0003CD-T6\n for qemu-devel@nongnu.org; Wed, 25 Mar 2026 12:37:24 -0400","from mail-qk1-f197.google.com (mail-qk1-f197.google.com\n [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-128-3bfFbN8zNxe4CRKKTLAK9w-1; Wed, 25 Mar 2026 12:37:17 -0400","by mail-qk1-f197.google.com with SMTP id\n af79cd13be357-8cd827a356aso26492285a.3\n for <qemu-devel@nongnu.org>; Wed, 25 Mar 2026 09:37:17 -0700 (PDT)","from x1.local ([142.189.10.167]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8d00e39fc17sm26679785a.5.2026.03.25.09.37.15\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 25 Mar 2026 09:37:15 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774456641;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=kSivG1+6jzGmG3zTOrAIc8C7zvlAQ8ESRrAqVCQDPBo=;\n b=fJdLz1Oz0TYXv1MFtOO+rPRCtAllSb45vXxM3c/dN0pNaeomaF/vCx231ApTaZGRFWRFlH\n oEeIAq7nDvSFYtV2qlfokwNLUbCPq1i9AF0R5+rLU8E/WJpkkbWjTU89NWQWySYIy3kjK4\n 2zzCYRO8I9pwkcaHeEGyq7UMHiGLwZE=","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1774456637; x=1775061437; darn=nongnu.org;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;\n bh=kSivG1+6jzGmG3zTOrAIc8C7zvlAQ8ESRrAqVCQDPBo=;\n b=TqnK63ng9B8R0V/e+nSIqMpaNlbfZnO4UZquDR6Snh8ji/F1IxYgm+jDt4J9Fm0RI1\n rBuVJGy21NLiDn5PC5KomLx2CV2w2tIcZnbxKbuRv0R5CiXoiCk58HU1yjXq9MIiaGY5\n cvTIw46Zyw+KOU8VBD1e2nFPTsqiZk+QDe+3yvirLiBngkAXxJyTZb0LW9lFDRGOxwwK\n OpeDgs9PFNRg7JUvilegtGtg9bD/RyqYTtHJZHyihtlv9CmqaL/hiKHLGjYzA/hRxte3\n 51tfw9EjQ1xxS7zOVvC/YywY+xFTGg11Zf+WUdSDq1Qk/TAnmWTPfSKIybmTpJQbxO+2\n iwDw=="],"X-MC-Unique":"3bfFbN8zNxe4CRKKTLAK9w-1","X-Mimecast-MFC-AGG-ID":"3bfFbN8zNxe4CRKKTLAK9w_1774456637","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774456637; x=1775061437;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=kSivG1+6jzGmG3zTOrAIc8C7zvlAQ8ESRrAqVCQDPBo=;\n b=avj11QHenvbkh6GYTuAKLckBgjm+6vUelA1sj9B1PpToJoH85Iqjx37cKOB+KJcMMT\n +jE5MNrAdaIgxEDuE01ND6ieFkj9JUeyDyFhdwjwkcTgVcC215kmRmeziK7+auDhXTyx\n AKaqlwddRYhSsF68HPw+niLLb5fFMEs5oMGn2UsFPtXHu8cY5wQQg1w0gC0bsl8n20zN\n NjBp6U6mKpBYoMfJ2VyqpTlYr+O+iwaf2iTGgcMx/ZFUJTPKmaDw3q2ysJrjzf+DHTSs\n n+CieMvdvRkixpCtCCqK3OW6vHv2Cw+Q1xmJ940feYDyC1l0hnutWxsKST+qR3YxwNu3\n Dztg==","X-Gm-Message-State":"AOJu0YzKXNtT3/s/H2ENWXicVP1czNUvWxp8fSuf46ZvP0gjusO0WPMt\n L5LYYQw2EFyFNL6Ri5S9oxVw5ZpRcQ1I9H/BevtyjZ7tcfEhPpuojD0SPACx6yyZRS/hcIrAad7\n MIu3fyjCJlOnbtdWFPm0inTDkZVaS7ZLOgsoT5rTyjym07/dK8Jg6Rxpg4wiY+tbd","X-Gm-Gg":"ATEYQzzvq9bJKVLQT+qzXt5LWbwblXw9yFP7sSD+bCVR4RSbGlPxayXVi49oPoKuLA/\n x4SI0VhJAldcQf6ky6VCnik7KzRpl5ffJdWJXS8SPrffc6MNb7sVGS3wjyKodbA9tGy4A74I/80\n Zts6RmGgjGfTFYMNX6U9rf/IprvQrr5QTPg+GyNQh6y0rPe+5H5Hnp6lvaG5HqozsE4HMohMCuN\n 97ID+nVUof1GO1hVHCUiTjFQtG7KgHstTV69yEimnyC9yKUp2BFuK9DFXk1b6aEuSa1ChX5w78O\n neOfxsmVt1JfaECEEApTt3dhW1HYmrGGy0m/bqLDxFtmwg0Ti4q4pAZSVCGCs1kgpFGwKBCw2bS\n Ljsp5j/2o9EA85Q==","X-Received":["by 2002:a05:620a:298e:b0:8cd:c086:98d5 with SMTP id\n af79cd13be357-8d000f1af74mr625380585a.22.1774456636526;\n Wed, 25 Mar 2026 09:37:16 -0700 (PDT)","by 2002:a05:620a:298e:b0:8cd:c086:98d5 with SMTP id\n af79cd13be357-8d000f1af74mr625372485a.22.1774456635853;\n Wed, 25 Mar 2026 09:37:15 -0700 (PDT)"],"Date":"Wed, 25 Mar 2026 12:37:14 -0400","From":"Peter Xu <peterx@redhat.com>","To":"Fabiano Rosas <farosas@suse.de>","Cc":"qemu-devel@nongnu.org, Alexander Mikhalitsyn <alexander@mihalicyn.com>,\n Juraj Marcin <jmarcin@redhat.com>","Subject":"Re: [RFC PATCH v1 02/17] vmstate: Remove vmstate_use_marker_field","Message-ID":"<acQPOrC5YA89kr1P@x1.local>","References":"<20260324194333.30004-1-farosas@suse.de>\n <20260324194333.30004-3-farosas@suse.de>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20260324194333.30004-3-farosas@suse.de>","Received-SPF":"pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-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.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3669254,"web_url":"http://patchwork.ozlabs.org/comment/3669254/","msgid":"<87se9nkdb0.fsf@suse.de>","list_archive_url":null,"date":"2026-03-25T17:51:31","subject":"Re: [RFC PATCH v1 02/17] vmstate: Remove vmstate_use_marker_field","submitter":{"id":85343,"url":"http://patchwork.ozlabs.org/api/people/85343/","name":"Fabiano Rosas","email":"farosas@suse.de"},"content":"Peter Xu <peterx@redhat.com> writes:\n\n> On Tue, Mar 24, 2026 at 04:43:17PM -0300, Fabiano Rosas wrote:\n>> Bring back is_null, but set use_marker_field based on it. This makes\n>> it clear that the compression logic is only because of the null\n>> marker. When the marker is not null, it doesn't make sense to\n>> compress.\n>\n> Yeah I see where this came from, I agree the is_null case is at least\n> harder to follow now when without that variable being around.\n>\n> I'll squash this into my commit for now, maybe I'll still try to keep the\n> comments somewhere.\n>\n> Then I'll also hope we can remove the whole JSON blob very soon.  Do you\n> plan to look into the \"vmsd walker rewrite analyze-migration script\" plan a\n> bit?  Let me know if you want me to try; it'll not happen immediately, but\n> after seeing this I'm more eager to try removing those..\n>\n\nI don't think I'll have time to work on it properly. Actually, I have\nthe feeling this is something that will take some effort. We may need to\nmake little steps of progress towards it. If you have the opportunity to\nwork on something, go ahead.\n\nThe first step might be to stop emitting the JSON where\nappropriate.\n\n> When those are ready, we should be able to remove is_null again.\n>\n\nI'm also considering whether we really need the compression logic at\nall. If we remove the blob from the stream and make it a separate\ncommand then we could simply just output the entire array of zeroes and\nlet external tools deal with it. I bet jq has a way to display that data\nnicely.\n\n>> \n>> Signed-off-by: Fabiano Rosas <farosas@suse.de>\n>> ---\n>>  migration/vmstate.c | 36 ++++++++++--------------------------\n>>  1 file changed, 10 insertions(+), 26 deletions(-)\n>> \n>> diff --git a/migration/vmstate.c b/migration/vmstate.c\n>> index 7d7d9c7e18..7edfa3d990 100644\n>> --- a/migration/vmstate.c\n>> +++ b/migration/vmstate.c\n>> @@ -240,22 +240,6 @@ static bool vmstate_post_load(const VMStateDescription *vmsd,\n>>      return true;\n>>  }\n>>  \n>> -\n>> -/*\n>> - * If we will use a ptr marker in the stream for a field?  Two use cases:\n>> - *\n>> - * (1) When used with VMS_ARRAY_OF_POINTER_ALLOW_NULL, it must always be\n>> - *     present to imply the population status of the pointer.\n>> - *\n>> - * (2) When used with normal VMSD array fields, only emit a null ptr marker\n>> - *     if the pointer is NULL.\n>> - */\n>> -static inline bool\n>> -vmstate_use_marker_field(void *ptr, int size, bool dynamic_array)\n>> -{\n>> -    return (!ptr && size) || dynamic_array;\n>> -}\n>> -\n>>  bool vmstate_load_vmsd(QEMUFile *f, const VMStateDescription *vmsd,\n>>                         void *opaque, int version_id, Error **errp)\n>>  {\n>> @@ -318,8 +302,8 @@ bool vmstate_load_vmsd(QEMUFile *f, const VMStateDescription *vmsd,\n>>                      curr_elem = *(void **)curr_elem_p;\n>>                  }\n>>  \n>> -                use_marker_field = vmstate_use_marker_field(curr_elem, size,\n>> -                                                            use_dynamic_array);\n>> +                use_marker_field = use_dynamic_array || (!curr_elem && size);\n>> +\n>>                  if (use_marker_field) {\n>>                      /* Read the marker instead of VMSD first */\n>>                      if (!vmstate_ptr_marker_load(f, &load_field, errp)) {\n>> @@ -634,7 +618,7 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>>              int i, n_elems = vmstate_n_elems(opaque, field);\n>>              int size = vmstate_size(opaque, field);\n>>              JSONWriter *vmdesc_loop = vmdesc;\n>> -            bool use_marker_field_prev = false;\n>> +            bool is_null_prev = false;\n>>              /*\n>>               * When this is enabled, it means we will always push a ptr\n>>               * marker first for each element saying if it's populated.\n>> @@ -651,7 +635,7 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>>              for (i = 0; i < n_elems; i++) {\n>>                  void *curr_elem = first_elem + size * i;\n>>                  const VMStateField *inner_field;\n>> -                bool use_marker_field;\n>> +                bool use_marker_field, is_null;\n>>                  int max_elems = n_elems - i;\n>>  \n>>                  if (field->flags & VMS_ARRAY_OF_POINTER) {\n>> @@ -659,8 +643,8 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>>                      curr_elem = *(void **)curr_elem;\n>>                  }\n>>  \n>> -                use_marker_field = vmstate_use_marker_field(curr_elem, size,\n>> -                                                            use_dynamic_array);\n>> +                is_null = (!curr_elem && size);\n>> +                use_marker_field = use_dynamic_array || is_null;\n>>  \n>>                  if (use_marker_field) {\n>>                      inner_field = vmsd_create_ptr_marker_field(field);\n>> @@ -681,16 +665,16 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,\n>>                   */\n>>                  if (vmdesc && vmsd_can_compress(field) &&\n>>                      (field->flags & VMS_ARRAY_OF_POINTER) &&\n>> -                    use_marker_field != use_marker_field_prev) {\n>> +                    is_null != is_null_prev) {\n>>  \n>> -                    use_marker_field_prev = use_marker_field;\n>> +                    is_null_prev = is_null;\n>>                      vmdesc_loop = vmdesc;\n>>  \n>>                      for (int j = i + 1; j < n_elems; j++) {\n>>                          void *elem = *(void **)(first_elem + size * j);\n>> -                        bool elem_use_marker_field = !elem && size;\n>> +                        bool elem_is_null = !elem && size;\n>>  \n>> -                        if (use_marker_field != elem_use_marker_field) {\n>> +                        if (is_null != elem_is_null) {\n>>                              max_elems = j - i;\n>>                              break;\n>>                          }\n>> -- \n>> 2.51.0\n>>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=aHoa4SWE;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=VDjMzKNN;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=aHoa4SWE;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=VDjMzKNN;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","smtp-out1.suse.de;\n\tnone"],"Received":["from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgvcj0F2vz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 04:52:21 +1100 (AEDT)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w5SOJ-0001Bs-Ka; Wed, 25 Mar 2026 13:51:39 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <farosas@suse.de>) id 1w5SOI-0001Bh-88\n for qemu-devel@nongnu.org; Wed, 25 Mar 2026 13:51:38 -0400","from smtp-out1.suse.de ([195.135.223.130])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <farosas@suse.de>) id 1w5SOG-0000pL-FT\n for qemu-devel@nongnu.org; Wed, 25 Mar 2026 13:51:38 -0400","from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id CB8DC4D231;\n Wed, 25 Mar 2026 17:51:33 +0000 (UTC)","from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 67EF344512;\n Wed, 25 Mar 2026 17:51:33 +0000 (UTC)","from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n by imap1.dmz-prg2.suse.org with ESMTPSA id HzA9DqUgxGnIGwAAD6G6ig\n (envelope-from <farosas@suse.de>); Wed, 25 Mar 2026 17:51:33 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1774461093;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=7gqo1O8e36tUbKSa6c/92/NJbXAkfX+28wwKvvBLDeA=;\n b=aHoa4SWEdnIxcerN4R4kYuVTUiGbaGq1OLmJwXwpbJbx7xoTGoKNVDlt/hL18eqCQVSWAR\n PMewpCpSH2oFtymENU8HRfQ0krPwTuwkBFOXAVDRyV+zPaIzztyFxyI2MJpuBC0T+q4eMF\n om11QKUHOXnN8yfOK5f9lAaxs6dDtxM=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1774461093;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=7gqo1O8e36tUbKSa6c/92/NJbXAkfX+28wwKvvBLDeA=;\n b=VDjMzKNNKhgntsE9Mfc+oeU60s1DfA8JXkIeyIRDxWe1Z6SaHbm9qofMYUf7LB85jOtr8D\n Q/5SjLkRR05GKGDw==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1774461093;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=7gqo1O8e36tUbKSa6c/92/NJbXAkfX+28wwKvvBLDeA=;\n b=aHoa4SWEdnIxcerN4R4kYuVTUiGbaGq1OLmJwXwpbJbx7xoTGoKNVDlt/hL18eqCQVSWAR\n PMewpCpSH2oFtymENU8HRfQ0krPwTuwkBFOXAVDRyV+zPaIzztyFxyI2MJpuBC0T+q4eMF\n om11QKUHOXnN8yfOK5f9lAaxs6dDtxM=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1774461093;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=7gqo1O8e36tUbKSa6c/92/NJbXAkfX+28wwKvvBLDeA=;\n b=VDjMzKNNKhgntsE9Mfc+oeU60s1DfA8JXkIeyIRDxWe1Z6SaHbm9qofMYUf7LB85jOtr8D\n Q/5SjLkRR05GKGDw=="],"From":"Fabiano Rosas <farosas@suse.de>","To":"Peter Xu <peterx@redhat.com>","Cc":"qemu-devel@nongnu.org, Alexander Mikhalitsyn <alexander@mihalicyn.com>,\n Juraj Marcin <jmarcin@redhat.com>","Subject":"Re: [RFC PATCH v1 02/17] vmstate: Remove vmstate_use_marker_field","In-Reply-To":"<acQPOrC5YA89kr1P@x1.local>","References":"<20260324194333.30004-1-farosas@suse.de>\n <20260324194333.30004-3-farosas@suse.de> <acQPOrC5YA89kr1P@x1.local>","Date":"Wed, 25 Mar 2026 14:51:31 -0300","Message-ID":"<87se9nkdb0.fsf@suse.de>","MIME-Version":"1.0","Content-Type":"text/plain","X-Spamd-Result":"default: False [-4.30 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n ARC_NA(0.00)[]; MISSING_XM_UA(0.00)[]; RCVD_TLS_ALL(0.00)[];\n MIME_TRACE(0.00)[0:+]; RCVD_VIA_SMTP_AUTH(0.00)[];\n TO_DN_SOME(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com];\n MID_RHS_MATCH_FROM(0.00)[];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4];\n FROM_EQ_ENVFROM(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[];\n RCVD_COUNT_TWO(0.00)[2];\n DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo, suse.de:mid,\n suse.de:email]","X-Spam-Score":"-4.30","Received-SPF":"pass client-ip=195.135.223.130; envelope-from=farosas@suse.de;\n helo=smtp-out1.suse.de","X-Spam_score_int":"-43","X-Spam_score":"-4.4","X-Spam_bar":"----","X-Spam_report":"(-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,\n 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.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]