From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418521; cv=none; d=zohomail.com; s=zohoarc; b=U7umAJpmJJUnyzJapnjaqjpDyV9citBBwsCLjXXHwIOXsGmJ+LBkXQHew9bGCCAzaMI6aQC9cCl1YtqWWE0blzQxrZta5QErpAML9FxWvHpU7DpHnFeYagrCALT6szN0+bA5htq/WBvAML9Cloryvw5UTfpuoKSjGVGhhHvraz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418521; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=P0vnTfKN9mBALXRRApHAiAVJB0IOhWo5vRzGufEarfA=; b=UDswBhNs52rtvM9CWNXQfB67YMVRp4WyCoV/8x87XiDcG6JgJvCnNfRonR8Nk89eP8Zb5rO+z31TT54fZO5V+qI1CkuInBerDg27EuVXB43ZgaAzm8uqGH0DmFHpjbymAd/rbFzJMSV9YZHG7rfQy+047dCCgq/LNcDCRy1vFyw= 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= (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 1754418521599485.6697735449616; Tue, 5 Aug 2025 11:28:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMOW-0004ZH-PT; Tue, 05 Aug 2025 14:28:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOR-0004Qg-2C for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOL-0003w4-5Z for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:07 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-UJi6KkJDNRSpV7VDr77nqg-1; Tue, 05 Aug 2025 14:28:00 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-237e6963f70so113499855ad.2 for ; Tue, 05 Aug 2025 11:28:00 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.27.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:27:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418482; 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=P0vnTfKN9mBALXRRApHAiAVJB0IOhWo5vRzGufEarfA=; b=TTlDMDkpXIjyLL7NZRqOJt73jukb3AxhZqbP3sNURFJ1LBVxUiQYky8iAwETgzIKw3S7i7 +ULBfWWlrP4P/82Xxq67L1MvS+Yfnql9TcgdVGAkH0xYUwsX+MSv2A4H8QdK0AisiBbT0K eWp8el7B3rXNKaHyXRX/XV/ZLd8ejdI= X-MC-Unique: UJi6KkJDNRSpV7VDr77nqg-1 X-Mimecast-MFC-AGG-ID: UJi6KkJDNRSpV7VDr77nqg_1754418480 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418479; x=1755023279; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P0vnTfKN9mBALXRRApHAiAVJB0IOhWo5vRzGufEarfA=; b=bWWlZ333FG+rVTtNd1t4jhgUdnLrKReK+qqu/IhZ4Y8mvMi0MuqVTHQrmORmBLX5zm 57weB1NcNd/7NdkBxMHfu2x48nvvdX1v7DAY4vc+oBNdk4LRthg3FmBHKuywql1LhYs2 X79eahqvWx88fEyprP1bLK1uZxtYFVL+lHwwBBTZLWzIqJUgGNREAQDSosu7may1uUyN b5g7BMQywicH9Pd8ZXE0T88tia666EvLjwZ+uvKq2KLS851hwmzmx6tjXOcewb3HyCgw fiob8bvi5pOZwwhaQ/SOcAih75kfbaeg7l6zS9IFfCOj0PC1cjqV11CstNhLK4Xffw/o pQ/w== X-Gm-Message-State: AOJu0YyU0qpM7W7crMX+0/IkUw+kK3TH6R4kNsTADtzkc7omLGRbOmr3 /gnkuHkRSWCMBgDXJHd1mTRUuy6wJsQvVk7vTKSF3f9HKMwpYNnHl8ieL+5WUlS+zXptMlijmUZ Rq6z8nH4Z0VCiENTwmksXG2TuAW7HKYt3MLSn7DjlPPvyPA1KwUr4XpIt X-Gm-Gg: ASbGnctsD3LsKs+NOex08ag/Cv5+Y5oUhPLob1R1hZCtucvxIztL8BrkfN6pK43HcfZ m+ZpCcN38du65soVrHBZvTM1CkwSsmS+zzgRVvLMr3uazOLU5hWY9n+kRxXqxXQy+RC7Li4yqIl hryk7FHCo01lfEp/xH0jCQXM7kjGj++2OXVBverObuWWcRMXux8mj0X+P5CfPKIi5+2vCg2mfvW HXfVSoXGIjloex2gGYVVAP3BIlM7FlX6kJGUB8EpfW6kS5qbd7GEIcW9ppJovqKHL3iMYPhwjay 0DKNmixia/0t/wiHiNo/Bab2F/HHS326Empu9jl5hh9WsuA35g== X-Received: by 2002:a17:903:1a67:b0:240:3c51:105e with SMTP id d9443c01a7336-2429f4244dfmr1185495ad.20.1754418479553; Tue, 05 Aug 2025 11:27:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHIBw4vzY7D+2+/eTVlZj1upcSX7s58MyZoUa1g6By8dGQlkSGH4M1dmhPwF6szIPAFtuHfSA== X-Received: by 2002:a17:903:1a67:b0:240:3c51:105e with SMTP id d9443c01a7336-2429f4244dfmr1185145ad.20.1754418479143; Tue, 05 Aug 2025 11:27:59 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:08 +0530 Subject: [PATCH v9 01/27] migration: push Error **errp into vmstate_subsection_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-1-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2856; i=armenon@redhat.com; h=from:subject:message-id; bh=/d4LLrpkwsmF//iBVP7+yiCjwa/n/EC+2GmDagzVr08=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+le768bTiuVxnGf0N77VK5xcnF2oIvCL7vpU8pC+ XdMTizvKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJEPEQz/jBp5t1ap1ipJth82 vP8sLMJdiTuJ59w1CxXtRHaOeUp7GBk61vHI62zQrPSzUZ2+dMs/t4+ay2Vcux/oc53IlsxVfMA LAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418523644124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_subsection_load() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/vmstate.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 5feaa3244d259874f03048326b2497e7db32e47c..24451b054c11dfca2d76e24b053= d604bb7184e1c 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -25,7 +25,7 @@ static int vmstate_subsection_save(QEMUFile *f, const VMS= tateDescription *vmsd, void *opaque, JSONWriter *vmdesc, Error **errp); static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque); + void *opaque, Error **errp); =20 /* Whether this field should exist for either save or load the VM? */ static bool @@ -225,7 +225,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescri= ption *vmsd, field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque); + ret =3D vmstate_subsection_load(f, vmsd, opaque, NULL); if (ret !=3D 0) { qemu_file_set_error(f, ret); return ret; @@ -566,7 +566,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, } =20 static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, - void *opaque) + void *opaque, Error **errp) { trace_vmstate_subsection_load(vmsd->name); =20 @@ -598,6 +598,8 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, sub_vmsd =3D vmstate_get_subsection(vmsd->subsections, idstr); if (sub_vmsd =3D=3D NULL) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(lookup)= "); + error_setg(errp, "VM subsection '%s' in '%s' does not exist", + idstr, vmsd->name); return -ENOENT; } qemu_file_skip(f, 1); /* subsection */ @@ -608,6 +610,9 @@ static int vmstate_subsection_load(QEMUFile *f, const V= MStateDescription *vmsd, ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); + error_setg(errp, + "Loading VM subsection '%s' in '%s' failed: %d", + idstr, vmsd->name, ret); return ret; } } --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418515; cv=none; d=zohomail.com; s=zohoarc; b=kfc+2QFszNC6xCjbfym8QITBcSTu9O+pZOPkyoaNl+AL6OxxWlf2KWU2cRfcVcrBcfIdfvO7KR2n9o4Um4dw3Pe72DJ3SCrHnUL9J8UHoAL5MKGviKACChFgR2vyizrd8eZwGYc5niB1LPJl3Ge1d68nvH/TQLbfS6sjC3iZ790= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418515; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YT0BmJ3WkdJbbG8ahaES5nTbqCBux0mY8uw3UhfoxPk=; b=dFCniBai2sSuXXWPqE0dd4GoL4e+PUkmNpZ2huKTxSIqQp/roHFdPZmwDvj+mxTkIOciqRkPbIsXWKUy6PSnbDNWGXZwzhsV5dX5NgueL7XYImg4SkaddNBTojcCkXIs5jhBq7Yb3rVBAtQKXyLxzvw5XW4O9c+sQiI5SjJj8+M= 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= (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 175441851564116.567957456799377; Tue, 5 Aug 2025 11:28:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMOZ-0004fa-Vi; Tue, 05 Aug 2025 14:28:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOW-0004al-Sz for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOS-0003x7-Uj for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:16 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-155-aMHdvBO8PqiwtUQtN9YIuw-1; Tue, 05 Aug 2025 14:28:10 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b423dcff27aso6955383a12.0 for ; Tue, 05 Aug 2025 11:28:10 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.27.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418492; 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=YT0BmJ3WkdJbbG8ahaES5nTbqCBux0mY8uw3UhfoxPk=; b=TzDY2maWePcFZFs+i56kzl/1A8O87les7SVliBVWB7gUSVt9MTMl+mRCG/3IlMwwgUdzN9 Unmd7cQkCgfCnKCGmbi5ybKGfkwFu+4YA8wvRbRLhSHw+zj6M9d+SLou8FeBML6s8IxILo rZAOa59RDkIcm+UuvjSR102toUW28JM= X-MC-Unique: aMHdvBO8PqiwtUQtN9YIuw-1 X-Mimecast-MFC-AGG-ID: aMHdvBO8PqiwtUQtN9YIuw_1754418489 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418489; x=1755023289; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YT0BmJ3WkdJbbG8ahaES5nTbqCBux0mY8uw3UhfoxPk=; b=xJbXuAqqxSXd/6RopM/dD7IiBlnWdZ+xR4sGjggkEFGGqIyswNtSc74KdPhZkZ6RR9 vefLEhtYxZGwbPeNiRCdT1CVzMFngWpt1NzkOVjBKP+nSQMdwkFsDb8/9eu0uptYju4X qPyWJ5d5pE5pCDfdBBsdpgGXAtKcLWc79IgGfvoQHTMGkemvD+39HhQXEvCNGg5ZINr3 fK9+KJ+u/aozl8W52yC26fn5jvw4Phgd6r5HqwA7hYTPGwycR9VHrTN6WZz5Si1gHMgz W96UYiXY9nO9iPdk16Ykhyx2Cg6m1d2rHjaeGLmPIRld/zlNvkxluRt05ZTF337idtOX hPyA== X-Gm-Message-State: AOJu0YxKwPOwmC9MagAMkYrVuALgm9mm7ezOmSyV4t+O0wCyxn+Qqnkd KNG+uyljJW6yBpdtcLUHEkM37eddjSgzU5mSSGpckaaAjXEeI3RUN6ENbabg2DmlgdYoGTWzFBh VwVu8TdpE/PLp9i9BPbbhWWyDUdSevDMA3yOr3kqvqgrkEbQSA4mJ7twF X-Gm-Gg: ASbGncsU/49U/XbhxD433m1s0Qh3zvsv1k6G3wcVl6UrMvnfZ6KpufM0IS3P1hmDKUO IZJyOeLUdZw+uHLDXqlvfm3eQe3ltMedZsH2k7PuF/StEgogoWVgHu/F+BC9UbXM52lm3v4QKv7 SnvfSmiZH77gBzUmlyTudgklTnUNJeFtfh4XV0VRThol5WueskiVmLJgaVa/8LtVr2ZnDthihJD nj+q3resdSH7k/zhUS6C2X2vjLOPKpTdJeT4/0ppr5Ab0VnbfiQFFLNT1OzfxFD7HlW4Supq7Oa I/3EN9ccfMgKtJFUS8QOleJRWOP/ETfxbpwYOuHrh/cBKer/iA== X-Received: by 2002:a17:903:2a8c:b0:240:763d:e9a6 with SMTP id d9443c01a7336-2429f4235cemr1137245ad.25.1754418488994; Tue, 05 Aug 2025 11:28:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFl+bCe7Vi5SXEZCQ7f5+94FVOvAESTmziOy6vXCdWVCZVFcLacSaYxcWO3aRouyYd0VfkBEA== X-Received: by 2002:a17:903:2a8c:b0:240:763d:e9a6 with SMTP id d9443c01a7336-2429f4235cemr1136755ad.25.1754418488361; Tue, 05 Aug 2025 11:28:08 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:09 +0530 Subject: [PATCH v9 02/27] migration: push Error **errp into vmstate_load_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-2-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=22251; i=armenon@redhat.com; h=from:subject:message-id; bh=om2uWdqi2JTRgY10tVhj3JcYKeC+BQP3vX0Kw6YUJPA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX2n3Jxqt7mpFS3e9+3psy4dfSz2TGxJkPwQ0+dTbV 9cpSrp2lLIwiHExyIopsjR8DZBtCiiMiLR9eR1mDisTyBAGLk4BmIj7HkaGT/KFFrJxNzv6W9cd XrTSsPzw59sFShbsv9sM7h5a1V74mOGfhcZ5RQ1lvQdl5Y/yGLTFnrYu2Rux5jSD+eJvfP4Hyya xAgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418517424116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load_state() must report an error in errp, in case of failure. In cases where we do not want to essentially set the error in errp object and also not abort/exit, the caller only passes &error_warn, to warn on error. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- hw/display/virtio-gpu.c | 2 +- hw/pci/pci.c | 3 ++- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/vfio/pci.c | 2 +- hw/virtio/virtio-mmio.c | 3 ++- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 4 ++-- include/migration/vmstate.h | 2 +- migration/cpr.c | 5 ++-- migration/savevm.c | 6 +++-- migration/vmstate-types.c | 11 +++++---- migration/vmstate.c | 56 ++++++++++++++++++++++++++++++-----------= ---- tests/unit/test-vmstate.c | 20 ++++++++-------- ui/vdagent.c | 2 +- 15 files changed, 75 insertions(+), 47 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 0a1a625b0ea6cf26cb0d799171a57ed3d3ab2442..5ff9f5e6dc0b6b112e36170318c= 900f893a73c5e 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1343,7 +1343,7 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, } =20 /* load & apply scanout state */ - vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1); + vmstate_load_state(f, &vmstate_virtio_gpu_scanouts, g, 1, &error_warn); =20 return 0; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c70b5ceebaf1f2b10768bd030526cbb518da2b8d..80545189980f176ca6a3dc9abce= 7043c8bc2708c 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -934,7 +934,8 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) int pci_device_load(PCIDevice *s, QEMUFile *f) { int ret; - ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id); + ret =3D vmstate_load_state(f, &vmstate_pci_device, s, s->version_id, + &error_warn); /* Restore the interrupt status bit. */ pci_update_irq_status(s); return ret; diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d2f85b39f30f7fc82e0c600144c0a958e1269b2c..bafcb9b76d81749925e31b5a0a1= 320b3332ad2cf 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1136,7 +1136,7 @@ static void virtio_ccw_save_config(DeviceState *d, QE= MUFile *f) static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1); + return vmstate_load_state(f, &vmstate_virtio_ccw_dev, dev, 1, &error_w= arn); } =20 static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 20f70fb2729de78b9636a6b8c869695dab4f8902..a4812afd0cc7c495080ef03a531= c7d279af29b33 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -648,7 +648,7 @@ static void *vscsi_load_request(QEMUFile *f, SCSIReques= t *sreq) assert(!req->active); =20 memset(req, 0, sizeof(*req)); - rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1); + rc =3D vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1, &error_= warn); if (rc) { fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->ta= g); return NULL; diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 4fa692c1a32bcfa4e4939e5fcb64f2bf19905b3b..04d385d7674f444844beeee7364= ee0424f762758 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2795,7 +2795,7 @@ static int vfio_pci_load_config(VFIODevice *vbasedev,= QEMUFile *f) old_addr[bar] =3D pdev->io_regions[bar].addr; } =20 - ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1, &erro= r_warn); if (ret) { return ret; } diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 532c67107ba1d2978a76cf49f9cdc1de1dea3e11..f14f0487fec3ed30d2cc3aec969= 50c2121265716 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -34,6 +34,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "trace.h" +#include "qapi/error.h" =20 static bool virtio_mmio_ioeventfd_enabled(DeviceState *d) { @@ -619,7 +620,7 @@ static int virtio_mmio_load_extra_state(DeviceState *op= aque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1, &error_wa= rn); } =20 static bool virtio_mmio_has_extra_state(DeviceState *opaque) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 767216d795998708f5716a23ae16c79cd90ff489..07f144d6d1bfbb561b28015de71= 762601080dc23 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -161,7 +161,7 @@ static int virtio_pci_load_extra_state(DeviceState *d, = QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1); + return vmstate_load_state(f, &vmstate_virtio_pci, proxy, 1, &error_war= n); } =20 static void virtio_pci_save_queue(DeviceState *d, int n, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 2ab1d20769495ea39445b87e3673b076ad172510..aac317a93c3cd55ece9b0fd858c= 7b2459f8242f9 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3317,14 +3317,14 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int ve= rsion_id) } =20 if (vdc->vmsd) { - ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id); + ret =3D vmstate_load_state(f, vdc->vmsd, vdev, version_id, &error_= warn); if (ret) { return ret; } } =20 /* Subsections */ - ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1); + ret =3D vmstate_load_state(f, &vmstate_virtio, vdev, 1, &error_warn); if (ret) { return ret; } diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac425ba67cd5ca7ad97bcf570f9e19abe..056781b1c21e737583f081594d9= f88b32adfd674 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1196,7 +1196,7 @@ extern const VMStateInfo vmstate_info_qlist; } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id); + void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc); int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, diff --git a/migration/cpr.c b/migration/cpr.c index 42ad0b0d500e5de57faf0c6517e216b2d1c0cacf..bdb24736f44e91ba59b6e622a31= 5597c97e7f64d 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -202,6 +202,7 @@ int cpr_state_save(MigrationChannel *channel, Error **e= rrp) =20 int cpr_state_load(MigrationChannel *channel, Error **errp) { + ERRP_GUARD(); int ret; uint32_t v; QEMUFile *f; @@ -233,9 +234,9 @@ int cpr_state_load(MigrationChannel *channel, Error **e= rrp) return -ENOTSUP; } =20 - ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1); + ret =3D vmstate_load_state(f, &vmstate_cpr_state, &cpr_state, 1, errp); if (ret) { - error_setg(errp, "vmstate_load_state error %d", ret); + error_prepend(errp, "vmstate_load_state error %d: ", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index fabbeb296ae987d0c06ba6dafda63720205fecfd..ab947620f724874f325fb9fb59b= ef50b7c16fb51 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -969,7 +969,8 @@ static int vmstate_load(QEMUFile *f, SaveStateEntry *se) if (!se->vmsd) { /* Old style */ return se->ops->load_state(f, se->opaque, se->load_version_id); } - return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id= ); + return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, + NULL); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2839,7 +2840,8 @@ static int qemu_loadvm_state_header(QEMUFile *f) error_report("Configuration section missing"); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0); + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + NULL); =20 if (ret) { return ret; diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e18c6d37724b08a0101edc8bc74a0a5..e2020a733d0921d748b6f832a19= 3e5de8d302d5f 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -19,6 +19,7 @@ #include "qemu/error-report.h" #include "qemu/queue.h" #include "trace.h" +#include "qapi/error.h" =20 /* bool */ =20 @@ -549,7 +550,7 @@ static int get_tmp(QEMUFile *f, void *pv, size_t size, =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_load_state(f, vmsd, tmp, version_id); + ret =3D vmstate_load_state(f, vmsd, tmp, version_id, &error_warn); g_free(tmp); return ret; } @@ -649,7 +650,7 @@ static int get_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &error_warn); if (ret) { return ret; } @@ -803,7 +804,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_size, key =3D (void *)(uintptr_t)qemu_get_be64(f); } else { key =3D g_malloc0(key_size); - ret =3D vmstate_load_state(f, key_vmsd, key, version_id); + ret =3D vmstate_load_state(f, key_vmsd, key, version_id, &erro= r_warn); if (ret) { error_report("%s : failed to load %s (%d)", field->name, key_vmsd->name, ret); @@ -811,7 +812,7 @@ static int get_gtree(QEMUFile *f, void *pv, size_t unus= ed_size, } } val =3D g_malloc0(val_size); - ret =3D vmstate_load_state(f, val_vmsd, val, version_id); + ret =3D vmstate_load_state(f, val_vmsd, val, version_id, &error_wa= rn); if (ret) { error_report("%s : failed to load %s (%d)", field->name, val_vmsd->name, ret); @@ -892,7 +893,7 @@ static int get_qlist(QEMUFile *f, void *pv, size_t unus= ed_size, =20 while (qemu_get_byte(f)) { elm =3D g_malloc(size); - ret =3D vmstate_load_state(f, vmsd, elm, version_id); + ret =3D vmstate_load_state(f, vmsd, elm, version_id, &error_warn); if (ret) { error_report("%s: failed to load %s (%d)", field->name, vmsd->name, ret); diff --git a/migration/vmstate.c b/migration/vmstate.c index 24451b054c11dfca2d76e24b053d604bb7184e1c..60ff38858cf54277992fa5eddea= db6f3d70edec3 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -132,29 +132,33 @@ static void vmstate_handle_alloc(void *ptr, const VMS= tateField *field, } =20 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, int version_id) + void *opaque, int version_id, Error **errp) { const VMStateField *field =3D vmsd->fields; int ret =3D 0; =20 trace_vmstate_load_state(vmsd->name, version_id); if (version_id > vmsd->version_id) { - error_report("%s: incoming version_id %d is too new " - "for local version_id %d", - vmsd->name, version_id, vmsd->version_id); + error_setg(errp, "%s: incoming version_id %d is too new " + "for local version_id %d", + vmsd->name, version_id, vmsd->version_id); trace_vmstate_load_state_end(vmsd->name, "too new", -EINVAL); return -EINVAL; } if (version_id < vmsd->minimum_version_id) { - error_report("%s: incoming version_id %d is too old " - "for local minimum version_id %d", - vmsd->name, version_id, vmsd->minimum_version_id); + error_setg(errp, "%s: incoming version_id %d is too old " + "for local minimum version_id %d", + vmsd->name, version_id, vmsd->minimum_version_id); trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { + error_setg(errp, "VM pre load failed for: '%s', " + "version_id: %d, minimum version_id: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); return ret; } } @@ -192,10 +196,12 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->vmsd->version_id= ); + inner_field->vmsd->version_id, + errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_load_state(f, inner_field->vmsd, curr_= elem, - inner_field->struct_version_i= d); + inner_field->struct_version_i= d, + errp); } else { ret =3D inner_field->info->get(f, curr_elem, size, inner_field); @@ -208,30 +214,43 @@ int vmstate_load_state(QEMUFile *f, const VMStateDesc= ription *vmsd, =20 if (ret >=3D 0) { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, "Failed to load %s state: %d", + vmsd->name, ret); + return ret; + } } if (ret < 0) { qemu_file_set_error(f, ret); - error_report("Failed to load %s:%s", vmsd->name, - field->name); + error_setg(errp, + "Failed to load %s:%s version_id: %d: ", + vmsd->name, field->name, vmsd->version_id); trace_vmstate_load_field_error(field->name, ret); return ret; } } } else if (field->flags & VMS_MUST_EXIST) { - error_report("Input validation failed: %s/%s", - vmsd->name, field->name); + error_setg(errp, "Input validation failed: %s/%s version_id: %= d", + vmsd->name, field->name, vmsd->version_id); return -1; } field++; } assert(field->flags =3D=3D VMS_END); - ret =3D vmstate_subsection_load(f, vmsd, opaque, NULL); + ret =3D vmstate_subsection_load(f, vmsd, opaque, errp); if (ret !=3D 0) { qemu_file_set_error(f, ret); return ret; } if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); + if (ret < 0) { + error_setg(errp, + "VM Post load failed for: %s, version_id: %d, " + "minimum_version: %d, ret: %d", + vmsd->name, vmsd->version_id, vmsd->minimum_version= _id, + ret); + } } trace_vmstate_load_state_end(vmsd->name, "end", ret); return ret; @@ -568,6 +587,7 @@ vmstate_get_subsection(const VMStateDescription * const= *sub, static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *= vmsd, void *opaque, Error **errp) { + ERRP_GUARD(); trace_vmstate_subsection_load(vmsd->name); =20 while (qemu_peek_byte(f, 0) =3D=3D QEMU_VM_SUBSECTION) { @@ -607,12 +627,12 @@ static int vmstate_subsection_load(QEMUFile *f, const= VMStateDescription *vmsd, qemu_file_skip(f, len); /* idstr */ version_id =3D qemu_get_be32(f); =20 - ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id); + ret =3D vmstate_load_state(f, sub_vmsd, opaque, version_id, errp); if (ret) { trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"= ); - error_setg(errp, - "Loading VM subsection '%s' in '%s' failed: %d", - idstr, vmsd->name, ret); + error_prepend(errp, + "Loading VM subsection '%s' in '%s' failed: %d: = ", + idstr, vmsd->name, ret); return ret; } } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 63f28f26f45691a70936d33e7341d16477a3471f..807deb3531f3079864ac99567d4= dece7122571dd 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -30,6 +30,7 @@ #include "../migration/savevm.h" #include "qemu/module.h" #include "io/channel-file.h" +#include "qapi/error.h" =20 static int temp_fd; =20 @@ -114,7 +115,7 @@ static int load_vmstate_one(const VMStateDescription *d= esc, void *obj, qemu_fclose(f); =20 f =3D open_test_file(false); - ret =3D vmstate_load_state(f, desc, obj, version); + ret =3D vmstate_load_state(f, desc, obj, version, &error_warn); if (ret) { g_assert(qemu_file_get_error(f)); } else{ @@ -365,7 +366,7 @@ static void test_load_v1(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .b =3D 200, .e =3D 500, .f =3D 600 }; - vmstate_load_state(loading, &vmstate_versioned, &obj, 1); + vmstate_load_state(loading, &vmstate_versioned, &obj, 1, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 200); @@ -391,7 +392,7 @@ static void test_load_v2(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj; - vmstate_load_state(loading, &vmstate_versioned, &obj, 2); + vmstate_load_state(loading, &vmstate_versioned, &obj, 2, &error_warn); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); g_assert_cmpint(obj.c, =3D=3D, 30); @@ -480,7 +481,7 @@ static void test_load_noskip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D false }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -504,7 +505,7 @@ static void test_load_skip(void) =20 QEMUFile *loading =3D open_test_file(false); TestStruct obj =3D { .skip_c_e =3D true, .c =3D 300, .e =3D 500 }; - vmstate_load_state(loading, &vmstate_skipping, &obj, 2); + vmstate_load_state(loading, &vmstate_skipping, &obj, 2, &error_warn); g_assert(!qemu_file_get_error(loading)); g_assert_cmpint(obj.a, =3D=3D, 10); g_assert_cmpint(obj.b, =3D=3D, 20); @@ -773,7 +774,7 @@ static void test_load_q(void) TestQtailq tgt; =20 QTAILQ_INIT(&tgt.q); - vmstate_load_state(fload, &vmstate_q, &tgt, 1); + vmstate_load_state(fload, &vmstate_q, &tgt, 1, &error_warn); char eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(tgt.i16, =3D=3D, obj_q.i16); @@ -1127,7 +1128,7 @@ static void test_gtree_load_domain(void) =20 fload =3D open_test_file(false); =20 - vmstate_load_state(fload, &vmstate_domain, dest_domain, 1); + vmstate_load_state(fload, &vmstate_domain, dest_domain, 1, &error_warn= ); eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_domain->id, =3D=3D, dest_domain->id); @@ -1241,7 +1242,7 @@ static void test_gtree_load_iommu(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1); + vmstate_load_state(fload, &vmstate_iommu, dest_iommu, 1, &error_warn); eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(orig_iommu->id, =3D=3D, dest_iommu->id); @@ -1376,7 +1377,8 @@ static void test_load_qlist(void) qemu_fclose(fsave); =20 fload =3D open_test_file(false); - vmstate_load_state(fload, &vmstate_container, dest_container, 1); + vmstate_load_state(fload, &vmstate_container, dest_container, 1, + &error_warn); eof =3D qemu_get_byte(fload); g_assert(!qemu_file_get_error(fload)); g_assert_cmpint(eof, =3D=3D, QEMU_VM_EOF); diff --git a/ui/vdagent.c b/ui/vdagent.c index c0746fe5b168fdc7aeb4866de2ba0c3387566649..b9a22a689d9acfeafb862ae7330= 8db6fbd52331e 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -1008,7 +1008,7 @@ static int get_cbinfo(QEMUFile *f, void *pv, size_t s= ize, =20 vdagent_clipboard_peer_register(vd); =20 - ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0); + ret =3D vmstate_load_state(f, &vmstate_cbinfo_array, &cbinfo, 0, &erro= r_warn); if (ret) { return ret; } --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418578; cv=none; d=zohomail.com; s=zohoarc; b=H7O/kkSuhrsMj9Qh9mIje2nX0r20rIKnq6QtvaD2skMQUc0FWVI+Rw+EWWNzgUGoDD5VJqIsMCq0ZGpNWQnhHCyyeJedlTapkNmQ6b6HfszgsQ0jHbr8WmLXMUKgK+IkW4qq+dP8bg0hoVN7IYeYBg28k3OXf9ZD9VhcdDMDejY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418578; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+rPNTDVtiY7uPN48e8euaKCftyIHgbyMEJD1tSQQf04=; b=GKyMLEKcmvm0v71a5De+1M9DpjjHu0hpDnlgDOLml9TNwqFjha+IKE/6kg0Q5p2iLnq27NEB/cgvpsxHI5iuhXxkTYloJIM1FEIFL24OUOGDkF00W7DYuXbhgxhmf0R/7HDdFp6k4nRdMWxydd4kM5jvzsFhMcS3KqeauyObnG8= 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= (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 1754418578647428.98692080878675; Tue, 5 Aug 2025 11:29:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMOd-0004pX-OT; Tue, 05 Aug 2025 14:28:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOb-0004mw-II for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOa-0003y2-1I for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:21 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-204-mqiMiSHaOOSYfK91esdN4Q-1; Tue, 05 Aug 2025 14:28:18 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-23fe984fe57so65548715ad.0 for ; Tue, 05 Aug 2025 11:28:18 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418499; 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=+rPNTDVtiY7uPN48e8euaKCftyIHgbyMEJD1tSQQf04=; b=HXsdneN0LWSUCesVUAaTWT28bVx0DRpM4QyJlSj+GJIyHeqe2dEB8itXP1cjeRsi/OuZmw 98V+WFRTitzxYAdLN0fGA0Hc3QLCw2xosdF9ze6IL2B0pMMKquI0N7W3dVzbalBCWnJyRT 4Ty0J+xU7DsYNWAoPfrxwI1/jiA/9Nk= X-MC-Unique: mqiMiSHaOOSYfK91esdN4Q-1 X-Mimecast-MFC-AGG-ID: mqiMiSHaOOSYfK91esdN4Q_1754418497 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418497; x=1755023297; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+rPNTDVtiY7uPN48e8euaKCftyIHgbyMEJD1tSQQf04=; b=H6vfFiBi7IjoSewJ3LqV0aHDnRK5HH48NDkETKO2GLUjaKFitfuduNUr2Ol7cFndss QodaQEkbOyGMsS99tbx3dMol/dUSWDB2jbKxjH4sxMI9/3/99iTWQWfxC6qZCgwHryxK eq/TcOTSbRkHZ21scLTD2OC+J/ej0S0U/+ePhoWM9f/YOuvKfkE4V7NlUr6/YftwM6hL 0KRxe0NIuB6tftDv3VPtFAK8g5EPXeSi47D++6ug7146YMy06iQpA/dfvyKIMb7slAi+ dy8IFnNPzIzWPjnff0/FaI1r5qrC/hn5T+szxWzxCMqQny8WOPiRZOCKhoVuumG6f7+E 196Q== X-Gm-Message-State: AOJu0YypVyZydch9Tk4t31rn2HOpZqgtw6mvEhlBKdisbKeZ81Yf4l6l PmkSL8Iu/rwewLGjyL5esB/xg27vVa4k/E11g+AUrknCE5Trb6nQLmaXu37ARWlnGoQg9QsTys6 nzNl8X/HFHC1zl2jm/YZRyo5g19T5w5Vyspqx+cziNbglnzNDWc5m3m2z X-Gm-Gg: ASbGncs0W6wE6UG+nGy7NlB06377De9u7p3VKRXw+3/C2vzrVYeLk6vB21wGtH5YJ7U yTQmsFNIYWjlxOgxya9w1MhLbxR6R92vSoK5IsBvt0k122Ivc6sPEi7gAhl0mlFNgSKWHdPSwxi g7kIBIw5jWBuFCu9geZRUJsScQpzGSV4yNRykZ0KK7Xx5A29l8CxWwkTZXYkNFDYNXWbjMBXX5i PJvxpfkRAfc2th2X7Xjv5wqtNdlsfKwGEu/kHUW+4TYDlC58JzHfcuIzWDJnPY620FeVR9qDiUt 3Y6osteXyIXH6ITbGw2FBM2wq5+fJyhhYp/9fRVKvJuZA7WPhQ== X-Received: by 2002:a17:902:d510:b0:242:9bbc:c775 with SMTP id d9443c01a7336-2429f5c0960mr833655ad.56.1754418497272; Tue, 05 Aug 2025 11:28:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFGYI5PZuD7Qkwm8SVMgvEs91wc3SEH4wNI699ZeZR0DPXL4g+fn7XvPJTiIMpgJWWV7y9++A== X-Received: by 2002:a17:902:d510:b0:242:9bbc:c775 with SMTP id d9443c01a7336-2429f5c0960mr833135ad.56.1754418496923; Tue, 05 Aug 2025 11:28:16 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:10 +0530 Subject: [PATCH v9 03/27] migration: push Error **errp into qemu_loadvm_state_header() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-3-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2836; i=armenon@redhat.com; h=from:subject:message-id; bh=tj3l0Usc1AFRWL0AZRnET/EmXPM64Mzi22SeHEMyWCM=; b=kA0DAAoWanolONkPMo4ByyZiAGiSTRujXmklzQ3hw2q0YRE3/KH6CeqrLtwwNoPPDXMBRTUvH Yh1BAAWCgAdFiEEgPVQHYJQcVhZPenXanolONkPMo4FAmiSTRsACgkQanolONkPMo5nJQD/c7qD HMNE/YNtcDSqXGI6RcV7FQ6DMlLRJUl9pGC2fDwBAPEoezm9bAgDUBjSG0U2FKh/1lqXmTWpoRo xKybWxyEE X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418580288124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_header() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index ab947620f724874f325fb9fb59bef50b7c16fb51..b517e3bec651cb5b4050564f7dc= bbf34c80a5035 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2814,35 +2814,42 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) return 0; } =20 -static int qemu_loadvm_state_header(QEMUFile *f) +static int qemu_loadvm_state_header(QEMUFile *f, Error **errp) { unsigned int v; int ret; =20 v =3D qemu_get_be32(f); if (v !=3D QEMU_VM_FILE_MAGIC) { - error_report("Not a migration stream"); + error_setg(errp, "Not a migration stream, magic: %x !=3D %x", + v, QEMU_VM_FILE_MAGIC); return -EINVAL; } =20 v =3D qemu_get_be32(f); if (v =3D=3D QEMU_VM_FILE_VERSION_COMPAT) { - error_report("SaveVM v2 format is obsolete and don't work anymore"= ); + error_setg(errp, + "SaveVM v2 format is obsolete and no longer supported"); + return -ENOTSUP; } if (v !=3D QEMU_VM_FILE_VERSION) { - error_report("Unsupported migration stream version"); + error_setg(errp, "Unsupported migration stream version, " + "file version %x !=3D %x", + v, QEMU_VM_FILE_VERSION); return -ENOTSUP; } =20 if (migrate_get_current()->send_configuration) { - if (qemu_get_byte(f) !=3D QEMU_VM_CONFIGURATION) { - error_report("Configuration section missing"); + v =3D qemu_get_byte(f); + if (v !=3D QEMU_VM_CONFIGURATION) { + error_setg(errp, "Configuration section missing, %x !=3D %x", + v, QEMU_VM_CONFIGURATION); return -EINVAL; } - ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, - NULL); =20 + ret =3D vmstate_load_state(f, &vmstate_configuration, &savevm_stat= e, 0, + errp); if (ret) { return ret; } @@ -3119,8 +3126,9 @@ int qemu_loadvm_state(QEMUFile *f) =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f); + ret =3D qemu_loadvm_state_header(f, &local_err); if (ret) { + error_report_err(local_err); return ret; } =20 --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418524; cv=none; d=zohomail.com; s=zohoarc; b=dBWh8QwVBp7YBx1WXo3Jbe1pZ7Y1gn2wkQ1SlHgizs7bJHw/Oich82k5Qhfvs30rwy1rwHwah9ZLCw4NyxaHXkvI42nlrWjSYACKw3Oz6jLkb9nTAGFyf9gosfoQBNnWNMsFIJzftOoRGKDh3sYEZjEg50HtC3HdPtdd82L6OtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418524; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rMi5bu/ogxF3WgMfV3R0P80z1lfeesWFvEcbsCzQTGM=; b=kgQKI5LZoZzJnXfNGND6h540XBBMKntbdbUnA+jVC4D6815UI4DDmVD7/NGLVXQLT/VFsCDjOeB9jPBisbuXRb9J0M5nQEFVGSHv8GnvVE239gVU+6QJW/X6JQFdd+pflGn6sA9WHhk1sg4ipOz5S5dTk0krcJfBe7RKNO2sAuk= 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= (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 1754418524215381.099146716845; Tue, 5 Aug 2025 11:28:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMOm-00059E-VI; Tue, 05 Aug 2025 14:28:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOk-00053X-Q9 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOj-0003zC-52 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:30 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-574-oqeffTUzMt-PJkeaRHnyUA-1; Tue, 05 Aug 2025 14:28:27 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2425e41424cso41018985ad.1 for ; Tue, 05 Aug 2025 11:28:27 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418508; 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=rMi5bu/ogxF3WgMfV3R0P80z1lfeesWFvEcbsCzQTGM=; b=THzoRJ9Lp6Mr3XnMVyQGZIF4xHQxhsOlbB2/JKto86Fwm60xbKPZx4kmI7nenYOdib//f4 7y1H1viaBZ2zz9vShVt33I2ejzd2MD0DJ0WU3dqUPg3YD1IzyvTX73UASsOuCAeHi7Uakk LiLGuMmv0yQpDaNBIBt2ChKznu+czyQ= X-MC-Unique: oqeffTUzMt-PJkeaRHnyUA-1 X-Mimecast-MFC-AGG-ID: oqeffTUzMt-PJkeaRHnyUA_1754418506 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418506; x=1755023306; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rMi5bu/ogxF3WgMfV3R0P80z1lfeesWFvEcbsCzQTGM=; b=amLSeYdamXDwoSKPrGW8hjwCAQEtcbY3W875WpbgZzu2ilH7HL3B3PGx/T2vdjngh1 ExP84+PrDUuPwdHcknenlnZtH2vngToZQrVKnY6oqLT2BpYbtbO+o2laR0ujYvbWmG6y 1/CtdFvWR1ePWwUpQSlSWzUgII7QaX6VDxXGPScTHSnxA6nY4pToTS/XcFiC0k2kgryP FttRVoCNjQ2UppkivloaAR6Hbl8UUYiLfqAeGBhtNDtB71s144LCnziQXN7oGtIXAjoa erMqsHPxKJK3shCxvgfBipPYKmUBQFZQASNPTvEwdSkKICVBpjwumi4izzL1B7OvHZOP rjXQ== X-Gm-Message-State: AOJu0YwtfN/mN6Pi12+m3W/VYWj7eXE2ND47aGlPgNQaXSPzj+U9JGLR jw+WQzfetV2Cxy649FP9kc7dwUa72Er4Z0s2yB+H/8+j9toDy45SoNSrUV8huhe3i/1eLuPMfPy xNk1FR7d0MtWWrRm+5eut7sOS9F2Rg3jF53UiTusBQUjQA2vsQIpiWwd1 X-Gm-Gg: ASbGncsedinmikCOyHrAWKY5XgLS87EV3sGQ06Z+Ps+RMmEWpTPnydl3LGaHTkG1zD3 48Q8l7efcANvzJxAyrwlXNkttfX/c01JFC+va45psfP20E11AD3rYxDw9Qp2iY+qs2utoaAj/kP zI1j6UL+NlMezoJHEu0uyMplik2MK3uCl/Jo+5gKag6/XW8blSS2eW58Hnhq1gTteR6ch4HBe6r yy1o6QSh/LpKgbhDps6Wsw3CrcPaot/kIk7wnRL715acvl4KQ8fMDyq7uKjS1zhAdkxyVZRJItx wSeZ6ujtONIqRwFgOrUIq5C4892MuGCGjH3tDiLkscitfHZfBg== X-Received: by 2002:a17:902:e742:b0:242:3855:c77a with SMTP id d9443c01a7336-2429f42cd9fmr1326605ad.34.1754418506483; Tue, 05 Aug 2025 11:28:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWiYF8ROYLWT7ZMRMJbopUbyQuhMXGKb+hf4yWZmI6JpodSlPuoLxWZPq3lKufq1xIN53hBA== X-Received: by 2002:a17:902:e742:b0:242:3855:c77a with SMTP id d9443c01a7336-2429f42cd9fmr1326105ad.34.1754418506102; Tue, 05 Aug 2025 11:28:26 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:11 +0530 Subject: [PATCH v9 04/27] migration: push Error **errp into vmstate_load() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-4-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2373; i=armenon@redhat.com; h=from:subject:message-id; bh=EBOvtpFBOEOXHD8b7F3/LB/vCtG2890+FlcbT3emFRo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+myBDkNfcbmJRl/Ou9kBNrLL82Z6e+wV6p20z2pu 0dv6a/oKGFhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJGclwxfZdxX7PMqar8beCt1 xbw3nStkVdju79x77f618z5rL9xgZ/hfrrhzfZOn7dIl16JeCxUceDW3yef2ZJnFj27lsTS/2De FEQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418525533116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that vmstate_load() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b517e3bec651cb5b4050564f7dcbbf34c80a5035..f37c4455dcf839d46f026fc7c7f= f02e2dfffe7b4 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -963,14 +963,20 @@ void vmstate_unregister(VMStateIf *obj, const VMState= Description *vmsd, } } =20 -static int vmstate_load(QEMUFile *f, SaveStateEntry *se) +static int vmstate_load(QEMUFile *f, SaveStateEntry *se, Error **errp) { + int ret; trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)"); if (!se->vmsd) { /* Old style */ - return se->ops->load_state(f, se->opaque, se->load_version_id); + ret =3D se->ops->load_state(f, se->opaque, se->load_version_id); + if (ret < 0) { + error_setg(errp, "Failed to load VM version_id: %d, ret: %d", + se->load_version_id, ret); + } + return ret; } return vmstate_load_state(f, se->vmsd, se->opaque, se->load_version_id, - NULL); + errp); } =20 static void vmstate_save_old_style(QEMUFile *f, SaveStateEntry *se, @@ -2741,7 +2747,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, NULL); if (ret < 0) { error_report("error while loading state for instance 0x%"PRIx32" o= f" " device '%s'", instance_id, idstr); @@ -2794,7 +2800,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se); + ret =3D vmstate_load(f, se, NULL); if (ret < 0) { error_report("error while loading state section id %d(%s)", section_id, se->idstr); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418557; cv=none; d=zohomail.com; s=zohoarc; b=oIKsgPs+WIHpa8USL+VrOOYqz+qd24SBDqlF68SU51ISy2LFOPum00tJT4l/AnT62pcvriYKnl4lnjJNiVo0wDIS1eywxiTtYRyD/TA9cVjD16ODQIdkhdEuV1QDFtG7d2CI/CxVWMhL2iK50B/R8QIKJB5biqFzPwYN7NLGEFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418557; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z0CSvOMmMk3IlQEx5JPsVH2du0++r9yoOjuPUwP+vLk=; b=N5qtFqEW7z/d0jszv+CfUFkJyceJFfUk/JNFJ90nDnqdD7WZQeDqE/zgqwyClr2bbalHsNEDHj68qTHdG56MqZ6BaFExywXlYMf2reBYpUF+CVpp61JxdlJ/+/lG88WzoTllXdqlk7LRxJ4ADgf2+CBI3GbaDHRWWtDf6zkenjI= 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= (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 1754418557633724.2020781151148; Tue, 5 Aug 2025 11:29:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMOv-0005hD-Sr; Tue, 05 Aug 2025 14:28:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOu-0005ZM-6F for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMOs-00040Z-17 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:39 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-488-_3uFC-KuPFq4bJzy82chHQ-1; Tue, 05 Aug 2025 14:28:36 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2405fdb7c15so83966795ad.0 for ; Tue, 05 Aug 2025 11:28:35 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418517; 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=z0CSvOMmMk3IlQEx5JPsVH2du0++r9yoOjuPUwP+vLk=; b=AN0vq0zAGwTmSgFgdsdHgmePfAwX464th3Lf2DV3mquuYBRlR5uR1YDy8Yxv1lX7uYCizP BaNM98yHIOsKhV2Bp7zXzJTaWPJg/dOSjFF4YkuWpMvMbV7yRru6a21LkFcQcJPKO9KjLP 4A/jpfTRGTN/L2EFz69PyfjDc8Aij9c= X-MC-Unique: _3uFC-KuPFq4bJzy82chHQ-1 X-Mimecast-MFC-AGG-ID: _3uFC-KuPFq4bJzy82chHQ_1754418515 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418515; x=1755023315; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z0CSvOMmMk3IlQEx5JPsVH2du0++r9yoOjuPUwP+vLk=; b=O2GtLY9XDQN3XXBwtDRrJcyWg3VV1Cg8f73MlH/0QDajt80UDZLz/1ku3wIpqXOkBv QQNaH7q8w+Ir5jxz/s/PAy5lzYC+4srUQwGj5GwYImIbasJj0EhNPqnoezQU87yuPA1f 3j/dV2HWS+wxMiDSQK5aYfT4rMn5hL6I5ZECLppwfFJypP+xry68Evde3XyucaDSDKvJ b8CP/1SDxxbvf50pr9Em40Pd7vy4q5zYN8rJ3d6VGXkCqdTfWxqAsmaqtGOXAX+pdQXO LVKegqwphhgMmIzzyYRf9vz5fITWhyDK34yrEXS2h6VCZmibmlRT+aN0svZxcipQaGor SbNQ== X-Gm-Message-State: AOJu0YxG1ThHjDuQ5DzIZbcGMSRjTsjigbX4/Qd7Dj6O66TtAcl+dmoQ YZJOhUT//sXRIfg/Y80hfzyXEm2+n7SA9J+5bFg+vKJ6/niOgn1G5Ggk42EhxHVrWU9/4zHAtkV 6MhnOWB3hvCz69y+/PlCDUDK18hrH0m74H0MpdEntz/V45txM3mIlcWs/ X-Gm-Gg: ASbGncuLgNBjE1/4dU2bPbS89TMF50KiUX4SXsRbwfiU/OTReBYydmVbVRRLdTyiIK2 qc/GexGP8kd8LVaSn8jifkLX00V0aoetU3expStcPDdO/Eob1G467jUoZOU98XTDAAyT+R3z9Iq ghjsjjr+omQ9oPqnG+/Sb9WJpK+yY+rVgMWSWWMJYI79ISI3vrsDW2goieKjOBiRzEy5U3qiStL sZmA6dkE1naeutmX14u/sSK0VDPQYOX+MbsuUtXWLoqLEpgYUG3xHXErUs2+W0JA3odhyicOAu8 DgJLO76UEhiupNAtjCATENxNdl+XNw0f3/Y7R0PlNJXfNQ9VJw== X-Received: by 2002:a17:902:fc8f:b0:240:6d9b:59ff with SMTP id d9443c01a7336-2429f5339b5mr921055ad.33.1754418515010; Tue, 05 Aug 2025 11:28:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHJo4zYf6NpXRqsPctwOgU3C0xkrN1SOKVanbdvkFnt25uMF/pL2eT082Mgu1u280yzx45s0g== X-Received: by 2002:a17:902:fc8f:b0:240:6d9b:59ff with SMTP id d9443c01a7336-2429f5339b5mr920665ad.33.1754418514453; Tue, 05 Aug 2025 11:28:34 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:12 +0530 Subject: [PATCH v9 05/27] migration: push Error **errp into loadvm_process_command() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-5-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5991; i=armenon@redhat.com; h=from:subject:message-id; bh=UIqb3XXgYCscHZa+E3ALtPgpyS8rgvx+ZLuTMghjItc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+nQo13nKvVLz56K6il0MjDS9Dp74t3Ji5vVU9ruO 8w9wn6vo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwEQ2CDMyvPeb6LWhyGnSqm62 /NlKkWJfkrJMxeOyM3bMTW+IqfJ5y8hw94C95x+TU7cWqE1ae1jl3oFCoZDjDNtf/+Jm6s9yzZV iAwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418560284124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_command() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 72 +++++++++++++++++++++++++++++++++++++++-----------= ---- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index f37c4455dcf839d46f026fc7c7ff02e2dfffe7b4..cb673f43b174249ff1525dba412= 84de2e5a70735 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2546,12 +2546,13 @@ static int loadvm_postcopy_handle_switchover_start(= void) * LOADVM_QUIT All good, but exit the loop * <0 Error */ -static int loadvm_process_command(QEMUFile *f) +static int loadvm_process_command(QEMUFile *f, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); uint16_t cmd; uint16_t len; uint32_t tmp32; + int ret; =20 cmd =3D qemu_get_be16(f); len =3D qemu_get_be16(f); @@ -2562,16 +2563,16 @@ static int loadvm_process_command(QEMUFile *f) } =20 if (cmd >=3D MIG_CMD_MAX || cmd =3D=3D MIG_CMD_INVALID) { - error_report("MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); + error_setg(errp, "MIG_CMD 0x%x unknown (len 0x%x)", cmd, len); return -EINVAL; } =20 trace_loadvm_process_command(mig_cmd_args[cmd].name, len); =20 if (mig_cmd_args[cmd].len !=3D -1 && mig_cmd_args[cmd].len !=3D len) { - error_report("%s received with bad length - expecting %zu, got %d", - mig_cmd_args[cmd].name, - (size_t)mig_cmd_args[cmd].len, len); + error_setg(errp, "%s received with bad length - expecting %zu, got= %d", + mig_cmd_args[cmd].name, + (size_t)mig_cmd_args[cmd].len, len); return -ERANGE; } =20 @@ -2594,11 +2595,10 @@ static int loadvm_process_command(QEMUFile *f) * been created. */ if (migrate_switchover_ack() && !mis->switchover_ack_pending_num) { - int ret =3D migrate_send_rp_switchover_ack(mis); + ret =3D migrate_send_rp_switchover_ack(mis); if (ret) { - error_report( - "Could not send switchover ack RP MSG, err %d (%s)", r= et, - strerror(-ret)); + error_setg_errno(errp, -ret, + "Could not send switchover ack RP MSG"); return ret; } } @@ -2608,39 +2608,71 @@ static int loadvm_process_command(QEMUFile *f) tmp32 =3D qemu_get_be32(f); trace_loadvm_process_command_ping(tmp32); if (!mis->to_src_file) { - error_report("CMD_PING (0x%x) received with no return path", - tmp32); + error_setg(errp, "CMD_PING (0x%x) received with no return path= ", + tmp32); return -1; } migrate_send_rp_pong(mis, tmp32); break; =20 case MIG_CMD_PACKAGED: - return loadvm_handle_cmd_packaged(mis); + ret =3D loadvm_handle_cmd_packaged(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_ADVISE: - return loadvm_postcopy_handle_advise(mis, len); + ret =3D loadvm_postcopy_handle_advise(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_LISTEN: - return loadvm_postcopy_handle_listen(mis); + ret =3D loadvm_postcopy_handle_listen(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RUN: - return loadvm_postcopy_handle_run(mis); + ret =3D loadvm_postcopy_handle_run(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - return loadvm_postcopy_ram_handle_discard(mis, len); + ret =3D loadvm_postcopy_ram_handle_discard(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_POSTCOPY_RESUME: return loadvm_postcopy_handle_resume(mis); =20 case MIG_CMD_RECV_BITMAP: - return loadvm_handle_recv_bitmap(mis, len); + ret =3D loadvm_handle_recv_bitmap(mis, len); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_ENABLE_COLO: - return loadvm_process_enable_colo(mis); + ret =3D loadvm_process_enable_colo(mis); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; =20 case MIG_CMD_SWITCHOVER_START: - return loadvm_postcopy_handle_switchover_start(); + ret =3D loadvm_postcopy_handle_switchover_start(); + if (ret < 0) { + error_setg(errp, "Failed to load device state command: %d", re= t); + } + return ret; } =20 return 0; @@ -3074,7 +3106,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f); + ret =3D loadvm_process_command(f, NULL); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418636; cv=none; d=zohomail.com; s=zohoarc; b=Up2mWM649C3EeE6EGv95akVIPExcBHMCQ/K9I9n3y/zesRQ21qyABR5jeYMN7rpjIBS5r46YV6lf8SKLN5lCD/8FBosznQu87EGwKhT9KEEi+Higf+zIXL0lObEUzyy5stvPAZ+L7WjkgdZNBskThjuNOTTh548z4XcvUbNDapU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418636; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3a4je7M4qEt7TPhu1/w+QQTrMd6+jDtLlHk+zIgplyA=; b=kkMK0wgvKiHkehT7Ax59ZmzhYleAMRSMkqeTjtkFFBNdjP6ZLbRVj0WIihscmjhYFDBFEWAxF4VjtOIpHhcWXl8AjfjIWjUOhWahoyHEqm8XQai53SbRMG5HtvLauj+bF225HsErzdPChXZyT/RCCqcq99RdJeBff+pBPfJJ93s= 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= (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 1754418636669950.6987417001419; Tue, 5 Aug 2025 11:30:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMP5-0006KW-0t; Tue, 05 Aug 2025 14:28:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMP2-00066Q-GO for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMP1-00041q-1N for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:28:48 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-FhZeMhBmNp6RwJVgsM1zIA-1; Tue, 05 Aug 2025 14:28:44 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-240b9c0bddcso52300415ad.2 for ; Tue, 05 Aug 2025 11:28:44 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418526; 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=3a4je7M4qEt7TPhu1/w+QQTrMd6+jDtLlHk+zIgplyA=; b=ObqilyvIslhqP0+vlm9qaJzE/YHUcBm3CqWfsEp/tgDaL4q2bssP/908HGsCGYOdL8QQB4 75uKHxQEZ96eNjme6QBd8SR+Rr7Xq/9ahN7DfMpKo5a/Tyj9gRF33soNuMnc7qAU7G96JR 5+pKQA94f0m074qBONEExp3/lR6GWEY= X-MC-Unique: FhZeMhBmNp6RwJVgsM1zIA-1 X-Mimecast-MFC-AGG-ID: FhZeMhBmNp6RwJVgsM1zIA_1754418524 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418524; x=1755023324; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3a4je7M4qEt7TPhu1/w+QQTrMd6+jDtLlHk+zIgplyA=; b=MIamvzJlDvrvGE37WtUmjwxPAX0BCdxp20pgH7pOAI1+NiWoQg7gPVy1449zrqmDSM Npfs7Nw0LwtXfaxFWsi9t4mnqe8NGpY4WgOMDQs+HjLbsPGijXsSKZDdNxlEM9nK6i/p uUaiBdBLH8cioLuxvnJvK4G/2IcnD7RzVs/qug+a9ZMZfUXHlk8dyBWSxTHSb75rli9w iIHFl8B2dHoqJ5HIvdUi+EIkAkyLePAja4llTNDhZtwRxoeB1WQD4WZDLlUjUwsa9CDZ UUJHL9OBgkb/EJZIpG6Y4fMFDPucToNbwQYNOSkbPXdLcm7CtaUHD6AOsEmr4q++uR0m eztQ== X-Gm-Message-State: AOJu0YzDZ2F1EwV0Zrj+ii3074wiNGcOFTp4Ji/XZTaL/vqEprfQmJSL D3cjmVS6lOANmmROn9QFFZKoTHG1LxPRQOnzEcVVQiF5NNMd0eN6WQG33WCs+KTVkvDJcHyzIin fSYC08vOL+KuYx/pgvwf2T1MkyYl3A7yshTFlkvK9h1n4PPHbJsgcR/yA X-Gm-Gg: ASbGncvr6tvcCzzOXAZ6+RA4B4f1M3f/GwM3twfec4rLtEDE4y7fDDZw7fCasTbuLQB TKWYtkmXz+Y05Eq9NlDRDNmHsjFrFu1BejJNTGZw/Tp+lanWL7C0Lj95YlGumM33gczENNhJRuJ teRVCOWERGobcZLpxrNk5Qe4uRA9vW86nsM6//1yG7kCEJb88/fLQvB1pXE0EfaFk1veO1cJsOI TtIBCR2pU4tQ/CcA90j9QC7loFl5L7KhKWPiNgXZLwFwucmiyKHJNYstwy0hpy6XIduR41D1c5i aCC7SShG5VHu5zaHD3HD66kVCvg0jM0ZzBX9dJuJAG4b4Z1Erg== X-Received: by 2002:a17:902:f54a:b0:240:7725:18de with SMTP id d9443c01a7336-2429f6085e3mr664405ad.37.1754418523702; Tue, 05 Aug 2025 11:28:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE5D6NX+HV+6XEg6uuxBGyyKrb4ogJUP7u6elOkHOHa+bcKDFnKNNRpcfqzJerQSKkglJadUA== X-Received: by 2002:a17:902:f54a:b0:240:7725:18de with SMTP id d9443c01a7336-2429f6085e3mr663935ad.37.1754418523286; Tue, 05 Aug 2025 11:28:43 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:13 +0530 Subject: [PATCH v9 06/27] migration: push Error **errp into loadvm_handle_cmd_packaged() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-6-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2723; i=armenon@redhat.com; h=from:subject:message-id; bh=AphLiNO4zRgUUjm2dBoJUuEdQVh4MjWuQLXLYWtdpBE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+mP/XPXa8Se+cT+aN75A7+mhst6fNQQZspr9rL4z T69OKa8o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwERMdjP8d3kYsWBHQKnSbeGX rZONX8+QXPvsnJug7TvePrEJS7f/n8/wP2+p2I+CaXJKBRu/aoa+7WBSzoxbKyOiu3GL9pl775M j2AA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418639131124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_cmd_packaged() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index cb673f43b174249ff1525dba41284de2e5a70735..1bd27efe437d4d911728d776e99= 5490d0a45dcf5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2405,7 +2405,7 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) * Returns: Negative values on error * */ -static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis) +static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error *= *errp) { int ret; size_t length; @@ -2415,7 +2415,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) trace_loadvm_handle_cmd_packaged(length); =20 if (length > MAX_VM_CMD_PACKAGED_SIZE) { - error_report("Unreasonably large packaged state: %zu", length); + error_setg(errp, "Unreasonably large packaged state: %zu", length); return -1; } =20 @@ -2426,8 +2426,8 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) length); if (ret !=3D length) { object_unref(OBJECT(bioc)); - error_report("CMD_PACKAGED: Buffer receive fail ret=3D%d length=3D= %zu", - ret, length); + error_setg(errp, "CMD_PACKAGED: Buffer receive fail ret=3D%d lengt= h=3D%zu", + ret, length); return (ret < 0) ? ret : -EAGAIN; } bioc->usage +=3D length; @@ -2457,6 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis) } while (1); =20 ret =3D qemu_loadvm_state_main(packf, mis); + if (ret < 0) { + error_setg(errp, "VM state load failed: %d", ret); + } trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -2616,11 +2619,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) break; =20 case MIG_CMD_PACKAGED: - ret =3D loadvm_handle_cmd_packaged(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: ret =3D loadvm_postcopy_handle_advise(mis, len); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418569; cv=none; d=zohomail.com; s=zohoarc; b=lmlELQgixdTuuhR8wp/OBpXt5g20INhjJD2gM7GCwj3MACWRCCfAgREiD7rqXptSW4H6g0i+f+Wj6XQINGrFlp2LSyOqHzY8aHHKzATedfJHs5lskAMypUsEkRLY7IYs8ciuoBj0C3Kxyt0r8JLJlqYZdR36+X/MsQZ0JWYrDjA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418569; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GCEiIKB3RFQebr2N6OH+Z/58y6tNmqZwLsj+/7Bl7aU=; b=APvNIFge7HbFr0b7sysTxEvdIfdphuqBzN+hg3ZSbIIA0BSIDuyyO6hg4Zcu3SVIyIGNs46nAYCd/aeDEHEyBemESnKQIQYv5LUCQ3U1ig3BJvsr6OR+q3o/GLo0QIBuiAC58ueelvtgwW83w2AtxXWhGdRfURE4fCDN5W1G/s8= 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= (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 1754418569610388.9914542016297; Tue, 5 Aug 2025 11:29:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMPJ-0007Jr-2X; Tue, 05 Aug 2025 14:29:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPE-0007CF-H6 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPA-00043L-Fc for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:00 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-fOdatFo_Nxy2G_uJEOl7Sg-1; Tue, 05 Aug 2025 14:28:54 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2400117dd80so41431925ad.2 for ; Tue, 05 Aug 2025 11:28:54 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:28:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418535; 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=GCEiIKB3RFQebr2N6OH+Z/58y6tNmqZwLsj+/7Bl7aU=; b=IzTlaQ3VWv2k0i8t9dAfsMHl4Gq1csirEJc7dcMxvKc0S5FMwNZ8R8UKL0uM88u83FMhlz /Dc/3wFyrCr+mY9VHGehjmZGAx3cPC+kO88rnhr/dkp4MdIC2xvbFQEyxac3RX2pMMwAig P1nO0+WrafYPLSjhIwWIXwc8FCWLyxw= X-MC-Unique: fOdatFo_Nxy2G_uJEOl7Sg-1 X-Mimecast-MFC-AGG-ID: fOdatFo_Nxy2G_uJEOl7Sg_1754418533 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418533; x=1755023333; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GCEiIKB3RFQebr2N6OH+Z/58y6tNmqZwLsj+/7Bl7aU=; b=Ww0fHS6IurkAxkGcLMFIMP7IEvYrJEfgguNx4ygwP3ApdU8p3hm+ioejG/z070B3VB 0GBgXjVF1+suNY/hb3YSPB1ELmyA+Ue4KzuoahfiGi8SjiHbQF4jPDpHcStjZZA9pGMR eQo1y/5GYttxKIgk2miOENUTR1YXZKeY4UKfT7tsLoBbsbNdUTVqvW/XdWblTKTXeq7A u0z8i+kMAyGE8XExQ0aYQA0AAfNd50mEpOKowq5N2qNKtg4ijkk1R95pUweNgS4LA0U8 B+07rQQzAHbZeCYwHqnE4dMQu6q5XMUxhqppDLkHD3RabpMzZAHD7EZ1CdVTBZIAOL3K 0NIw== X-Gm-Message-State: AOJu0Yy4EuAIEJ5s2arRdJ555hnpTA4gZkHodJ8A+I/q3Xh9aBniV2b1 /ple7Qquz92PiQNgR5VccESmtRHw5Y5eYPcPNPAej0s2XmKfOvUhRmYfIG6xJPYJ4mk1uHh5XSr 1xHHZAA30D/EisBqQAe34E7WUpFnvdZmXK5sppPcas/Am0v7FE545JUUO X-Gm-Gg: ASbGncuslqkrWTVC0otjEz3bkcPqKU30vTNqQYS7BmFld7rXSSpPY+/WW39eVOTuScf 2HhVhAJvrxqKk8wVcAa1NuFlspob486Ehb8PNvv0oN9QaJeLQ/R8tNNnS/XW3FUr0wQLiLqEaHP C9raMr6NPwk5b9fHf+DRiqt1MI8n4UKPJ1XyMd5lrPcigZtAYS1DspDSLw33gwpe/hhiTt+TXMp 6bq1d6dAxhAwKZP6Huemo0ofdboWAUrpnR0R+WhErWFQNRqmrIVsyrZHNkxqbD7pVo2dRsS7pYY s0oq0BpW9i/ZVmUDHAc2ARtHp6nBiMw4EFH1WjGguF4upRi4qw== X-Received: by 2002:a17:902:da8c:b0:23f:df55:cf7b with SMTP id d9443c01a7336-2429f1e2b27mr1442975ad.4.1754418533450; Tue, 05 Aug 2025 11:28:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH5hEVRm0opjS7baaFH2ax4iTlE5QO1p3eUwrHDz8ih7X8DgH7lLoLnfzV23zTNTS1E01Kx4g== X-Received: by 2002:a17:902:da8c:b0:23f:df55:cf7b with SMTP id d9443c01a7336-2429f1e2b27mr1442625ad.4.1754418533036; Tue, 05 Aug 2025 11:28:53 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:14 +0530 Subject: [PATCH v9 07/27] migration: push Error **errp into qemu_loadvm_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-7-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6282; i=armenon@redhat.com; h=from:subject:message-id; bh=rcUfoQhEPXRdNa1M6WSd0P0agDN/fEPUtowfs4dweg4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+kHkjOMD9UejXJYNPtrWtQnKdezO49GBk3sLnaPj pfYfDKqo5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwET++DD8j9+y1PrNmZL6kpVi ohPZdDXkGF5/mGg+Qdxuyu+3RaFHVzEyLGTWUTlv/alD7cAtucKq46Z2nhz/9EwyfUtX7Srla5z MCwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418571863116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state() must report an error in errp, in case of failure. When postcopy live migration runs, the device states are loaded by both the qemu coroutine process_incoming_migration_co() and the postcopy_ram_listen_thread(). Therefore, it is important that the coroutine also reports the error in case of failure, with error_report_err(). Otherwise, the source qemu will not display any errors before going into the postcopy pause state. Signed-off-by: Arun Menon Reviewed-by: Marc-Andr=C3=A9 Lureau --- migration/migration.c | 7 ++++--- migration/savevm.c | 31 +++++++++++++++++++------------ migration/savevm.h | 2 +- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 10c216d25dec01f206eacad2edd24d21f00e614c..bb7d5e1dee52692cbea1d2c8fdc= a541e6a75bedb 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -881,7 +881,7 @@ process_incoming_migration_co(void *opaque) MIGRATION_STATUS_ACTIVE); =20 mis->loadvm_co =3D qemu_coroutine_self(); - ret =3D qemu_loadvm_state(mis->from_src_file); + ret =3D qemu_loadvm_state(mis->from_src_file, &local_err); mis->loadvm_co =3D NULL; =20 trace_vmstate_downtime_checkpoint("dst-precopy-loadvm-completed"); @@ -908,7 +908,8 @@ process_incoming_migration_co(void *opaque) } =20 if (ret < 0) { - error_setg(&local_err, "load of migration failed: %s", strerror(-r= et)); + error_prepend(&local_err, "load of migration failed: %s: ", + strerror(-ret)); goto fail; } =20 @@ -924,7 +925,7 @@ fail: migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, MIGRATION_STATUS_FAILED); migrate_set_error(s, local_err); - error_free(local_err); + error_report_err(local_err); =20 migration_incoming_state_destroy(); =20 diff --git a/migration/savevm.c b/migration/savevm.c index 1bd27efe437d4d911728d776e995490d0a45dcf5..ca166ebd397ad80836ed2f9cb20= a92f704fd4ed5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3149,28 +3149,24 @@ out: return ret; } =20 -int qemu_loadvm_state(QEMUFile *f) +int qemu_loadvm_state(QEMUFile *f, Error **errp) { MigrationState *s =3D migrate_get_current(); MigrationIncomingState *mis =3D migration_incoming_get_current(); - Error *local_err =3D NULL; int ret; =20 - if (qemu_savevm_state_blocked(&local_err)) { - error_report_err(local_err); + if (qemu_savevm_state_blocked(errp)) { return -EINVAL; } =20 qemu_loadvm_thread_pool_create(mis); =20 - ret =3D qemu_loadvm_state_header(f, &local_err); + ret =3D qemu_loadvm_state_header(f, errp); if (ret) { - error_report_err(local_err); return ret; } =20 - if (qemu_loadvm_state_setup(f, &local_err) !=3D 0) { - error_report_err(local_err); + if (qemu_loadvm_state_setup(f, errp) !=3D 0) { return -EINVAL; } =20 @@ -3181,6 +3177,9 @@ int qemu_loadvm_state(QEMUFile *f) cpu_synchronize_all_pre_loadvm(); =20 ret =3D qemu_loadvm_state_main(f, mis); + if (ret < 0) { + error_setg(errp, "Load VM state failed: %d", ret); + } qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3198,8 +3197,14 @@ int qemu_loadvm_state(QEMUFile *f) if (migrate_has_error(migrate_get_current()) || !qemu_loadvm_thread_pool_wait(s, mis)) { ret =3D -EINVAL; + error_setg(errp, + "Error while loading VM state: " + "Migration stream has error"); } else { ret =3D qemu_file_get_error(f); + if (ret < 0) { + error_setg(errp, "Error while loading vmstate : %d", ret); + } } } /* @@ -3464,6 +3469,7 @@ void qmp_xen_save_devices_state(const char *filename,= bool has_live, bool live, =20 void qmp_xen_load_devices_state(const char *filename, Error **errp) { + ERRP_GUARD(); QEMUFile *f; QIOChannelFile *ioc; int ret; @@ -3485,10 +3491,10 @@ void qmp_xen_load_devices_state(const char *filenam= e, Error **errp) f =3D qemu_file_new_input(QIO_CHANNEL(ioc)); object_unref(OBJECT(ioc)); =20 - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); qemu_fclose(f); if (ret < 0) { - error_setg(errp, "loading Xen device state failed"); + error_prepend(errp, "loading Xen device state failed: "); } migration_incoming_state_destroy(); } @@ -3496,6 +3502,7 @@ void qmp_xen_load_devices_state(const char *filename,= Error **errp) bool load_snapshot(const char *name, const char *vmstate, bool has_devices, strList *devices, Error **errp) { + ERRP_GUARD(); BlockDriverState *bs_vm_state; QEMUSnapshotInfo sn; QEMUFile *f; @@ -3559,13 +3566,13 @@ bool load_snapshot(const char *name, const char *vm= state, ret =3D -EINVAL; goto err_drain; } - ret =3D qemu_loadvm_state(f); + ret =3D qemu_loadvm_state(f, errp); migration_incoming_state_destroy(); =20 bdrv_drain_all_end(); =20 if (ret < 0) { - error_setg(errp, "Error %d while loading VM state", ret); + error_prepend(errp, "Error %d while loading VM state: ", ret); return false; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index 2d5e9c716686f06720325e82fe90c75335ced1de..b80770b7461a60e2ad6ba5e24a7= baeae73d90955 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -64,7 +64,7 @@ void qemu_savevm_send_colo_enable(QEMUFile *f); void qemu_savevm_live_state(QEMUFile *f); int qemu_save_device_state(QEMUFile *f); =20 -int qemu_loadvm_state(QEMUFile *f); +int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); int qemu_load_device_state(QEMUFile *f); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418595; cv=none; d=zohomail.com; s=zohoarc; b=Tqoorc/1dztgqIyuIKSf51jLhJmmTQbDGxQ8WBfOM4owc/KbfTM1w4Q/JR8KNjBOIlX6bCU6Q2SYuFC+vGUn/Bv2LjX4KgZe1htAV1rsA9hkNeVxuy692jKll4zdpDYJRdhYwSAaK0YcfEYtOrjkcHXITHzly2tojt79RjDiaHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418595; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CfDi0LWRLJYn6ZKTqcgSA+6qvy9VenMBsdYUplH95hk=; b=HLxzCr0iQBXS4uTfJ8OX2Z5hpKpBkQ2dVe9hIHH9LNmyyn8r2rzqydrFMjdkffO0YmE5VZCx/Z/JhPQubenGxcNHzD7qvjLEwWfT5s8X8+fUdx2D+X2fl9fIxx/hOESywhAslhGkYyLBBzbHHw7p86qGVaX16/ibjFlmaXklBlo= 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= (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 1754418595675552.492585412339; Tue, 5 Aug 2025 11:29:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMPy-0007wY-RP; Tue, 05 Aug 2025 14:29:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPZ-0007Zb-RF for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPT-00046K-JW for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:19 -0400 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-42-VgWZGgq7M2ifdWpdqN0G2w-1; Tue, 05 Aug 2025 14:29:07 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b0e0c573531so4492068a12.3 for ; Tue, 05 Aug 2025 11:29:06 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.28.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418548; 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=CfDi0LWRLJYn6ZKTqcgSA+6qvy9VenMBsdYUplH95hk=; b=X41b+29sqCDaFng5m+JnnqxwQkYOdidRZbx21k6hSx2/7V7QZCyBGQvACWaEXpO+QGdCPW coX/M+r3kJx+j6zyPxU0kBeXWzwVPm8uetOXdk4elpQZ/7mbO0JR/Dkz8iZW16mD/z2J6K 0zUDPh+rSs/GX7AoCr9l4C8PjlbG3q0= X-MC-Unique: VgWZGgq7M2ifdWpdqN0G2w-1 X-Mimecast-MFC-AGG-ID: VgWZGgq7M2ifdWpdqN0G2w_1754418546 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418543; x=1755023343; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CfDi0LWRLJYn6ZKTqcgSA+6qvy9VenMBsdYUplH95hk=; b=xGoze9fo0lDCwdEzBXA8kCHMqSWEhp07sr9Nw34VIoIunzIHbYDCNRSrlbaWpbaENR /3FQzCzxLrCqMLizNZmElIMfPz7V1Bd7e9Nv/UhJLFKV54cZVpnk5PqfEMjYA8QUt3am AOt/4bR6/LPsa3j6pBLVtHauz/aiPIYdc5S49MFmBwxazGkU/TH5yPMoPfseFzRb/jKI DY8ao7f+qdBk8PBKpp92jHfiPQ5aFGjiP7shE41CJ3XMC7WBCKqNtYiacrb3qyEAx/a5 JksDTBke55i9bFz8AonWjiI0/Kl4nzTGiMLMezXZcpDOmQWCIAQiAIpc4h1Ut69CDtgu D4yg== X-Gm-Message-State: AOJu0YyVXG23GijPvKDwLak3Q4KWsZpNz4L3FNT28YcQGoW2JXkg4C5a eb1Ebx39m909M/CuSRE4qqva8fdAlbEbt1G7I/FC3Tj29meETPfY5mfskp1a2GgPxINrqBoTBnU GOPbyUn2bbu1+t/L3xf60RZjMmlo4EQ1ZKNGtvbxV+xCaTz1O48l6YcaP X-Gm-Gg: ASbGncsFeValZlw4odkk0dY8c/bv4Qns2yvvNh5zVDDOqhhm3eRUjt1rpK5gzxYGOQ3 DnCrUbRSwo5KXguxdpkyQ7jgpHeipxQtHbsbBiiJf7IfL9owUDulPFm1GKYwL1UVhOJGtFEKkxt fHV1qzgLgyjkEq66kpiSpj4lw/wDFjn5w1c5SwA8B9/hXKg0kuWAKVC/oXeFDOsrcbUspwFU07i QelCNS8C+dxqkfIUUrrWyOyCUDH0JeAd34g3GexXgGPQPDkab1LTi31sul+YGzxjG6kiLcyeqoW 7HVuQYSuL3HV22pSWXRmDkxhJDPhOR07H2ToGxOoTrHFPbCsug== X-Received: by 2002:a17:902:d4c5:b0:240:3f39:2c73 with SMTP id d9443c01a7336-2429ed75ef5mr2138595ad.0.1754418542547; Tue, 05 Aug 2025 11:29:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEZjMLwLkZFD2MdH0uZ2thibcFBh/3O2wCWHNa3LWKUvlVFlAUsobU5V/xjFBoQ+B4xow9WdA== X-Received: by 2002:a17:902:d4c5:b0:240:3f39:2c73 with SMTP id d9443c01a7336-2429ed75ef5mr2138205ad.0.1754418542105; Tue, 05 Aug 2025 11:29:02 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:15 +0530 Subject: [PATCH v9 08/27] migration: push Error **errp into qemu_load_device_state() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-8-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2619; i=armenon@redhat.com; h=from:subject:message-id; bh=7XhuvyQAFZYiJ2hf8Ip0zL5iR+8ddAVO1LkYs2U5Wpw=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+n6tqnSi6XmnwtoYfPYbrptnu2HRU3GQVN/N89v3 P8r7dvzjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABO5t56RYeUC+/Wnnn3+eF5/ 99eMf/dTyz7PDPmwfvajxV8Non6btC1m+Csea6h62qHS9f+lV1MC/p3+YNs9a+Kv4zIXbgmoNhj vYeMFAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418598563124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_load_device_state() must report an error in errp, in case of failure. Signed-off-by: Arun Menon Reviewed-by: Marc-Andr=C3=A9 Lureau --- migration/colo.c | 4 ++-- migration/savevm.c | 5 +++-- migration/savevm.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index e0f713c837f5da25d67afbd02ceb6c54024ca3af..0ba22ee76a13e313793f653f43a= 728e3c433bbc1 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -729,9 +729,9 @@ static void colo_incoming_process_checkpoint(MigrationI= ncomingState *mis, bql_lock(); vmstate_loading =3D true; colo_flush_ram_cache(); - ret =3D qemu_load_device_state(fb); + ret =3D qemu_load_device_state(fb, errp); if (ret < 0) { - error_setg(errp, "COLO: load device state failed"); + error_prepend(errp, "COLO: load device state failed: "); vmstate_loading =3D false; bql_unlock(); return; diff --git a/migration/savevm.c b/migration/savevm.c index ca166ebd397ad80836ed2f9cb20a92f704fd4ed5..f3b91c8ae0eee6078406081f0bd= 7f686fed28601 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -3253,15 +3253,16 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) return ret; } =20 -int qemu_load_device_state(QEMUFile *f) +int qemu_load_device_state(QEMUFile *f, Error **errp) { + ERRP_GUARD(); MigrationIncomingState *mis =3D migration_incoming_get_current(); int ret; =20 /* Load QEMU_VM_SECTION_FULL section */ ret =3D qemu_loadvm_state_main(f, mis); if (ret < 0) { - error_report("Failed to load device state: %d", ret); + error_setg(errp, "Failed to load device state: %d", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b80770b7461a60e2ad6ba5e24a7baeae73d90955..b12681839f0b1afa3255e45215d= 99c13a224b19f 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -67,7 +67,7 @@ int qemu_save_device_state(QEMUFile *f); int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); -int qemu_load_device_state(QEMUFile *f); +int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, bool in_postcopy); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754420612; cv=none; d=zohomail.com; s=zohoarc; b=MKPVq2SzCs6RtieatALZLKdb7JGBZ6Ifof7jS30g1FL24Wk1SgCTAaysDoH45EQCO1QWzIrzj6NIVTIxzMrrMa7/BpRbPjqcp2ovddGqjp77LZwJFKK2FUdsNX/VNFgLo4fL5xcrH2dAc3uDfzdeglg61KQ8wM0kyxpsPWoDms8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754420612; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=07QBWaYGFP72bgwrXFQvyDVEM/hIfWp2TskMLU1w054=; b=YdPxca5HEWpAB15YzCaQZ2BhAbk/ykRpPmltx4NHqAyvGuSUOwdjJAFfMwsDKP088qqULkitJGkHl4oMvlL8vgeyLRxx+CuqQX+wMcAxqsspr3quL1jqTOjAXcGEXKBLzBqMqlsbPRXRjUSC8/v+emAmO3WSLYEXob43l7HRA68= 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= (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 1754420612828504.6309885081589; Tue, 5 Aug 2025 12:03:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMwI-0002w3-5Q; Tue, 05 Aug 2025 15:03:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPc-0007aG-Pg for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPZ-00047Y-JL for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:24 -0400 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-626-PLJ4TikONWusEB3SVTBySw-1; Tue, 05 Aug 2025 14:29:17 -0400 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b42464016c3so3157511a12.2 for ; Tue, 05 Aug 2025 11:29:16 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418558; 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=07QBWaYGFP72bgwrXFQvyDVEM/hIfWp2TskMLU1w054=; b=T6Ur/FCZ2276TwL5gruT3s3fViMOmfhY5PPWcN8PLGZuMIVU74cWgM8op6XxQkbs2aDhge 134xxoYhu/fijWWYsD9JlX6tYxm7HgQYKbe2VRo3bJzCBnxbDAtQTfOtoTZEdWOW1KVkBY 6QvP8slEmlcyzRT5n3VhRM3x3FUXE5s= X-MC-Unique: PLJ4TikONWusEB3SVTBySw-1 X-Mimecast-MFC-AGG-ID: PLJ4TikONWusEB3SVTBySw_1754418556 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418553; x=1755023353; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=07QBWaYGFP72bgwrXFQvyDVEM/hIfWp2TskMLU1w054=; b=OuQWhOoJ0XNsFe/CqCIrB1uWiq99Qzu8B3Q/Q5v9MDohZKBhcbhxf3iELSSFi/rTYJ qNBS2nBoyYpeExWBVpYSORZpWOX8TB2sG0GKnQLffneqeDQ39HK/AW07SuY9C2MKS4PV hOs302IixmMa2dU13OLnYVmziu5aYGmeIfCR5sHdEimyKOHOTxFqMxhstz7JJ916F4E0 KcxQqXkcMMUketlpn7ZP7WJKRUdzkU9uSFqQmFls/Ab91pGBZP1rr+pupx6ZPPAdYN+Q 366uQ+Jg6FNIbI3hXFM4+DBkYerx5z3MsvVICtTL9o1YtsdoofdZOVkO6AbzOSwRbaR+ X3Lw== X-Gm-Message-State: AOJu0YwbgS3Lo4YljViEUHnK+4+QBmbWECXE2olqPPwrOsRpMQdy/1H5 eGBBY7CZqm3Dg4KxP0LQ56myhxswt0IpX/G9rUWHueHc9CrJnQ/XStVldT870rDQwPOsQtoo9eY i/KSlaPNf1g4MQeDu0YkemIKAH/Bd2uYVTzv7RkXNL7pPgSSYqiCJvNXn X-Gm-Gg: ASbGncsiY87pRvxg0znl1plYbnUlKAG2c7sBPukhrpyZC03GVbFu9aqGFhlQ791EV1P ZEOvdQ/lyoCUp2Zsu+BKYHr/lUZArVgNJknuq1dod98MIYzJfTz4BG014i4K2Ie2PEi6oNgBJT0 w/RP1EvTitdksdMMp7mWHzqsc913xdLH2+0YXTS4Q9UQklUSDrEIFPzmRiU6JEjeCc7d1ItuWX5 dqQZ5iHp8uu+9EHqIzk+XqHNjZIstefc5K5wFq485rQO/XI/w3IuoqJBYg6sa4uUt1mB0XF3EK7 1H4SDj34S/Ok7+Z4q9RK0mpV/cNqJPe4gUZmTKjsZNbDgPa99g== X-Received: by 2002:a17:902:cf4a:b0:240:cd3e:d85c with SMTP id d9443c01a7336-2429f51b7cemr1251375ad.31.1754418553189; Tue, 05 Aug 2025 11:29:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE2ZPXpWMt8tqXd3gad2Pt/IqMk9hJOzYc7uaubY0Wx+5+pUvIXaWfZ6nBWYTK1Rx8cnnjf9Q== X-Received: by 2002:a17:902:cf4a:b0:240:cd3e:d85c with SMTP id d9443c01a7336-2429f51b7cemr1250965ad.31.1754418552785; Tue, 05 Aug 2025 11:29:12 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:16 +0530 Subject: [PATCH v9 09/27] migration: push Error **errp into qemu_loadvm_state_main() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-9-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6637; i=armenon@redhat.com; h=from:subject:message-id; bh=FhyjtxycGqdBWTGuXY6EbWNSDYXy4Pj14R3BjyLrHhc=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX+nn7NXsQT+lBV4IaKxcxdZ8tfLNM87vE5RMk8KnN sdK/9jfUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCLZ3YwM6748NOzzadx1zo4p cI+qlVHjrv5lG/ecWmwZn3nGLqFtNcP/qOs5EzIvcJq9myDc+bFV9tLOji2zxNyqNPf/3JdyuKK aFQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754420614038116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_state_main() must report an error in errp, in case of failure. loadvm_process_command also sets the errp object explicitly. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/colo.c | 5 +++-- migration/savevm.c | 33 ++++++++++++++++++++------------- migration/savevm.h | 3 ++- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 0ba22ee76a13e313793f653f43a728e3c433bbc1..a96e4dba15516b71d1b315c736c= 3b4879ff04e58 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -659,6 +659,7 @@ void migrate_start_colo_process(MigrationState *s) static void colo_incoming_process_checkpoint(MigrationIncomingState *mis, QEMUFile *fb, QIOChannelBuffer *bioc, Error **errp) { + ERRP_GUARD(); uint64_t total_size; uint64_t value; Error *local_err =3D NULL; @@ -686,11 +687,11 @@ static void colo_incoming_process_checkpoint(Migratio= nIncomingState *mis, =20 bql_lock(); cpu_synchronize_all_states(); - ret =3D qemu_loadvm_state_main(mis->from_src_file, mis); + ret =3D qemu_loadvm_state_main(mis->from_src_file, mis, errp); bql_unlock(); =20 if (ret < 0) { - error_setg(errp, "Load VM's live state (ram) error"); + error_prepend(errp, "Load VM's live state (ram) error: "); return; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index f3b91c8ae0eee6078406081f0bd7f686fed28601..ad3dd9b172afc541f104d2187a7= 9bafa8e380466 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2105,7 +2105,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis); + load_res =3D qemu_loadvm_state_main(f, mis, NULL); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2407,6 +2407,7 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) */ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error *= *errp) { + ERRP_GUARD(); int ret; size_t length; QIOChannelBuffer *bioc; @@ -2456,9 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomi= ngState *mis, Error **errp) qemu_coroutine_yield(); } while (1); =20 - ret =3D qemu_loadvm_state_main(packf, mis); + ret =3D qemu_loadvm_state_main(packf, mis, errp); if (ret < 0) { - error_setg(errp, "VM state load failed: %d", ret); + error_prepend(errp, "Loading VM state failed: %d: ", ret); } trace_loadvm_handle_cmd_packaged_main(ret); qemu_fclose(packf); @@ -3074,8 +3075,10 @@ static bool postcopy_pause_incoming(MigrationIncomin= gState *mis) return true; } =20 -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis) +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp) { + ERRP_GUARD(); uint8_t section_type; int ret =3D 0; =20 @@ -3083,8 +3086,10 @@ retry: while (true) { section_type =3D qemu_get_byte(f); =20 - ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= NULL); + ret =3D qemu_file_get_error_obj_any(f, mis->postcopy_qemufile_dst,= errp); if (ret) { + error_prepend(errp, "Failed to load device state section ID: %= d: ", + ret); break; } =20 @@ -3105,7 +3110,7 @@ retry: } break; case QEMU_VM_COMMAND: - ret =3D loadvm_process_command(f, NULL); + ret =3D loadvm_process_command(f, errp); trace_qemu_loadvm_state_section_command(ret); if ((ret < 0) || (ret =3D=3D LOADVM_QUIT)) { goto out; @@ -3115,7 +3120,7 @@ retry: /* This is the end of migration */ goto out; default: - error_report("Unknown savevm section type %d", section_type); + error_setg(errp, "Unknown savevm section type %d", section_typ= e); ret =3D -EINVAL; goto out; } @@ -3123,6 +3128,9 @@ retry: =20 out: if (ret < 0) { + if (*errp =3D=3D NULL) { + error_setg(errp, "Loading VM state failed: %d", ret); + } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ @@ -3143,6 +3151,8 @@ out: migrate_postcopy_ram() && postcopy_pause_incoming(mis)) { /* Reset f to point to the newly created channel */ f =3D mis->from_src_file; + error_free(*errp); + *errp =3D NULL; goto retry; } } @@ -3176,10 +3186,7 @@ int qemu_loadvm_state(QEMUFile *f, Error **errp) =20 cpu_synchronize_all_pre_loadvm(); =20 - ret =3D qemu_loadvm_state_main(f, mis); - if (ret < 0) { - error_setg(errp, "Load VM state failed: %d", ret); - } + ret =3D qemu_loadvm_state_main(f, mis, errp); qemu_event_set(&mis->main_thread_load_event); =20 trace_qemu_loadvm_state_post_main(ret); @@ -3260,9 +3267,9 @@ int qemu_load_device_state(QEMUFile *f, Error **errp) int ret; =20 /* Load QEMU_VM_SECTION_FULL section */ - ret =3D qemu_loadvm_state_main(f, mis); + ret =3D qemu_loadvm_state_main(f, mis, errp); if (ret < 0) { - error_setg(errp, "Failed to load device state: %d", ret); + error_prepend(errp, "Failed to load device state: %d: ", ret); return ret; } =20 diff --git a/migration/savevm.h b/migration/savevm.h index b12681839f0b1afa3255e45215d99c13a224b19f..c337e3e3d111a7f28a57b90f61e= 8f70b71803d4e 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -66,7 +66,8 @@ int qemu_save_device_state(QEMUFile *f); =20 int qemu_loadvm_state(QEMUFile *f, Error **errp); void qemu_loadvm_state_cleanup(MigrationIncomingState *mis); -int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis, + Error **errp); int qemu_load_device_state(QEMUFile *f, Error **errp); int qemu_loadvm_approve_switchover(void); int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754420614; cv=none; d=zohomail.com; s=zohoarc; b=dDSf+2iFV27BlGCI6dQSNN4H/jlm5QyRPyLmkiqzh89V1sDdou68yW69xoT615pew2PFM1kHUTOTGlzZyt2H2xtLPgPpZdH6QtB70CxGNcJ4PvmiHfJcar+jiarEI/62Ya/VGnpF9xZMoxCQa671Vcm43ttBeXnkp1qch6MWuqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754420614; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sVu7q4OhZQGzIAC7cqmC50LWm5OBUvtT4nQ7i2IG+Zs=; b=mDjNNmikrO8f24EaKigszzLsI4GxeC3YDvQkf1O8+VNNRCnMxbQbtYTOCfAm4ArQTlYkcbPagSLwgVNI36khEoMyQ9ReppM5LcZE40nkDA6U92h+clz5aXobEKdy+xZnDkfWcZBuWGgSwOxZF6MgNaKckjckXHGdZbEN6Er+pdU= 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= (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 1754420614507875.9616431368488; Tue, 5 Aug 2025 12:03:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMwJ-0002wB-Eu; Tue, 05 Aug 2025 15:03:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPj-0007gZ-B3 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPf-00049G-9m for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:30 -0400 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-496--IodTq5aONqRdejfUVKMVg-1; Tue, 05 Aug 2025 14:29:25 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b2c36d3f884so4094135a12.2 for ; Tue, 05 Aug 2025 11:29:24 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418566; 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=sVu7q4OhZQGzIAC7cqmC50LWm5OBUvtT4nQ7i2IG+Zs=; b=asmrFKl3n/4Zlxd2CFQik9GFTMzwc9dXIDzuzFCaB5ACoP1K4l9IUgzR3Bbjw5KLk+i/rE kKW/ieTUhmbTQ7gE54Ip2BKSSIxH6KOZEVOh9B5BakUkvOexlNhU4ryP9712UIubwzjwPg /vpWsdF+bvuMIt94AJvR46PQ7crBljA= X-MC-Unique: -IodTq5aONqRdejfUVKMVg-1 X-Mimecast-MFC-AGG-ID: -IodTq5aONqRdejfUVKMVg_1754418564 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418564; x=1755023364; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sVu7q4OhZQGzIAC7cqmC50LWm5OBUvtT4nQ7i2IG+Zs=; b=QL9Z1XQRHMRmFhbcYXzAHKMLB//Uj3TauykvvLKwikD6/Af8WLRD71h5bLPXVyfkU0 ZyAHxdUO0caMJ4a48Xc4ZZ71ovKimqjH42VGFZQsbbN0mCbi0Z26zutaX6OwtamyM2iO m8VzhvxB7wBiwXJlU0kSNfJ0ZOPBzdfUecLD1hj4tzUI0oeRhk4N1xi4mTewHLDQABal q1sgyDxRRavoAjW13w20UMeCc+0s6KFoD8/vD2St2jP+nXVSdHcytB5ctC9M0qwJ4zkG lscUWLx6nvzesxm8PEmzEHxFE6PtP7nhFmNEW6pTnhMbOo3R+cE6ckS+fuZ+YBxLPPBB s1mg== X-Gm-Message-State: AOJu0Yw7Kr/kuSTGWlDT6ktTsMIL0LTTSzuGiDFGSikibJjs8FbMMbgo 0cX/LxVUmt9j9NPEhqQQq5obuLo0WwZzAGzdAYDAafBv8tB1tZP61wmChwbsU5zL9x5oT8PzTLe OICw9TwV8KrQsuixcne/+7FBxI7rz5w4Hhf6dhfj8XoXbtFFor8m3+jJP X-Gm-Gg: ASbGncvfdJfDDg7qizwhQCX9xuQX/B9+72xhBu7GeiOd0aiWbjNS9Rzt5SEtrRVvr2/ EJLDnivXbsUgs49m0lIza+z7jEBQGagvh3+jfwByR4ORP3IGgI/QryFlYT7ptxcB5kA7q1NjbAS LwE3JvS80ng2VrPNUyRsYAqk7oZFoyLbH6wmG1L8SK0OYrD21rdF7a/WOMg13NHr9VIhG8C7j4c Mc5rrMG+GVg/CtQtCgiUGDjjcOCa6Xd7w6he6k/6wzjAytsRNejYxFAb12Q1NLA/CN20exGD/5u KuRavsIV3Mmw/bvD/jw+ln/hxxiEpgaRnltcERlt/S8OMKON/Q== X-Received: by 2002:a17:902:ccce:b0:240:3915:99ba with SMTP id d9443c01a7336-2429f520b5dmr922035ad.5.1754418563715; Tue, 05 Aug 2025 11:29:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFKgWnHu5ejRuyp56QDZ5GwowN/ib6X10wnQwAWpDaphUkIlLyOX0Tp8ezW0oiJazQ7h0RRkA== X-Received: by 2002:a17:902:ccce:b0:240:3915:99ba with SMTP id d9443c01a7336-2429f520b5dmr921795ad.5.1754418563253; Tue, 05 Aug 2025 11:29:23 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:17 +0530 Subject: [PATCH v9 10/27] migration: push Error **errp into qemu_loadvm_section_start_full() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-10-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4734; i=armenon@redhat.com; h=from:subject:message-id; bh=vlX/kmbnbsPb1YFZ0DOsyTbnpSxV6PGLXKlTeV2yCp4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkXxl9TYd1QTNcvkRHOPm4r4iUOLfoolqB5F7h61VbQ gu67Y07SlkYxLgYZMUUWRq+Bsg2BRRGRNq+vA4zh5UJZAgDF6cATMSPi+F/HOtmDcfTtxmONu5p mryEbcrdkvUFP/R279B1UXp+himrluEXs+yRCzLNieL/L+uI/v733c49N37XRKPGc2Fqnh1vp63 nBQA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754420617361124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_start_full() must report an error in errp, in case of failure. Signed-off-by: Arun Menon Reviewed-by: Marc-Andr=C3=A9 Lureau --- migration/savevm.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index ad3dd9b172afc541f104d2187a79bafa8e380466..e337e3c61e7627f09b853bf5e9b= 845c38cb5f082 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2722,8 +2722,9 @@ static bool check_section_footer(QEMUFile *f, SaveSta= teEntry *se) } =20 static int -qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type) +qemu_loadvm_section_start_full(QEMUFile *f, uint8_t type, Error **errp) { + ERRP_GUARD(); bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_FULL); uint32_t instance_id, version_id, section_id; int64_t start_ts, end_ts; @@ -2734,8 +2735,8 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) /* Read section start */ section_id =3D qemu_get_be32(f); if (!qemu_get_counted_string(f, idstr)) { - error_report("Unable to read ID string for section %u", - section_id); + error_setg(errp, "Unable to read ID string for section %u", + section_id); return -EINVAL; } instance_id =3D qemu_get_be32(f); @@ -2743,8 +2744,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read instance/version ID: %d", - __func__, ret); + error_setg(errp, "Failed to read instance/version ID: %d", ret); return ret; } =20 @@ -2753,17 +2753,17 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) /* Find savevm section */ se =3D find_se(idstr, instance_id); if (se =3D=3D NULL) { - error_report("Unknown savevm section or instance '%s' %"PRIu32". " - "Make sure that your current VM setup matches your " - "saved VM setup, including any hotplugged devices", - idstr, instance_id); + error_setg(errp, "Unknown savevm section or instance '%s' %"PRIu32= ". " + "Make sure that your current VM setup matches your " + "saved VM setup, including any hotplugged devices", + idstr, instance_id); return -EINVAL; } =20 /* Validate version */ if (version_id > se->version_id) { - error_report("savevm: unsupported version %d for '%s' v%d", - version_id, idstr, se->version_id); + error_setg(errp, "savevm: unsupported version %d for '%s' v%d", + version_id, idstr, se->version_id); return -EINVAL; } se->load_version_id =3D version_id; @@ -2771,7 +2771,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) =20 /* Validate if it is a device's state */ if (xen_enabled() && se->is_ram) { - error_report("loadvm: %s RAM loading not allowed on Xen", idstr); + error_setg(errp, "loadvm: %s RAM loading not allowed on Xen", idst= r); return -EINVAL; } =20 @@ -2779,10 +2779,11 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t= type) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, NULL); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state for instance 0x%"PRIx32" o= f" - " device '%s'", instance_id, idstr); + error_prepend(errp, + "error while loading state for instance 0x%"PRIx32" = of" + " device '%s': ", instance_id, idstr); return ret; } =20 @@ -2793,6 +2794,9 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Reading footer section of instance " + "0x%"PRIx32" of device '%s' for version_id: %d failed", + instance_id, idstr, version_id); return -EINVAL; } =20 @@ -3097,7 +3101,7 @@ retry: switch (section_type) { case QEMU_VM_SECTION_START: case QEMU_VM_SECTION_FULL: - ret =3D qemu_loadvm_section_start_full(f, section_type); + ret =3D qemu_loadvm_section_start_full(f, section_type, errp); if (ret < 0) { goto out; } --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418635; cv=none; d=zohomail.com; s=zohoarc; b=WSnu1OZi0zk3KpO22xxjG6O17WjBvnvofSQuzDC0LwR8skwrJlaZTXQ8QIJZ0u7QCLY9H9Ul31bnTfTCLlG8jHKfKUK9l/bp6AEYKKVU1xDmqdh7WPgS+2nLA65lUWORQG1SWgC9alR/Aeak1cailfhHaU3PXu2/l0zvhrnV5FU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418635; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7aJlwdJxmiIHB1Fbudf+74TnSkcndxknIvW/O+ppERY=; b=FoUL1TIH8cvy9FOf90rM8DRPVCKD6PQCngR9keCjupFyXy5V9MpcKJbipaNbhR//c3A6dTZ3OrVz3p6U1OamBV8KUEbGQaj8r5DOCIUUU22wMB61pwOgnz2l1VZRJTwmDTNq3jq19eOb9wpGoVdalDi5pY7uYonBXQfaBGi7cS0= 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= (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 1754418635498496.8359197729857; Tue, 5 Aug 2025 11:30:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMQc-0000Tf-Ua; Tue, 05 Aug 2025 14:30:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPp-0007nc-2w for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPn-0004Ax-FF for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:36 -0400 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-659-QJYLbTuUNmuzOjnGxZeKWQ-1; Tue, 05 Aug 2025 14:29:33 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b0e0c573531so4492363a12.3 for ; Tue, 05 Aug 2025 11:29:33 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418574; 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=7aJlwdJxmiIHB1Fbudf+74TnSkcndxknIvW/O+ppERY=; b=YBdpOvaAWdLNI+LcbbU23Bp8c5Hmmja42khua2h9UGruutrKV4n2ctLlQgAJzI+7GPVHnU bWxZmU9oB1uZjBJUM0IBwQRHgCoOZumcZvPzArzKm0lcNE9xmdKhaTtKElk0u3A6n+WIOo aFLdi/rU0r577JV0xlVqlg1aK1mVMtM= X-MC-Unique: QJYLbTuUNmuzOjnGxZeKWQ-1 X-Mimecast-MFC-AGG-ID: QJYLbTuUNmuzOjnGxZeKWQ_1754418573 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418572; x=1755023372; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7aJlwdJxmiIHB1Fbudf+74TnSkcndxknIvW/O+ppERY=; b=iJnnhdoDKTtOCD5u4MKkNr37d3kBzHGOOaXn2Igj0t3DB2+/AjePeis2hgPaI7R/ze eilwf3jJbZ2iSZrJQENUdQxXylhbJLNHLIarxWvJkV6c4dsfS4qb5Je+y6kaiKe9pzo6 ELdsy1HGs9VfaNxB/o5XIc1Za0A6SM4rGN9pZnFWIGfJSED0n5UrIrJ+JYFIOi7p2w0N rrHKdqK0CjqJlYciIsmOsL1cIi0bxeUdKDQxibzTTnvxQIe8UOnbI3g/lHgqKQe23JX0 lQaA4oQJpTsBXtq/Dwrv+99TV5c5nX/l85he5trT8XjpfpSMtWXwMaOuZ6/47tlijfyr Ih0A== X-Gm-Message-State: AOJu0Yz2ODdvfUaqma6bBhYf/b+mgAwaFXSF//psFltD90/dgWo54vUT kMiTzx8X7oSkxRugXVLldVHNcwgaKHHxWbCFPVZzApl/yfeQ+pPq72b/xUspl/rRvYImkWxHjsn S7K2Y090LH2/lD6XRk0dmurrRHDb+IQr+hxKUzBjxHpXivtyKsJt5ispF X-Gm-Gg: ASbGncvIYBUT10fAjn7xw2ZCBcqXEVRbjksuwmYMgs5iSLIvJ1Rg2mGNWqnhktk7XRD DJut85mReO2MgsxqahxYox/DgxcnJ/55XcaU0xehw7wmRBNYEX4G7kuudVVHhrX6hmpx6n7ooCE PFPoQ7ile8RZHlLPh5Zt+M6N4EgkGXnlyo7toHlqGXX/sxkmY9jzWTRXyEiHf5aDVx6t0PXEdat SSHWUtA2I+gHUJb65gu74f8YYtahpQQpHm0khyhe3awNPkWC5n+ieXbITbBhUfz9dMGMGUUjYTM vlz8VwxJQqy5PyF1wm27SOl/4GMJ8oq3E6xEVtaYhOrwi3+jvQ== X-Received: by 2002:a17:903:1206:b0:23f:cf96:3071 with SMTP id d9443c01a7336-2429f45ad88mr1093115ad.49.1754418572513; Tue, 05 Aug 2025 11:29:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG0HJgEsK73GbQE6xYH2IQEcUfMdo41EnQ2Mb67f+U6at+23CrHCkYp80CW3iOruJCJB/TN9w== X-Received: by 2002:a17:903:1206:b0:23f:cf96:3071 with SMTP id d9443c01a7336-2429f45ad88mr1092785ad.49.1754418572106; Tue, 05 Aug 2025 11:29:32 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:18 +0530 Subject: [PATCH v9 11/27] migration: push Error **errp into qemu_loadvm_section_part_end() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-11-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3062; i=armenon@redhat.com; h=from:subject:message-id; bh=XnYVXlzq7bjbR0/JNh5UZYmicLRY4O6/Yd5oUzZoK9E=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5lp22bUB+/dpG+TVnUonmelx0N+iTnFKWeu3tlhI vrt6erjHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACZS4sfwV6brgc3B61aNxUnO P20KnH/acqbl9UuuiZykpV0uuPd7MiPDBOdD9ed17e5PZfReuobN32DCohWK3TP4ct91qgVw8Qk xAwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418663683124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that qemu_loadvm_section_part_end() must report an error in errp, in case of failure. Signed-off-by: Arun Menon Reviewed-by: Marc-Andr=C3=A9 Lureau --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index e337e3c61e7627f09b853bf5e9b845c38cb5f082..1b93df7894dd332aea25da91e24= d02fa16e73363 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2804,8 +2804,9 @@ qemu_loadvm_section_start_full(QEMUFile *f, uint8_t t= ype, Error **errp) } =20 static int -qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type) +qemu_loadvm_section_part_end(QEMUFile *f, uint8_t type, Error **errp) { + ERRP_GUARD(); bool trace_downtime =3D (type =3D=3D QEMU_VM_SECTION_END); int64_t start_ts, end_ts; uint32_t section_id; @@ -2816,8 +2817,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) =20 ret =3D qemu_file_get_error(f); if (ret) { - error_report("%s: Failed to read section ID: %d", - __func__, ret); + error_setg(errp, "Failed to read section ID: %d", ret); return ret; } =20 @@ -2828,7 +2828,7 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } } if (se =3D=3D NULL) { - error_report("Unknown savevm section %d", section_id); + error_setg(errp, "Unknown savevm section %d", section_id); return -EINVAL; } =20 @@ -2836,10 +2836,10 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t t= ype) start_ts =3D qemu_clock_get_us(QEMU_CLOCK_REALTIME); } =20 - ret =3D vmstate_load(f, se, NULL); + ret =3D vmstate_load(f, se, errp); if (ret < 0) { - error_report("error while loading state section id %d(%s)", - section_id, se->idstr); + error_prepend(errp, "error while loading state section id %d(%s): = ", + section_id, se->idstr); return ret; } =20 @@ -2850,6 +2850,8 @@ qemu_loadvm_section_part_end(QEMUFile *f, uint8_t typ= e) } =20 if (!check_section_footer(f, se)) { + error_setg(errp, "Check section footer error, section_id: %d", + section_id); return -EINVAL; } =20 @@ -3108,7 +3110,7 @@ retry: break; case QEMU_VM_SECTION_PART: case QEMU_VM_SECTION_END: - ret =3D qemu_loadvm_section_part_end(f, section_type); + ret =3D qemu_loadvm_section_part_end(f, section_type, errp); if (ret < 0) { goto out; } @@ -3132,9 +3134,6 @@ retry: =20 out: if (ret < 0) { - if (*errp =3D=3D NULL) { - error_setg(errp, "Loading VM state failed: %d", ret); - } qemu_file_set_error(f, ret); =20 /* Cancel bitmaps incoming regardless of recovery */ --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418862; cv=none; d=zohomail.com; s=zohoarc; b=YcCThoNknALAjzPpicc9pf6+jum2MOWOWriiLYSJJ89OlICCTk+NMba817ChCFvLqUm0z+6jtPiYD24Z8M8/LWz//1hn2IiXq1hYapr/3Z05/jsP7y80433TASbd5zyzfwl62cEiVdNqdPLLJM/bagm5sePPhTsx8tEce5N3x9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418862; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TaboU7zUyZ+wdmC/AvAgIvsj62POPl+ga+Ly2TPzv14=; b=Ux/ZKLM127wza//B43zXQio8RR2xDDpYNR8U5hGJXWRKMPMSiZU/c7jFVgLO5avvyV5UxBBh1vhXMViydOUV5nNZioTr6k02WT2Ha1TVhygjAl+lzyVxpoHXR5eLXEm7+cbBlGYlU1D1JyWrscbtViApan0W2zgZsSWDmhRoV1w= 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= (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 1754418862093779.1267640298511; Tue, 5 Aug 2025 11:34:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMTJ-0000kn-Ql; Tue, 05 Aug 2025 14:33:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQ1-0008Dt-Cj for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMPw-0004Ci-TZ for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:29:46 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-605-sbaXyPQYOnaEL-O2rQDAAw-1; Tue, 05 Aug 2025 14:29:42 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-24011c9da24so1069175ad.1 for ; Tue, 05 Aug 2025 11:29:42 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418583; 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=TaboU7zUyZ+wdmC/AvAgIvsj62POPl+ga+Ly2TPzv14=; b=F9njDh7M4uddISmGHjuVmssRuc9bEHR7jL9TASK4gZSfLT+FhIS2mhCACYlvdr68LBOcLW AnF7DUmsPbJKmnUtzxu2xGhWsncAMv2m/SZDyBsY5bEom0EAYzBnD0M1muFQajprz71Bwz FQuNMpSBiELt+bgckd0ytI6jbvfVQrY= X-MC-Unique: sbaXyPQYOnaEL-O2rQDAAw-1 X-Mimecast-MFC-AGG-ID: sbaXyPQYOnaEL-O2rQDAAw_1754418582 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418582; x=1755023382; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TaboU7zUyZ+wdmC/AvAgIvsj62POPl+ga+Ly2TPzv14=; b=K3GL2pl/5AeOauVQJl0NvYFwHbM54IZvU5qFFIoX4Hd1VOjeIPV9ybOWf4cV0Qey5H 2SaI7ORzsz3tX3y2iLgJNHreGUOZCmH/ayrRR2+ZZMZSO/4he4lnciNrOzMAkc8ThpMM Iqt92gRFM6ATZRl4cP6PACLnLwu9UVckRibpNmkC3kjSfivCpx2HiiCyz7k1TTh7t2wP S2terzojPLWPCJhLaVIz4bqDuLKUJaKl96wlB1xwa9oLLkrHsDR2KzMCE02m5Qdnrtng o5LbXNiiLTMIa+ugfpN26AlHXjxZiXw+ojfUnJj7Csgp/yNv9UVr0r0Re6YmCRVs9OeD 6omw== X-Gm-Message-State: AOJu0Ywn94GZHoSsHV1SWY3dHxCyewrrpxvO8yM3XnP14TrcYU1xE1l3 T8QgRu/OBpNE44LpgnCr5Vv+OnXBaHQFrWYoVaJhxEFW3mkEoyZXRJbUZbCgrOfetmfW2pVnsnK 9v36CMsrn+GGVbRDpxkwpQM65xPEkzeiUv72BTq40uuFHOY1n6DnlnQSy X-Gm-Gg: ASbGncv8c1d3ypComUWeHe3B2D0+Q/5eHt9YmGDq6iUUVsBQC0eUJb0xzcPBZw0aOd/ AOT8WLUoz4D8YKzxwi3QBjK7xtUya82S1w+LTY3d2aEfQkzjPqFUamIkYurQrAXLww3Yv+5dHvo JsMojdR9s+3hCgH2ltgb1Zs4BocYjwlzAtrsd05bniWKnQFoMm+2jgIKgGuoJ0agGsLQc7k/5V/ SfZOKNykyJr2w8AhoIQOoJf7vexRqRlq36GQ1kKhzlOE8+fZa0j14e6ykIRzmxyu4h+S3a/CwxX PkpHLxpvEj+JFX5v58GIwTyY8pmRVXjgkUyV8I9oxVi3yLth7Q== X-Received: by 2002:a17:903:124e:b0:240:3dfd:99a2 with SMTP id d9443c01a7336-24288d74a21mr62595445ad.10.1754418581593; Tue, 05 Aug 2025 11:29:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHqu9Kykyd4AfdZypou/4mY571iuPVCTMk+FVJMc45wzitHv6QRniDilM5RDJg5dTGHNu46Vw== X-Received: by 2002:a17:903:124e:b0:240:3dfd:99a2 with SMTP id d9443c01a7336-24288d74a21mr62595115ad.10.1754418581187; Tue, 05 Aug 2025 11:29:41 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:19 +0530 Subject: [PATCH v9 12/27] migration: Update qemu_file_get_return_path() docs and remove dead checks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-12-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3858; i=armenon@redhat.com; h=from:subject:message-id; bh=/2xULR40zKIsjfAF1Au17FEoqrqB3ypLerXyx922t84=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5m8TKa1N5NiIr8qtL8OTypY28bSvqlnKt+E/AMrZ 6bt1gvqKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBHnfob/7gVOLzZuiX04fdNF eeNVL/uXpm1W1tgTruvs+1OrZYvZR0aGp/uXTi31Vwk02v1yV8G3mlfTO5uYH7T63lXwuPSR5/h RXgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418863132116600 The documentation of qemu_file_get_return_path() states that it can return NULL on failure. However, a review of the current implementation reveals that it is guaranteed that it will always succeed and will never return NULL. As a result, the NULL checks post calling the function become redundant. This commit updates the documentation for the function and removes all NULL checks throughout the migration code. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/colo.c | 4 ---- migration/migration.c | 12 ++---------- migration/qemu-file.c | 1 - migration/savevm.c | 4 ---- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index a96e4dba15516b71d1b315c736c3b4879ff04e58..71842c798a1dbbea6a7ccf8cb64= e2c836c0f574c 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -850,10 +850,6 @@ static void *colo_process_incoming_thread(void *opaque) failover_init_state(); =20 mis->to_src_file =3D qemu_file_get_return_path(mis->from_src_file); - if (!mis->to_src_file) { - error_report("COLO incoming thread: Open QEMUFile to_src_file fail= ed"); - goto out; - } /* * Note: the communication between Primary side and Secondary side * should be sequential, we set the fd to unblocked in migration incom= ing diff --git a/migration/migration.c b/migration/migration.c index bb7d5e1dee52692cbea1d2c8fdca541e6a75bedb..6962dc7d7f3e0121d28994c98f1= 2f9f2258343d7 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2647,12 +2647,9 @@ out: return NULL; } =20 -static int open_return_path_on_source(MigrationState *ms) +static void open_return_path_on_source(MigrationState *ms) { ms->rp_state.from_dst_file =3D qemu_file_get_return_path(ms->to_dst_fi= le); - if (!ms->rp_state.from_dst_file) { - return -1; - } =20 trace_open_return_path_on_source(); =20 @@ -2661,8 +2658,6 @@ static int open_return_path_on_source(MigrationState = *ms) ms->rp_state.rp_thread_created =3D true; =20 trace_open_return_path_on_source_continue(); - - return 0; } =20 /* Return true if error detected, or false otherwise */ @@ -4011,10 +4006,7 @@ void migration_connect(MigrationState *s, Error *err= or_in) * QEMU uses the return path. */ if (migrate_postcopy_ram() || migrate_return_path()) { - if (open_return_path_on_source(s)) { - error_setg(&local_err, "Unable to open return-path for postcop= y"); - goto fail; - } + open_return_path_on_source(s); } =20 /* diff --git a/migration/qemu-file.c b/migration/qemu-file.c index b6ac190034f777dbde0da1598483a892089d7538..f9ccee9a1091ecbd37e6b7d2081= a4446442b544d 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -125,7 +125,6 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bo= ol is_writable) =20 /* * Result: QEMUFile* for a 'return path' for comms in the opposite directi= on - * NULL if not available */ QEMUFile *qemu_file_get_return_path(QEMUFile *f) { diff --git a/migration/savevm.c b/migration/savevm.c index 1b93df7894dd332aea25da91e24d02fa16e73363..b6b3f3fae742ae9d72d3af6e684= 40e14ffd30b0c 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2588,10 +2588,6 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; } mis->to_src_file =3D qemu_file_get_return_path(f); - if (!mis->to_src_file) { - error_report("CMD_OPEN_RETURN_PATH failed"); - return -1; - } =20 /* * Switchover ack is enabled but no device uses it, so send an ACK= to --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418915; cv=none; d=zohomail.com; s=zohoarc; b=Cf4VIP32kFMnRW8omn241FD5JqK39lwJR5q05VBZiVYjfBNebV+UB2gK9B8L8PfJoLFrypuVXaTNPja/tvishNJix/Itql8LwDyrKzl70qwwXrrUGTcRCfM9czBFh35854EUm3PlwtwNZF2iHrwuI5RTbZkdfrRYqbrA6QVodBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418915; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xZTX/SUHTw4T4A2lKDjmLG0aCTOrTAcJZ1w0sIZxspY=; b=PsYkUkW6C++ko9jx/fTy9XdtjCXB2n6RGwt5M5Gag+oxEgRLlwYc6TEBeMiWXuP30bJG7+LmJPI1b6jYqYJOf5MXhSznEiQ0YURimH2z7LUTSKglceHMS4nxTXBx+I6HI6zKZ6WUItGZZsIx7fDR/GbyeQeGPUUMIF/0m93odqU= 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= (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 1754418915239573.1855824889107; Tue, 5 Aug 2025 11:35:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMUe-0002Mz-RH; Tue, 05 Aug 2025 14:34:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQD-000083-5A for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQ9-0004Eq-1R for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:00 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-451-iJ4W7IILO6ymvp3JzEVYHw-1; Tue, 05 Aug 2025 14:29:52 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2400cbd4241so82484785ad.3 for ; Tue, 05 Aug 2025 11:29:52 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418595; 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=xZTX/SUHTw4T4A2lKDjmLG0aCTOrTAcJZ1w0sIZxspY=; b=USFo1VzBkJMx5UG8dZCL/UPI4eMx34p4Pzaf2i++pUzd4GiQo1E2ZwoUbKcARfOqOYs9XA At3rArOGc42ukHmh42mZWm/0ZZNILZgVXagkIOV+wAMfyy4h/I9xiiBzaVp4gIbrlDfIG6 nzkHmqEfCFw9Z9s54nRg9siGCloI3bU= X-MC-Unique: iJ4W7IILO6ymvp3JzEVYHw-1 X-Mimecast-MFC-AGG-ID: iJ4W7IILO6ymvp3JzEVYHw_1754418591 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418591; x=1755023391; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xZTX/SUHTw4T4A2lKDjmLG0aCTOrTAcJZ1w0sIZxspY=; b=vhdjynPWlF42tBOSBX/9T1gLBlASoEP9NJUoMlOYnj1JOIhgu6QQQpCFkUKScNNjnj tJCdkWpRiIAmBrQPva39FPyAilYiPoTMpgZtsRyLLceaqYYKKaphM19RDaql6RdNWjYz kggAxF3SYZw1jUym6MeUYv3W+PH4MrVfKYpRL8lWDX4vUIP8L6BvLRAl3M9ms4EwYz+n 3A+d2Xh5yec5JxnK5In9OK4UpnXPNqt+bZM91JJjRVrxilEPF3FO1iivAQP0LVrnxCgg QBXHQp4piedyaSuZLblzhNFtEKo/UccC4ZgsTPTMWsqFE4lFOXKMpowb0vZY6x3pxTzf RHtw== X-Gm-Message-State: AOJu0Yx+8lMblBAozNWIPo5+YQVJMe4QxLZOOB94sukQKSj7w2rq+Vb8 3VeX9rt+KxEa7tClkIiIZvZh9ocX2de/woKgYj7NcYIOZL4vP2WALwGs5lbNzd1OXlP7HUF6HbE qjOFdTgAbyCm1zSR4+XJk3zyD8nZYBWhXa7fq9cmFiTBGOmt/B7CXBNra X-Gm-Gg: ASbGnctfJivKzne34BDC0xqzdtPqS2OvsSCYwrR81icvMWiWO/5drd68G3YRRM0EfHZ xCl171gu8LWI6/Kiihb5pKNJKpOmdAhQT5LgfI9lZt+8PsomLeyigl4YyxGp8xdHL6BboE/ic98 3otXJnq7YK4eQBQ/G05H5OMiR6z5A0aoDoZUmVQ+38Tw5yggv97cSLbh0DRu33tWvaLmCFdA5w7 sgABCtHEwcuihLhfcEHW4nrUg+Ycxx1dPe3UMNHZF7juRa1BnazSsuCLBRD9QE+Td174K7ZVcCp VOJXDv6vp5vgcGpXaM1i/uC+KRG4CW5lxS3KZczmRli/VyRfDg== X-Received: by 2002:a17:903:1b4d:b0:240:5c38:7544 with SMTP id d9443c01a7336-2429f59d791mr770615ad.50.1754418591183; Tue, 05 Aug 2025 11:29:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFfJ6PTvfEsWtm+rBSHZzQ8eHlnkfVtL9qFvTicnPsucIsBikxvMNNAqyClvA/RWAgX+PZ9RQ== X-Received: by 2002:a17:903:1b4d:b0:240:5c38:7544 with SMTP id d9443c01a7336-2429f59d791mr770305ad.50.1754418590841; Tue, 05 Aug 2025 11:29:50 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:20 +0530 Subject: [PATCH v9 13/27] migration: make loadvm_postcopy_handle_resume() void MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-13-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2006; i=armenon@redhat.com; h=from:subject:message-id; bh=P7iwYC2/YwpuEX6VmGoFGQyEuB3Mm2xzs+nfJGhPeRY=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkXxmJP1+zbc7EXM4WW+0yj+2ZzsaZs0Xk1xrH167qP M/7aUdJRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIlwFTP8LxJ+d3f6jaDIoKWi 3TM3TDWM3no6cU4477xZFb/mqdw91MXI8CaxJPy7Wi3L9uZHq0rei1+9l2T3gd+sXrHzlkXy/aY HnAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418918446124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. Use warn_report() instead of error_report(); it ensures that a resume command received while the migration is not in postcopy recover state is not fatal. It only informs that the command received is unusual, and therefore we should not set errp with the error string. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon Reviewed-by: Fabiano Rosas --- migration/savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index b6b3f3fae742ae9d72d3af6e68440e14ffd30b0c..3517609ac661af618cf4d97e7f8= fa1ef2b64bd4d 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2334,12 +2334,12 @@ static void migrate_send_rp_req_pages_pending(Migra= tionIncomingState *mis) } } =20 -static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis) +static void loadvm_postcopy_handle_resume(MigrationIncomingState *mis) { if (mis->state !=3D MIGRATION_STATUS_POSTCOPY_RECOVER) { - error_report("%s: illegal resume received", __func__); + warn_report("%s: illegal resume received", __func__); /* Don't fail the load, only for this. */ - return 0; + return; } =20 /* @@ -2391,8 +2391,6 @@ static int loadvm_postcopy_handle_resume(MigrationInc= omingState *mis) /* Kick the fast ram load thread too */ qemu_sem_post(&mis->postcopy_pause_sem_fast_load); } - - return 0; } =20 /** @@ -2647,7 +2645,8 @@ static int loadvm_process_command(QEMUFile *f, Error = **errp) return ret; =20 case MIG_CMD_POSTCOPY_RESUME: - return loadvm_postcopy_handle_resume(mis); + loadvm_postcopy_handle_resume(mis); + return 0; =20 case MIG_CMD_RECV_BITMAP: ret =3D loadvm_handle_recv_bitmap(mis, len); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418890; cv=none; d=zohomail.com; s=zohoarc; b=F2WglmYU6H1juzQy8szWRm7b43rF7oKvfLq7rcVS3qMfLvM/Vy7ox5JKqo/Js8WT7ZXNN0regZGakJqm4T+9Pq5LCPMAaVH7zjUVwGN5rFdwIuHoxYdixQkNzoa+Cmf9jimh9MfSJNEfEl6HXbP7vJthwud14JPKG5rygR6YufQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418890; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OYwT05hZEeiLr3QbRZoLnbEMZBn0M4LZ919yU6ahnHU=; b=fxpfF2NRRZ5pTE/ewhbgs/OocJKg6WMlnLOIDnszRf4rKV7xVocZ2elgjP66mm9pa1hUDJGCd/lruF04MbW+KVA8XYO5ORzYWLl/mEBZDJsuJ/R8lCuXtjK05G1KMEFG5ScxLgyWRwXJ/RGILSNQC1ai5TMJS7y9oVbtWi4dizk= 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= (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 1754418890182677.6368752175764; Tue, 5 Aug 2025 11:34:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMUm-0002rW-0G; Tue, 05 Aug 2025 14:34:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQK-0000BQ-Bf for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQG-0004Gh-5i for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:07 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-497-Fd5bAa_wP8a1aeaJPFsixA-1; Tue, 05 Aug 2025 14:30:00 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-23fd831def4so45713915ad.3 for ; Tue, 05 Aug 2025 11:30:00 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418602; 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=OYwT05hZEeiLr3QbRZoLnbEMZBn0M4LZ919yU6ahnHU=; b=B2J7JSWJMjZLLMxtfc/cONkrkjcR4+jaHNLqpBmruHhhiqqFg3M0/G+F6VMeoai/M2sX3Y Ze2qMJxRAtxhr4I5B/XEd4eacGObMrWrqE0fZoyFSNrEttTHx/r1sf4xy6drtiMm7Yn16J W8t+aTc1Juk4ObtOAzCemzSzrOWwjeU= X-MC-Unique: Fd5bAa_wP8a1aeaJPFsixA-1 X-Mimecast-MFC-AGG-ID: Fd5bAa_wP8a1aeaJPFsixA_1754418600 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418600; x=1755023400; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OYwT05hZEeiLr3QbRZoLnbEMZBn0M4LZ919yU6ahnHU=; b=TMI8WBUPtiQsXANRhklgvaf4Cd4E+s0FAs6vpzARb0xHx3w1Iq4OT6cJFQca3+sao9 9a7F4KIz3A8U+dYOF4/1yqqUkND62HkChijNf38qelZFNlpthvRHDz8IAnr2t1X0SXKj q/n5fdHSbaswo0NuFsuvf0Zf5txGq88H6v8ovgBlkdCw297kdS9/ouKoqNmkcC17pfcy YDspmZfALucTqyLLa7pRhW7/+Bn/INVAVwVVFSXQeva+67lWFa7W/9EuZGnm0nWwbpW2 Xx6eHGtW0PFgVJ0oAsKgMNJN0OJ8sixbl7OTtbiX1DOuYXIPtcBr8rkHpx6YBOdkyoFb bfww== X-Gm-Message-State: AOJu0YyD5se4YaPDsID9KugHvNhc9c1QVI+6XHL7KQhWqCx9LOIKvzeT 0E4IqahRaKePINJ1cBtdwFZp8w3ohVBqN/emgqGsy/iWMc4O7pVs9lJRn8/JXu2WccJe26YF9nC 7tKopNNnmNWOVe5lS5p838Lz4O9kxTY1tcEcjnZ2MlGGiAsA69gzr9P8O X-Gm-Gg: ASbGnctOIcP0j6MiQH80LYXkN0/6jzmTct4wym6GpQRS2BStFSolp3QHCqMaRgBpBy7 6MDAVhwURsqVAEVw5eFc20geMpKEAY3LC9/MIhhmRwvMHoCy1HEkwKCxhiBznBF99whMzhEBxXL Oa8H13F3zqXIWN9LJKtCloRUGCeauG/refIgoh0ljvjdC+RNMY3Sp2RVCMT68d+7RPgF5Kas9Bk oZnQgP6gMnFYqyXRuK4oNIfIyKKvLTp0gc2W5Dvq6nSdcewcmott11G1WJxYZqzJ0E44VzGjDHp XIR0Ojv8NNGD2rHPcaVSZQEwo93BAOaopg81TppIZ/hzYLvwuA== X-Received: by 2002:a17:903:46d0:b0:23f:f68b:fa1d with SMTP id d9443c01a7336-2429f54c7f5mr1031525ad.39.1754418599771; Tue, 05 Aug 2025 11:29:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGmskwv7ucfHcD9Bo53WfTIy9ye3ePe9ARZjsOPHwZZr9nYynqDd2AJvZR8+y2KJUmYfKfHrw== X-Received: by 2002:a17:903:46d0:b0:23f:f68b:fa1d with SMTP id d9443c01a7336-2429f54c7f5mr1031025ad.39.1754418599363; Tue, 05 Aug 2025 11:29:59 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:21 +0530 Subject: [PATCH v9 14/27] migration: push Error **errp into ram_postcopy_incoming_init() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-14-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4760; i=armenon@redhat.com; h=from:subject:message-id; bh=MzjSu54ML/fqUNonwJBaq4M6GvHNc/X2vZQI8KXVMyw=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5llLxs2Bdxis/2r3PEz0GDtu7ubP7+65xxXsvdLn JOne8/XjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABN5t5yR4d8N6bXXrflt3m6W V9nVvFzcuY9xl7ezYlR+7LRFZyfURzMydH7wlf0saz8tTVtSY87FT4518/wVVeOZiuRfnj/4IPE bPwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418891382116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that ram_postcopy_incoming_init() must report an error in errp, in case of failure. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/postcopy-ram.c | 9 ++++++--- migration/postcopy-ram.h | 2 +- migration/ram.c | 4 ++-- migration/ram.h | 2 +- migration/savevm.c | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 45af9a361e8eacaad0fb217a5da2c5004416c1da..05617e5fbcad62226a54fe17d9f= 7d9a316baf1e4 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -681,6 +681,7 @@ out: */ static int init_range(RAMBlock *rb, void *opaque) { + Error **errp =3D opaque; const char *block_name =3D qemu_ram_get_idstr(rb); void *host_addr =3D qemu_ram_get_host_addr(rb); ram_addr_t offset =3D qemu_ram_get_offset(rb); @@ -701,6 +702,8 @@ static int init_range(RAMBlock *rb, void *opaque) * (Precopy will just overwrite this data, so doesn't need the discard) */ if (ram_discard_range(block_name, 0, length)) { + error_setg(errp, "failed to discard RAM block %s len=3D%zu", + block_name, length); return -1; } =20 @@ -749,9 +752,9 @@ static int cleanup_range(RAMBlock *rb, void *opaque) * postcopy later; must be called prior to any precopy. * called from arch_init's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { - if (foreach_not_ignored_block(init_range, NULL)) { + if (foreach_not_ignored_block(init_range, errp)) { return -1; } =20 @@ -1703,7 +1706,7 @@ bool postcopy_ram_supported_by_host(MigrationIncoming= State *mis, Error **errp) return false; } =20 -int postcopy_ram_incoming_init(MigrationIncomingState *mis) +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp) { error_report("postcopy_ram_incoming_init: No OS support"); return -1; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 3852141d7e37ab18bada4b46c137fef0969d0070..ca19433b246893fa5105bcebffb= 442c58a9a4f48 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -30,7 +30,7 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *m= is); * postcopy later; must be called prior to any precopy. * called from ram.c's similarly named ram_postcopy_incoming_init */ -int postcopy_ram_incoming_init(MigrationIncomingState *mis); +int postcopy_ram_incoming_init(MigrationIncomingState *mis, Error **errp); =20 /* * At the end of a migration where postcopy_ram_incoming_init was called. diff --git a/migration/ram.c b/migration/ram.c index 7208bc114fb5c366740db380ee6956a91b3871a0..6a0dcc04f436524a37672c41c38= f201f06773374 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3716,9 +3716,9 @@ static int ram_load_cleanup(void *opaque) * postcopy-ram. postcopy-ram's similarly names * postcopy_ram_incoming_init does the work. */ -int ram_postcopy_incoming_init(MigrationIncomingState *mis) +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp) { - return postcopy_ram_incoming_init(mis); + return postcopy_ram_incoming_init(mis, errp); } =20 /** diff --git a/migration/ram.h b/migration/ram.h index 921c39a2c5c45bc2344be80854c46e4c10c09aeb..275709a99187f9429ccb4111e05= 281ec268ba0db 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -86,7 +86,7 @@ void ram_postcopy_migrated_memory_release(MigrationState = *ms); void ram_postcopy_send_discard_bitmap(MigrationState *ms); /* For incoming postcopy discard */ int ram_discard_range(const char *block_name, uint64_t start, size_t lengt= h); -int ram_postcopy_incoming_init(MigrationIncomingState *mis); +int ram_postcopy_incoming_init(MigrationIncomingState *mis, Error **errp); int ram_load_postcopy(QEMUFile *f, int channel); =20 void ram_handle_zero(void *host, uint64_t size); diff --git a/migration/savevm.c b/migration/savevm.c index 3517609ac661af618cf4d97e7f8fa1ef2b64bd4d..bed03ad69008ef742f595f36889= 6866d13713d16 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1989,7 +1989,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, return -1; } =20 - if (ram_postcopy_incoming_init(mis)) { + if (ram_postcopy_incoming_init(mis, NULL) < 0) { return -1; } =20 --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418920; cv=none; d=zohomail.com; s=zohoarc; b=Gdfx067EVxeLfU2awZ7wqOfS5TMuyluOv9fPYFXpTKQdVmT63EbK0IbBrBpvFHw1nI1tGAa2nrgFJlnWNDYKpIR70kwKyPTI+bzFBMRWfNuIPFYhdVDLC03sGkfbkL17bLJjm8HdDfL0EXEvDRMp9S/w+JlTlomG2Nh2htKyLys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418920; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9xwc2FwWO2Qq0lCvlkRmEK9CuJ0XRl1/MHwMUkwTgQU=; b=jdm2xBF8NFsVaqq42ntFeF7Rtg1QeY6LRLUyOhg+SFy1PA5qoKSNFuAxToUsNXcEWMH2FvIX+tXYDZ4K/XXyoYurn+hQg5FELshvcvvDGsOSylrR1nXqJnb3nzA5hl+UmPpyT7NkU+QLOdVtaMSbHqKt3jqsK+Nc6dTjJd+6Noo= 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= (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 1754418920892966.675761801087; Tue, 5 Aug 2025 11:35:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMUn-00032S-8d; Tue, 05 Aug 2025 14:34:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQS-0000WD-RZ for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQO-0004UF-Lk for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:15 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-624-Mmg29AbFOoiSF_7vFDpzRw-1; Tue, 05 Aug 2025 14:30:10 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23824a9bc29so82748385ad.3 for ; Tue, 05 Aug 2025 11:30:09 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.29.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418611; 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=9xwc2FwWO2Qq0lCvlkRmEK9CuJ0XRl1/MHwMUkwTgQU=; b=GUl3NL6hTLqamUvhpQFnCJ0z/JdfQXSP5K8YXbUvpIpAIhSYpD6eQXJMvQ14Kwuc6Q4iCO 2Be1Vj6wX+4EJFdsWlomVT2FEmPhQJKmUXdBZAC4aXk0jLzxRRJIeMs4Fpq4Kt5rl9B0qW wjvI9OH4cXjD/PTHSasVbI+gJTM4NoY= X-MC-Unique: Mmg29AbFOoiSF_7vFDpzRw-1 X-Mimecast-MFC-AGG-ID: Mmg29AbFOoiSF_7vFDpzRw_1754418609 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418609; x=1755023409; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9xwc2FwWO2Qq0lCvlkRmEK9CuJ0XRl1/MHwMUkwTgQU=; b=q7lqD8z1sOlRgwJl/31/XQthc95pUNMcZb37SXBwtLfnc5fBy9xi2MLYjQ34XDkLDW dzvIZh2KdkKzfDDcvrrOr16CSZ/gE5tTDO6RIy6XaZqbe2j/lACQv16ZjWyTmans6AsX RFKoMAmKJIKUAcgS+2pgAhRQNd/nUGaBVmLm8L8+71Vr+Gat9phw+RctXFF4OC6sMKfA WTa1B/4AhbJHJKk+GZf9xp1gM017BBkcfLLehEcMrExOHGLUMSRUkm0q62sEAVK0cmP8 mBZLs7VmFp29/C/LMBUdPOWdg4R07wSjGZ0ZWjBa6jPxlqJ5g4r7xQvFEpN48eSqLqpV 5rmw== X-Gm-Message-State: AOJu0Yz0sjfD0AeN7jfFLKb7+UQMEZNtx3bGyq7gKCh1/PHVOw/nuOwQ Ta4FSTi+/DKofJvVVqmCqSy1sC8pbKb1W6/QbrYGi5pDFzUqfLCqSJ9r91SIO1Qe3XJpLeAPrjE nXrMUYesfCNt+5hYCDC+pWy3mnUpSg1l7VbTNqb+6M0MMz7wqi033mgcI X-Gm-Gg: ASbGncv7k/ir8dRJ3BuydzXGv4kNqh4qxG6q2yFqNULU1YhvS1u9X9ncY7DczMEJln4 cZSjkyzEqQa+/jvC3GRC1+Vj4k1UWbMjJZaSTJhyp8Vn9fpyHXc9h0t6wCRDfZ+8GvXe0TKJW/3 S0KtdMbevp6TCXeQbRUvcdZPxyUJ03r/WevCPsacVYpB/Hg7EfW1wAJUvDSga/bTyK/vuiSfjxj CelY/ntrCVRuIAxoQwP/yrpv/w45DEQNNvgHwz59hx66PQyDFDhee9VE6gmG4huhKgaH4xR4JfT PV5NqVvzNAKYtUPZuoXuHhxLULLFI9MgbJcNZzCw94dchGKcGA== X-Received: by 2002:a17:902:cf4a:b0:240:35c4:cde0 with SMTP id d9443c01a7336-2429f52c6fcmr1116695ad.36.1754418608837; Tue, 05 Aug 2025 11:30:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFpbkPDUEt7oXWenX1XZcwuXcOxtS2T7Q/kc1XbJbZUDzqCuaQA8yE7rFaTxse+cckVO8qB5Q== X-Received: by 2002:a17:902:cf4a:b0:240:35c4:cde0 with SMTP id d9443c01a7336-2429f52c6fcmr1116185ad.36.1754418608439; Tue, 05 Aug 2025 11:30:08 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:22 +0530 Subject: [PATCH v9 15/27] migration: push Error **errp into loadvm_postcopy_handle_advise() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-15-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4792; i=armenon@redhat.com; h=from:subject:message-id; bh=HdEfUVsSmhp/9GMRET+AwaK+qTt4/yU5FJwZk3ggYJI=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5nz07vz3b1rzJg+C+8pdJ24Vfkx/5++D7svah1iD t8a/di/o5SFQYyLQVZMkaXha4BsU0BhRKTty+swc1iZQIYwcHEKwEQ8kxn+B70ptJiX8Vpwqu2v Pbc1lJecufI56e60tiNeX63nrhVeU87w35P/mt6jZt63wgcuWYm7TH5vsfWB4v0F/KsMq8zsE1b /YQMA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418922671124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_advise() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index bed03ad69008ef742f595f368896866d13713d16..09b9da6c58dda6e062a9a22bafd= 3487d38295f22 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1912,39 +1912,39 @@ enum LoadVMExitCodes { * quickly. */ static int loadvm_postcopy_handle_advise(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_ADVISE); uint64_t remote_pagesize_summary, local_pagesize_summary, remote_tps; size_t page_size =3D qemu_target_page_size(); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_advise(); if (ps !=3D POSTCOPY_INCOMING_NONE) { - error_report("CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)", p= s); + error_setg(errp, "CMD_POSTCOPY_ADVISE in wrong postcopy state (%d)= ", + ps); return -1; } =20 switch (len) { case 0: if (migrate_postcopy_ram()) { - error_report("RAM postcopy is enabled but have 0 byte advise"); + error_setg(errp, "RAM postcopy is enabled but have 0 byte advi= se"); return -EINVAL; } return 0; case 8 + 8: if (!migrate_postcopy_ram()) { - error_report("RAM postcopy is disabled but have 16 byte advise= "); + error_setg(errp, + "RAM postcopy is disabled but have 16 byte advise"); return -EINVAL; } break; default: - error_report("CMD_POSTCOPY_ADVISE invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_ADVISE invalid length (%d)", len); return -EINVAL; } =20 - if (!postcopy_ram_supported_by_host(mis, &local_err)) { - error_report_err(local_err); + if (!postcopy_ram_supported_by_host(mis, errp)) { postcopy_state_set(POSTCOPY_INCOMING_NONE); return -1; } @@ -1967,9 +1967,10 @@ static int loadvm_postcopy_handle_advise(MigrationIn= comingState *mis, * also fails when passed to an older qemu that doesn't * do huge pages. */ - error_report("Postcopy needs matching RAM page sizes (s=3D%" PRIx64 - " d=3D%" PRIx= 64 ")", - remote_pagesize_summary, local_pagesize_summary); + error_setg(errp, + "Postcopy needs matching RAM page sizes " + "(s=3D%" PRIx64 " d=3D%" PRIx64 ")", + remote_pagesize_summary, local_pagesize_summary); return -1; } =20 @@ -1979,17 +1980,18 @@ static int loadvm_postcopy_handle_advise(MigrationI= ncomingState *mis, * Again, some differences could be dealt with, but for now keep it * simple. */ - error_report("Postcopy needs matching target page sizes (s=3D%d d= =3D%zd)", - (int)remote_tps, page_size); + error_setg(errp, + "Postcopy needs matching target page sizes (s=3D%d d=3D= %zd)", + (int)remote_tps, page_size); return -1; } =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_ADVISE, errp)) { return -1; } =20 - if (ram_postcopy_incoming_init(mis, NULL) < 0) { + if (ram_postcopy_incoming_init(mis, errp) < 0) { + error_prepend(errp, "Postcopy RAM incoming init failed: "); return -1; } =20 @@ -2617,11 +2619,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_cmd_packaged(mis, errp); =20 case MIG_CMD_POSTCOPY_ADVISE: - ret =3D loadvm_postcopy_handle_advise(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: ret =3D loadvm_postcopy_handle_listen(mis); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418921; cv=none; d=zohomail.com; s=zohoarc; b=US/mQipGRJ2D8DkDyGmmj2GuKCeG8WWpFgqrvVFseomb3cu8G062/TVv6eYIfcqBkiggTlwgwJgQr2IG7CkwFoR1XwO+WfpiFRzLv9EoUXDiJdr4h+XxeQkQuUT0/75NukIIOd9NK9z2NMtGK3Cz+SNm98F//S3EwpS/hr8IacY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418921; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BYCferYL09XuJja4blhgOJzGeanLOkm2Lm1whjttfNc=; b=NBo8t+oL9Bg5U813dDyetb9XATIm4Z92vdCiEA8HkkaQjc5o0SQNm4oUXW5aN4q4R7uwtHjSJG7ehp+ZuXYZW1LXIL0pfEB1pjTpgJoFdZfeB3wj812ZFMiaqNbjM2T52xab6+w2GQEoABSvo1S42myN/NuLaJ4EgxWWgtQU8ro= 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= (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 1754418921149444.7325366260462; Tue, 5 Aug 2025 11:35:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMUt-0003Qz-CF; Tue, 05 Aug 2025 14:34:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQZ-0000Y5-Kl for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQX-0004Vh-Mf for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:23 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-217-OAlkYuwmNtGa2QGNIPubeg-1; Tue, 05 Aug 2025 14:30:20 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-23ff7d61fb7so1069465ad.1 for ; Tue, 05 Aug 2025 11:30:19 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418621; 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=BYCferYL09XuJja4blhgOJzGeanLOkm2Lm1whjttfNc=; b=CENNEj9KLXTKPjwMdbT97oTUgen/gtR2Ady47u3xo2CwtYQmF0h5kJkNeB8chldXqZMLsU LAeTRcsh5b2cxmScmTogcl0xf5Xehxv2BI5TpGc8MQMt36imQbLX7ZJxritPkdqSBVIosu sP+eSoh+eLGiqT6ns0FsGbm5sULdw4w= X-MC-Unique: OAlkYuwmNtGa2QGNIPubeg-1 X-Mimecast-MFC-AGG-ID: OAlkYuwmNtGa2QGNIPubeg_1754418619 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418619; x=1755023419; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BYCferYL09XuJja4blhgOJzGeanLOkm2Lm1whjttfNc=; b=Gt7073sz3hDfPo7cNL7nGFduWEET0B6vE8IH1ro+nEokquTBj9JVbe5tH69aUPiQzp Yv6fnoKFg07M8OJjiX1/4ygIY+nYxfpWSfzzNzj5DaLDoH7wiOsvGKdNpVEthZHBiTzM +j6z2d5vnI1LYKeJBYt0pvvEfXq+sMQhIUSlz3n+s90TGUHo16pNQGMliHheu/gDWURF oIB6s5cHZdxZpjSFxrt4374agTLwJXJG1Xc7TInUn6oZzvxRIRRdvuuB61XKrC4CWFEY SpCWshdiBgGt3COO4MKZOIwxRqZrnD6hCgfNOquEaRLBYU52BQD2YfA7IfqM4jBcjaQs o2rw== X-Gm-Message-State: AOJu0YxoOPYxw3yeAl0dnycvj20hk3eKHJfLYIXjysfzbuS5Od5o6ekD Fk7Nac8sSeMNSoV2z88huBhsfDPKy3BQDp3C+SkxMQjf75WIf1Sa9HwJ1GByJP95oKdYtd3nHb5 CcsSVHEJc5FHwfHEnLeYBX+3sMNSuAoUL2AcPGjZh5B8gvWLSY3bzN8Hp X-Gm-Gg: ASbGncvtRxnLzOt7fMo3SCBGftlfLnwDtKSUQ/08PASd7YwTsIZ7C+APWsS8ZynbOhT /J66wnZSIBUYwlZ1K8M2RKQeQakuAar+k4MmigvySvuovz1WpPxKHMpB59OO4cEGTzoxjf/MUnp DC8xyXSRvdwhNt21E3jUpwEOcb4bo9dBJQb9oBThPbyvnvcj1iysmLoPPXlZNrZy5WNxcMxEQ5l 7I9TSPX12qH9EpUTtjS76ScVU/rq+yR2ycM/STVSRL1aiaWppYB7dnXkg9vicTS7XVmuuY8Kujr 7k6NF+KbggDa2r8bhaJhrOUxC4Fyp5U9iGt/EcQkbx4qtwg0TA== X-Received: by 2002:a17:902:dac8:b0:234:325:500b with SMTP id d9443c01a7336-24288d80885mr68800845ad.22.1754418618713; Tue, 05 Aug 2025 11:30:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFhNndj+wfBMyAGjFCSv3umrVj9yWadHo51Xgpct0Trd8bzyfBfoa4jAvB5Au4M6MnBklTy4w== X-Received: by 2002:a17:902:dac8:b0:234:325:500b with SMTP id d9443c01a7336-24288d80885mr68800125ad.22.1754418618232; Tue, 05 Aug 2025 11:30:18 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:23 +0530 Subject: [PATCH v9 16/27] migration: push Error **errp into loadvm_postcopy_handle_listen() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-16-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2705; i=armenon@redhat.com; h=from:subject:message-id; bh=5oWKBYenn0vD7FEJiTk64CwReR83CUuCjtL+Yg9mJQo=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5ngjENviqsW13D1njNLeaCyQrPV5JlSgt+GvZqHT mRJzW3rKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJFn3xkZrs9f0l33UrNn5bGt C3m/Sb2welipzfBeoTTtjlLezLWH+BkZbka9feekmBcU43Za+sCVQ7KJNSutHlUq/1pl/uqkgyI LMwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418921630116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_listen() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 09b9da6c58dda6e062a9a22bafd3487d38295f22..be77da66d813392625c6d701b24= d1bcffe26cdce 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2181,15 +2181,16 @@ static void *postcopy_ram_listen_thread(void *opaqu= e) } =20 /* After this message we must be able to immediately receive postcopy data= */ -static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_listen(MigrationIncomingState *mis, + Error **errp) { PostcopyState ps =3D postcopy_state_set(POSTCOPY_INCOMING_LISTENING); - Error *local_err =3D NULL; =20 trace_loadvm_postcopy_handle_listen("enter"); =20 if (ps !=3D POSTCOPY_INCOMING_ADVISE && ps !=3D POSTCOPY_INCOMING_DISC= ARD) { - error_report("CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", p= s); + error_setg(errp, + "CMD_POSTCOPY_LISTEN in wrong postcopy state (%d)", ps); return -1; } if (ps =3D=3D POSTCOPY_INCOMING_ADVISE) { @@ -2212,14 +2213,14 @@ static int loadvm_postcopy_handle_listen(MigrationI= ncomingState *mis) if (migrate_postcopy_ram()) { if (postcopy_ram_incoming_setup(mis)) { postcopy_ram_incoming_cleanup(mis); + error_setg(errp, "Failed to setup incoming postcopy RAM blocks= "); return -1; } } =20 trace_loadvm_postcopy_handle_listen("after uffd"); =20 - if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, &local_err)) { - error_report_err(local_err); + if (postcopy_notify(POSTCOPY_NOTIFY_INBOUND_LISTEN, errp)) { return -1; } =20 @@ -2622,11 +2623,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_advise(mis, len, errp); =20 case MIG_CMD_POSTCOPY_LISTEN: - ret =3D loadvm_postcopy_handle_listen(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: ret =3D loadvm_postcopy_handle_run(mis); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419073; cv=none; d=zohomail.com; s=zohoarc; b=YQZ/oa11PPpijjbJvM3VbzDMpYItCyPuYi/oiyhSPMEghRz5t63ypa+78bY6wfjyiKqM0hzpwF0wGXIIGZ5thgoEA9pTLSHJ6VYHgwJ0vNkzhZ8BiFPaG+QsPWe+sPvJzMHG8pe4PiiaRNq74vR7BUL42Uv51YX/05HgJOZFS0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419073; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=w61Gnp0t2sZwEjjwtLcy7ZKQ7sSrZonMXuzBo7mvhs8=; b=fRKlV9yJbqb/ettH2hq5pZzDV0OL7U4s5W9AyATmpqihxVObc7ZTuqkRBKlZgxoF2YIrPMfdNG+FfDKSdiNXL1TaQrDaZERRe9OfifgXzlrO+g1GYty7773LTk/SqJ1koMFkqKpKHZCmGWZOLP9gLbQ1JVL8iKkYJaU98CngcXk= 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= (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 1754419073891670.6050078330643; Tue, 5 Aug 2025 11:37:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWU-0008C7-Tn; Tue, 05 Aug 2025 14:36:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMVV-0002SN-Ht for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:35:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQh-0004X4-IP for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:33 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-14-ysuS_RArOgGjv59lvlzB2w-1; Tue, 05 Aug 2025 14:30:29 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-240b9c0bddcso52315705ad.2 for ; Tue, 05 Aug 2025 11:30:29 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418630; 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=w61Gnp0t2sZwEjjwtLcy7ZKQ7sSrZonMXuzBo7mvhs8=; b=eZ6Am3O4nnVp6KTwBRrTnjXU/VWSJ9QMgpTckYIqGElHptQ/DCupIQmff7GceQYQ9VN9dd 3UlIIXqashQEDfZIPf8pwhP/fRhiLI+bei1OeOScgwjVGwRHLA3I2d/fJ/GUORKvQF1cO6 8tasjNJsY0rqt7JXIAqT8F6qBMYQ820= X-MC-Unique: ysuS_RArOgGjv59lvlzB2w-1 X-Mimecast-MFC-AGG-ID: ysuS_RArOgGjv59lvlzB2w_1754418629 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418628; x=1755023428; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w61Gnp0t2sZwEjjwtLcy7ZKQ7sSrZonMXuzBo7mvhs8=; b=I1HfIgo/NkigGbpnDjCKMr6IPXLhm8vR/zFJYtEh3+1Q6jogGCySqAeFErgNbfRMx3 TQqGiP1YxRtVes7VqAdrkpS7pECa0s3Lx24KPcNHGt/pViDfNe0MT1SPlDSOi5dswE6F eVhQjnl5k2T8WEx3iKCaGzpcwlXnzHEFm0zN8dzmzhi4nRBNMuZA0kFwDrDYpilO60W1 rS8Y81sRbdpC9X3AkWkHTUqEOwhIUPu1d6oYxoLojSvWCXWIaHSwJfKD8CgmlDbPvhdZ 7rcc7gd8mo0pUwC+u+TWqI0ISbIq6mLh9oRrwikSaZtvdQozZiL4HfPFG6xeif2NeplL cvwA== X-Gm-Message-State: AOJu0YwFaZaliKooU6cVGDZiC51Rxg6iNgjul3sXELFQrSMxxl+EZPUZ Q7phU8JVUZ3w3M94LC8mBUsloGCr92P2bVMdotTB/iRoAx1tdbCYV+AABnsjbFsOtRr5R4yERgn d7f65WZVMoLHXJUA6zt9DEECMOcPIucAKdvtZ7FKEuNQkFBMbaZsOHtWK X-Gm-Gg: ASbGncvFBy+NCpCT1e0O2UvTbl6v900MOShzdjDmkWwYQcOZ3d/p7zgXTz6+reSgo/v qgdKLyqlGr6SXIWbBaIF2OjLLq9r0YwHCBgbZED60DWyRjjH5K/CtB+BKh2a0Ydf4B5A/H1B2qL lvRTI0oQgiaxi8DOp3sOz8AgLAWu2jqW/IMRhdUC0WfNJkj/UgEz/N2pRDl+RtOiH+qPeQNitZx eImwXC/1xOV3OEnuRB6ufyHvwrNaWychn+cLyxeNJouCJfjPR56+X/KLA/rGxj1CGqFIXK9kyH1 1ah589R5CZ4QqmIRNpi2iz0hnpAuYm/8qe405EvZzD+nZBa5Ow== X-Received: by 2002:a17:903:4b47:b0:240:38ee:9434 with SMTP id d9443c01a7336-2429f6579d1mr527385ad.47.1754418628521; Tue, 05 Aug 2025 11:30:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHYS2luwgN+pQ3awnWNgzPwnCqzhpWZhVipt8DdrIc+fKvwE36gTQreTacXVhKrw5PZEvtBbA== X-Received: by 2002:a17:903:4b47:b0:240:38ee:9434 with SMTP id d9443c01a7336-2429f6579d1mr526875ad.47.1754418628118; Tue, 05 Aug 2025 11:30:28 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:24 +0530 Subject: [PATCH v9 17/27] migration: push Error **errp into loadvm_postcopy_handle_run() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-17-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1842; i=armenon@redhat.com; h=from:subject:message-id; bh=woHIZhT9LbzEegfZSEr5X6AfcsGWBUDyPBaEHeXXZlE=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5mXZ3ueiEkeVdn5xP+e58u555uL31ec3ikbbh+V3 aSQtPd+RykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgInsDGdk2JnpuvHf0jPfj0s+ 7F6yJEZFz7aXN+uzZtSSki2FR+X1+BkZWuYsFdBJEFKc8Pdf67tjS/0vqF6d177ti5ARe7nbNXF bPgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419075536116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_run() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index be77da66d813392625c6d701b24d1bcffe26cdce..eb90873a750ded354b3db31cba4= 0b44d1be79864 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2273,13 +2273,13 @@ static void loadvm_postcopy_handle_run_bh(void *opa= que) } =20 /* After all discards we can start running and asking for pages */ -static int loadvm_postcopy_handle_run(MigrationIncomingState *mis) +static int loadvm_postcopy_handle_run(MigrationIncomingState *mis, Error *= *errp) { PostcopyState ps =3D postcopy_state_get(); =20 trace_loadvm_postcopy_handle_run(); if (ps !=3D POSTCOPY_INCOMING_LISTENING) { - error_report("CMD_POSTCOPY_RUN in wrong postcopy state (%d)", ps); + error_setg(errp, "CMD_POSTCOPY_RUN in wrong postcopy state (%d)", = ps); return -1; } =20 @@ -2626,11 +2626,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_listen(mis, errp); =20 case MIG_CMD_POSTCOPY_RUN: - ret =3D loadvm_postcopy_handle_run(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: ret =3D loadvm_postcopy_ram_handle_discard(mis, len); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419045; cv=none; d=zohomail.com; s=zohoarc; b=ALz4Jl1mQCeWQ2busdIHRD4Z1Y6gvRXOxuJbQ7D7+c9FLoE2Eh1jif6mVx/pDAPKgNCBoBgy/jgoe7egMdTtBV0O9L0yo1NwJc7viPXBWuPAFGhLYgd1FizMpYpobKz+3WalxjUaZ0EZ8kwEDQiFZilJYRH1Cv1SaQEBN4LGPUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419045; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/D+LRx8DgN32RC9NWwi8CDlFXsyOxe/yuFJHVT2GAeQ=; b=AbuRwoYAe6TyrPApqAS4y09anMKTtTOYrx+GiUdRf9SaGiw6/SviUUlG+QLtu9HJaFEthJ4Vob6fy4p63dcbiWkkXNEwLcVgzmlYWgD3/peIroppZBP8/V6wpgUrrotQmcdMGLoskSw5tcv4lLyqqW5JXyTR+tKe26f7A2zmDrg= 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= (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 1754419045063518.7918995172182; Tue, 5 Aug 2025 11:37:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWV-0008H8-Qr; Tue, 05 Aug 2025 14:36:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMVO-0002SN-R4 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:35:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQp-0004YM-Kf for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:42 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-570-egoT8SNFNcGgBWLe9-kNEw-1; Tue, 05 Aug 2025 14:30:38 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2405fdb7c15so83992215ad.0 for ; Tue, 05 Aug 2025 11:30:37 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418639; 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=/D+LRx8DgN32RC9NWwi8CDlFXsyOxe/yuFJHVT2GAeQ=; b=fXlqzZLTk2q4HbLeQDUhm9PyCF8HdsSocmSlCo8rY3LL45yFhBw6wqNRXIkp8SuiIMxLmx vRPCf8Xc6vHRhPjT/CQ/IXMkgZtqav+d6nMvCBQzThpsXr7+pxhx7VvrM0uM7cT0D5+4jP 57ONPrzZSaT9sk7ntknTjcvFsd3GAfY= X-MC-Unique: egoT8SNFNcGgBWLe9-kNEw-1 X-Mimecast-MFC-AGG-ID: egoT8SNFNcGgBWLe9-kNEw_1754418637 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418637; x=1755023437; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/D+LRx8DgN32RC9NWwi8CDlFXsyOxe/yuFJHVT2GAeQ=; b=a4zSpDh1hd9IyydPGztAVti/h/9kqq+Ney231l7vuL8Q9bmwmixbj3aOp92mwnoBaz gu/kzSYF2BobBwVKb6Q36hR/KAYcc75g+HclZ0EDF2XRYuhW9XBDFu+s9Eq4u68C4H8p +ZdNFRyEu+9O6KTCHnW5P8MOOqeosw3j4ElhPlJeK0nHYF7q6Lm2Kh3ST7FT5/SH5OpI o1t2W2+5rQzVf0nsCrmPXG2NZw+GWYf6ODVDATXln3gI+UBbxFHScQoKR9tLOlb/XOUf JNXTuATpvSkgxcV2l+P3aAgq95Bq7SD3Yx++zzxkkZuq6MJvfmLkuxJIkeRmu4JNtzWt hRag== X-Gm-Message-State: AOJu0YwAySD2rWm329bsA35dsdzKHr+mbWPFVbUYXHISd5qYjlNm0Lql HqfnAaWQfbQsIr0cHmvX7erkRt5cnT7VVr19Jii/aY0r1J42ntTXynkWIkr6TJPFeZ3OcMoAp0F hiDcnLt1eJ+9O6kRgtI2/seqIV/JxTxvBoXb/iav+tXpHNv48qZsGpIPU X-Gm-Gg: ASbGncsvgDfwjxiQaDRgN5OARNYdn/Kl0BnGg/9FNAukyXozNfmCn1gEh28riyYkhzz uwE1PvcDOolIqzA844Fikyt1L158ecRIdf/l7ba49Jm8LqmhjRfv7uRAT+wVD00hI0gZrIb4Tcp PsRsrjIQ1gfDL3mBjXG179xWTBaiU0IEhYopMNnO+M/vWLecRraQ0i5ljOMvRokEJX48dJ7d6kj bCMEfigJfAnWQ8G6Z/NENr/flYMX3yjRsZ47p6gp8UhBvN5X5aXwBj2rhAIa1kEMaNqK4Wq6YJh l3tTI8zbelj06hs+FR7XXUOdE3xAVbXfWDzSruqRHvCJh4bWFg== X-Received: by 2002:a17:903:ad0:b0:240:8ec:fe2 with SMTP id d9443c01a7336-2429f2f5609mr1324175ad.4.1754418636626; Tue, 05 Aug 2025 11:30:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGlf/R3oR3aVhuy0kmkBQvWkFIRiBl7En0K67zgezGfHJOPekhnauwULPasv0DY1y48n9SZqQ== X-Received: by 2002:a17:903:ad0:b0:240:8ec:fe2 with SMTP id d9443c01a7336-2429f2f5609mr1323685ad.4.1754418636257; Tue, 05 Aug 2025 11:30:36 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:25 +0530 Subject: [PATCH v9 18/27] migration: push Error **errp into loadvm_postcopy_ram_handle_discard() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-18-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4220; i=armenon@redhat.com; h=from:subject:message-id; bh=9DYN67BBT1IJrMGRtQvdCpvnr09HwM/uq78YW1KOy+0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX5mdr/5s8MzOeBPwIsJiwR/VM+KClbWtKXGVH5dcX hE2919LRykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIlwSDMyTF9msrvmVq78wWXR 6o2+Vcl/7K6tUnZbV5PQ9c/VpHR5MyPD4eQf87bOFZz99/OMM149jTd+W/ezRz/XZf2uJco1a9l zZgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419045956124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_ram_handle_discard() must report an error in errp, in case of failure. Signed-off-by: Arun Menon --- migration/savevm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index eb90873a750ded354b3db31cba40b44d1be79864..3abe4193e02aae9c813ff07fb38= 8a7ee470c8a6a 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2004,7 +2004,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis, * There can be 0..many of these messages, each encoding multiple pages. */ static int loadvm_postcopy_ram_handle_discard(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { int tmp; char ramid[256]; @@ -2017,6 +2017,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, /* 1st discard */ tmp =3D postcopy_ram_prepare_discard(mis); if (tmp) { + error_setg(errp, "Failed to prepare for RAM discard: %d", tmp); return tmp; } break; @@ -2026,8 +2027,9 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, break; =20 default: - error_report("CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d= )", - ps); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD in wrong postcopy state (%d)", + ps); return -1; } /* We're expecting a @@ -2036,29 +2038,30 @@ static int loadvm_postcopy_ram_handle_discard(Migra= tionIncomingState *mis, * then at least 1 16 byte chunk */ if (len < (1 + 1 + 1 + 1 + 2 * 8)) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } =20 tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D postcopy_ram_discard_version) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid version (%d)", = tmp); return -1; } =20 if (!qemu_get_counted_string(mis->from_src_file, ramid)) { - error_report("CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"= ); + error_setg(errp, + "CMD_POSTCOPY_RAM_DISCARD Failed to read RAMBlock ID"); return -1; } tmp =3D qemu_get_byte(mis->from_src_file); if (tmp !=3D 0) { - error_report("CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD missing nil (%d)", tmp); return -1; } =20 len -=3D 3 + strlen(ramid); if (len % 16) { - error_report("CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", len); + error_setg(errp, "CMD_POSTCOPY_RAM_DISCARD invalid length (%d)", l= en); return -1; } trace_loadvm_postcopy_ram_handle_discard_header(ramid, len); @@ -2070,6 +2073,7 @@ static int loadvm_postcopy_ram_handle_discard(Migrati= onIncomingState *mis, len -=3D 16; int ret =3D ram_discard_range(ramid, start_addr, block_length); if (ret) { + error_setg(errp, "Failed to discard RAM range %s: %d", ramid, = ret); return ret; } } @@ -2629,11 +2633,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_postcopy_handle_run(mis, errp); =20 case MIG_CMD_POSTCOPY_RAM_DISCARD: - ret =3D loadvm_postcopy_ram_handle_discard(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_ram_handle_discard(mis, len, errp); =20 case MIG_CMD_POSTCOPY_RESUME: loadvm_postcopy_handle_resume(mis); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419019; cv=none; d=zohomail.com; s=zohoarc; b=nV5YmqMsDJcZjEQ4BnQaZqG7eDK3ZnSzmMna+piB1g/qo5yGicjaJbPi9w3mDA8pjk57Bs2NLLBQhfvQ0efjFcsKI1GGQCpHCW/RlRuyU4QcRPS/dRdmSuCgwFJcRj0LQ9je2IlFAx/kKtPETX/aOishK5gSemQrjAD6CrmRQDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419019; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=unzr9BEH+PBOBEueJFcp5ST9RqE61zvJ2oDaENpfyiA=; b=buMUl65lTgvePosEas0WgVvSuA/u/rNHRHydyQSa2vHjBYLDLioFjnO7FkHyuRIrcu3pOHP5ucdmuvmbKHnuuU/kbJgFkvtRxDUB/wdZCxCehg80PA6GsYsvvvg90e6AS2pxk4kQlwNROUMcXMENO6XL01VII5YyRIaO1LXZtsU= 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= (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 1754419019346490.93645128917353; Tue, 5 Aug 2025 11:36:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWS-00081c-Vt; Tue, 05 Aug 2025 14:36:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMVL-0002SN-6p for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:35:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMQy-0004a8-8m for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:30:49 -0400 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-501-40dNWocPNM6bieyZKCIIXg-1; Tue, 05 Aug 2025 14:30:46 -0400 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b42249503c4so120182a12.0 for ; Tue, 05 Aug 2025 11:30:46 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418647; 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=unzr9BEH+PBOBEueJFcp5ST9RqE61zvJ2oDaENpfyiA=; b=DNX804iH2IztuiObUsi5u1kgbe0qlWTUfnqY740chY+RNe91KyC3TFqs3n9tUGuYsUlB6C oCqwl1gTuhYlXLaNhShsm+3fT8yFOIJ468gPwVhKSfeeeoOSfCi0aTnpe0qp/2UkJtNCNL tpQ99nb7GazAPOsyfkq8wXd8OfkAT5s= X-MC-Unique: 40dNWocPNM6bieyZKCIIXg-1 X-Mimecast-MFC-AGG-ID: 40dNWocPNM6bieyZKCIIXg_1754418646 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418645; x=1755023445; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=unzr9BEH+PBOBEueJFcp5ST9RqE61zvJ2oDaENpfyiA=; b=Bi1aj9GMMRl72JGP5t2aNUC6fkZINDxfRIVxTKuSCnTrUit2bxrurH/1NPjj4YAqjK HQBJAMZ6rhyrdePC5j8okdaXknNln+5lpdrQ6FhoD3VPMmw22vMzOUp52JvixEofcjTH PKjYVG1n51aTB9Hh7FLQ0SvMauvyEqEOhnYPzV42yMEVQxcrh7hLO2dfjlqa1U2AlE45 w+rSD1MHbcfvaABoxhfOegxck9WEnUMSahXSbss3KtHbM3e7sRVkDQak4Z+r68BXIL4Y 3PWd+pu0RssDoT+6wwH17Vcnz4fyrvFBDHgQhrmH6IgP+Z2/k7cVqWOg095l2DlM3w6i 3CNw== X-Gm-Message-State: AOJu0YwhSeAre4wYnqOvkBL3Kf9EZdkVjIjMk3TmSqlsjyThWZkjNkwA P7Rsy5iieAp9d9BXttwr+7XOU5f9x+16++UbNCp/zx9+1QfwSGqrd2+j2KDl9L+bwD/7vXs5+wr UUxEdsiongDJn9wUggQhAdUAL6ULTOvU80+1fZFUDCNAIS8uXgYS5aKAx X-Gm-Gg: ASbGncvh1eqaq4ZoQ0+CsDNPdgjS0yun9RaYIwdqoVL8YfZbicXKcni/5wahenbwrjN Bx9b3lQM5emc3qMuVj8WjmDKteiIZh4XNS3/WQfduwau1enH2nnuirbnIvkw2dC/mTQmFSUpSTd 1y4XrLtM+LFjS2QdhKvdTRmrOJzTax/KvM05J1E2u/R7sRdYA1PDitZ3e9Rt/4XxqOSxTyFX+oj uVW9XL7utNU4cVhPih7gUYeTh9qn9md8bk1NvZGCDcgYl1yQcX22pMnIELYjwgYwlky6WtoBMR0 b6BlhCqmVlBoTrZn2ldEF+jIfPnxpT80dI3LyKD4+CEhQo7dEQ== X-Received: by 2002:a17:903:1c8:b0:240:3cab:a57a with SMTP id d9443c01a7336-24288de3d19mr61783265ad.12.1754418645583; Tue, 05 Aug 2025 11:30:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG1QWqSt+kHqrcazog/ty+ylDlBd8/ZRKOzE/l5Nd5dxklkAHoJMKn6mZmi90jIHtlLg1oa5Q== X-Received: by 2002:a17:903:1c8:b0:240:3cab:a57a with SMTP id d9443c01a7336-24288de3d19mr61782325ad.12.1754418644659; Tue, 05 Aug 2025 11:30:44 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:26 +0530 Subject: [PATCH v9 19/27] migration: push Error **errp into loadvm_handle_recv_bitmap() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-19-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2614; i=armenon@redhat.com; h=from:subject:message-id; bh=+FcTJsfi5Ohk4wZicys8uXkAlUsFM3ystfG6IZbJVhs=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkXxmdtS+jmPLZeKUtGWzOP1nY+SPCePK9H/qFDy8oJ 0hWF2zrKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMBEfNYZ/ygYHZ3msOOT1qJBj kuvb/YWLd973/7pneffnCwVLF0+OncfIcCpn4cy4TZJn79XMOehRfv7I2arjngn5gqVvolZK2HV MYAUA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419020995116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_recv_bitmap() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3abe4193e02aae9c813ff07fb388a7ee470c8a6a..938adb20270adbf9546b0884d08= 77c25c3f0f816 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2480,32 +2480,35 @@ static int loadvm_handle_cmd_packaged(MigrationInco= mingState *mis, Error **errp) * len (1 byte) + ramblock_name (<255 bytes) */ static int loadvm_handle_recv_bitmap(MigrationIncomingState *mis, - uint16_t len) + uint16_t len, Error **errp) { QEMUFile *file =3D mis->from_src_file; RAMBlock *rb; char block_name[256]; size_t cnt; + int ret; =20 cnt =3D qemu_get_counted_string(file, block_name); if (!cnt) { - error_report("%s: failed to read block name", __func__); + error_setg(errp, "failed to read block name: %s", block_name); return -EINVAL; } =20 /* Validate before using the data */ - if (qemu_file_get_error(file)) { - return qemu_file_get_error(file); + ret =3D qemu_file_get_error(file); + if (ret < 0) { + error_setg(errp, "migration stream has error: %d", ret); + return ret; } =20 if (len !=3D cnt + 1) { - error_report("%s: invalid payload length (%d)", __func__, len); + error_setg(errp, "invalid payload length (%d)", len); return -EINVAL; } =20 rb =3D qemu_ram_block_by_name(block_name); if (!rb) { - error_report("%s: block '%s' not found", __func__, block_name); + error_setg(errp, "block '%s' not found", block_name); return -EINVAL; } =20 @@ -2640,11 +2643,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return 0; =20 case MIG_CMD_RECV_BITMAP: - ret =3D loadvm_handle_recv_bitmap(mis, len); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: ret =3D loadvm_process_enable_colo(mis); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419024; cv=none; d=zohomail.com; s=zohoarc; b=ctvO+XfVAbo60NdCJWGiWt4Pcc4A3gDk9JBQdfbZ9AzD2OsB/Q7YXfy5QTp7+XoRd3Be1zFTb+xu85rqd+I9DWRHUCXxDXjDxA/UhM2YTsvcqySo/II8L7DLq6HkdIctgVpqC4g0raxDHm+wdA/iPPLrVQLO2gO67xrkE6/AHgY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419024; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sLDCA+3nlUvyWOgTSOhD9LnMqaRWdX9vmvBFGNCzBWs=; b=mPR6GW7qjTKYkBzCTB98k1lyb/lMYe5hCPN7P2TOwD7ZJq4ijFEtIy6eDW/XTzMIOO6J1AcruOwh9Rgm28M5YezVcwk+8tEUiaOLaAOGw4UJCMxxbTlvLHH+Lz224KWCGmT7cw0xjfkv8RBP0D5JSSDX3eXv1bcRUzrrMZxleVk= 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= (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 1754419024308879.3767155656265; Tue, 5 Aug 2025 11:37:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWQ-0007eZ-5E; Tue, 05 Aug 2025 14:36:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMVI-0002SN-3p for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:35:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMR9-0004bM-Lx for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:01 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-440-AUJiIvgQMx21BxQUdOPYKw-1; Tue, 05 Aug 2025 14:30:55 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-240908dd108so1237015ad.0 for ; Tue, 05 Aug 2025 11:30:55 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:30:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418658; 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=sLDCA+3nlUvyWOgTSOhD9LnMqaRWdX9vmvBFGNCzBWs=; b=QLEIghNxv7/sd5nN7pHsVfSLN4FneojQiLjjzXn17gNTN2bcGRrbI0Dheq4RivOLH2An96 j4HXKpcwDha7cbhC0dssh4VwIMGpg9apUgkfydlHoVZGC5s5t9v5xsND0cfVDU1FtV43iU 6FgZigUgwObp1h8ieITBcwwU79J5Ao4= X-MC-Unique: AUJiIvgQMx21BxQUdOPYKw-1 X-Mimecast-MFC-AGG-ID: AUJiIvgQMx21BxQUdOPYKw_1754418654 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418654; x=1755023454; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sLDCA+3nlUvyWOgTSOhD9LnMqaRWdX9vmvBFGNCzBWs=; b=n7ERX1oqNYfPYPdWsqaVo3gH51sj2QAXuVt363n8HgWBFfv2DTCT8GT0r6k2bMF18+ utgLEnar3c1PHDSl0r4opejoHnlpnHh4AKSmueLIxKVJQx5nVeYQ43MnThKrOx3Kdy8m x0jUxKG8dyhg7qzvBC3rzFC7bufnnV1/HAYznYn5DLue5NkKCDRYTUKiOO72RAiEmMos a9tt6LeC5zcvEXVynxzmDIylqt+nB+UDd/fUm3qahLof8Azgd01kJXLXJp1T6YHkLeYJ BQAQcbxn7qXUhES8rfK6zkKfDPZv6LyDixeSikPziGCsx79ZsB9U+HeVJZggS9u0lVDK QX6Q== X-Gm-Message-State: AOJu0YyJ3sixklYuIt+9t8y4I5zEStCEtS/Dah8R+mw32HZVKe3qbPFd rPtXjKW2FUrBNBj7EdSqFeudic3sKwTxYL9DR4gJWdR89hr3ZgEeE7p+y7S74cjwwb8EjEVCQk0 SJTJtTHGgI+1Gn8ATiW8TWk967YlsYLuvSVswySeyjG4aqrxxX4tQSSgE X-Gm-Gg: ASbGncvWV4ekTD+o2xwKQFS31KeDKbj65dbHmV65p2AUNK+e3DvI6LYv3xRkymr59yJ dM8z1tznlnksEkgLLyi7vGTxBboC1DJ4L6Ii7La1ND7aOdk+FbTOqHKfNnINThVpwVoI0yopNW6 YCp2Vzj+5QsDpXNfafSN7UQIKmAUdUz9EPPWA+YwveHoEOL4Rkpe7aPwfcX3nIfZc2d9aYtqZ/v bhFCKNb6gqyA842n0tl/bSLUWgcCR+K1PqOVXA6jX2+AwKkVmUwvA+vFFIlen0NM9mu7Gef2t6x Nej5+Oe51/YTjJMuSYX0tYrMFAynq1RdO0xin5BSdLLjZUA41Q== X-Received: by 2002:a17:902:ea06:b0:234:595d:a58e with SMTP id d9443c01a7336-24288e2243amr66242035ad.25.1754418654413; Tue, 05 Aug 2025 11:30:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE7UNTyJJSLL7jsxNj/hU2M562kUako7itNcqiUXyYs9piY4yDADUbZa1DhIg+yxrZsLgtdzA== X-Received: by 2002:a17:902:ea06:b0:234:595d:a58e with SMTP id d9443c01a7336-24288e2243amr66241675ad.25.1754418653959; Tue, 05 Aug 2025 11:30:53 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:27 +0530 Subject: [PATCH v9 20/27] migration: push Error **errp into loadvm_process_enable_colo() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-20-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5926; i=armenon@redhat.com; h=from:subject:message-id; bh=fgvd4uHPOVZmJFPX7ZVKrd3MupA0peKN3ZUBuFC022s=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkXxmn7f/7fKwmnZ2+jeXCV5lb8nt+HXDQyt/Tt9jsl lLHxiniHaUsDGJcDLJiiiwNXwNkmwIKIyJtX16HmcPKBDKEgYtTACYSwMjIsHDLo3+/M3yqcqeH mPatuio/dVLE77LISY9z5IyV5C5NncvwP0JaurGd4deC7b8lJv+9cObfoer5/rZXr/a/ceO9lzA xkhsA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419025071116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_process_enable_colo() must report an error in errp, in case of failure. Signed-off-by: Arun Menon --- include/migration/colo.h | 2 +- migration/migration.c | 12 ++++++------ migration/ram.c | 8 ++++---- migration/ram.h | 2 +- migration/savevm.c | 26 ++++++++++++++------------ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index 43222ef5ae6adc3f7d8aa6a48bef79af33d09208..d4fe422e4d335d3bef4f860f564= 00fcd73287a0e 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -25,7 +25,7 @@ void migrate_start_colo_process(MigrationState *s); bool migration_in_colo_state(void); =20 /* loadvm */ -int migration_incoming_enable_colo(void); +int migration_incoming_enable_colo(Error **errp); void migration_incoming_disable_colo(void); bool migration_incoming_colo_enabled(void); bool migration_incoming_in_colo_state(void); diff --git a/migration/migration.c b/migration/migration.c index 6962dc7d7f3e0121d28994c98f12f9f2258343d7..4a76d7ed730589bae87115368b0= bf4819f8b161e 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -623,22 +623,22 @@ void migration_incoming_disable_colo(void) migration_colo_enabled =3D false; } =20 -int migration_incoming_enable_colo(void) +int migration_incoming_enable_colo(Error **errp) { #ifndef CONFIG_REPLICATION - error_report("ENABLE_COLO command come in migration stream, but the " - "replication module is not built in"); + error_setg(errp, "ENABLE_COLO command come in migration stream, but th= e " + "replication module is not built in"); return -ENOTSUP; #endif =20 if (!migrate_colo()) { - error_report("ENABLE_COLO command come in migration stream, but x-= colo " - "capability is not set"); + error_setg(errp, "ENABLE_COLO command come in migration stream" + ", but x-colo capability is not set"); return -EINVAL; } =20 if (ram_block_discard_disable(true)) { - error_report("COLO: cannot disable RAM discard"); + error_setg(errp, "COLO: cannot disable RAM discard"); return -EBUSY; } migration_colo_enabled =3D true; diff --git a/migration/ram.c b/migration/ram.c index 6a0dcc04f436524a37672c41c38f201f06773374..995431c9e320f443c385c29d664= d62e18c1afd90 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3576,7 +3576,7 @@ static void colo_init_ram_state(void) * memory of the secondary VM, it is need to hold the global lock * to call this helper. */ -int colo_init_ram_cache(void) +int colo_init_ram_cache(Error **errp) { RAMBlock *block; =20 @@ -3585,9 +3585,9 @@ int colo_init_ram_cache(void) block->colo_cache =3D qemu_anon_ram_alloc(block->used_length, NULL, false, false); if (!block->colo_cache) { - error_report("%s: Can't alloc memory for COLO cache of blo= ck %s," - "size 0x" RAM_ADDR_FMT, __func__, block->idst= r, - block->used_length); + error_setg(errp, "Can't alloc memory for COLO cache of " + "block %s, size 0x" RAM_ADDR_FMT, + block->idstr, block->used_length); RAMBLOCK_FOREACH_NOT_IGNORED(block) { if (block->colo_cache) { qemu_anon_ram_free(block->colo_cache, block->used_= length); diff --git a/migration/ram.h b/migration/ram.h index 275709a99187f9429ccb4111e05281ec268ba0db..24cd0bf585762cfa1e86834dc03= c6baeea2f0627 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -109,7 +109,7 @@ void ramblock_set_file_bmap_atomic(RAMBlock *block, ram= _addr_t offset, bool set); =20 /* ram cache */ -int colo_init_ram_cache(void); +int colo_init_ram_cache(Error **errp); void colo_flush_ram_cache(void); void colo_release_ram_cache(void); void colo_incoming_start_dirty_log(void); diff --git a/migration/savevm.c b/migration/savevm.c index 938adb20270adbf9546b0884d0877c25c3f0f816..a6b71a958aeda31e89043f8103b= fe2fc89542fb5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2519,15 +2519,21 @@ static int loadvm_handle_recv_bitmap(MigrationIncom= ingState *mis, return 0; } =20 -static int loadvm_process_enable_colo(MigrationIncomingState *mis) +static int loadvm_process_enable_colo(MigrationIncomingState *mis, + Error **errp) { - int ret =3D migration_incoming_enable_colo(); + ERRP_GUARD(); + int ret; =20 - if (!ret) { - ret =3D colo_init_ram_cache(); - if (ret) { - migration_incoming_disable_colo(); - } + ret =3D migration_incoming_enable_colo(errp); + if (ret < 0) { + return ret; + } + + ret =3D colo_init_ram_cache(errp); + if (ret) { + error_prepend(errp, "failed to init colo RAM cache: %d: ", ret); + migration_incoming_disable_colo(); } return ret; } @@ -2646,11 +2652,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_handle_recv_bitmap(mis, len, errp); =20 case MIG_CMD_ENABLE_COLO: - ret =3D loadvm_process_enable_colo(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: ret =3D loadvm_postcopy_handle_switchover_start(); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419016; cv=none; d=zohomail.com; s=zohoarc; b=JymdgCR/9nfMoz4n/Ndq5zX9HbU6x8wwUnPIit96BVH+PokbtWu06+TwAC5luQX6FJJ0qjEmb8/k2HAR8E56SnoTBSD0LXCs0FJw3u3VM9CkK/MieW5/vHBM+UtXJrRpt7QYwEEJAV9nltWAwzU+0QKZ3X0/Yjcj3AP6F+lBuYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419016; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tugtLfDHs8KwfJFZEQdUUwiLj5Ix7NdURwlIQi3EhOw=; b=cBVVUroxkhhrMEhxbYbi9KuZLtMCqfAATXmHCHn2QcIVpxGy3BaC+Wzl6mccZKKd+w6tIneaTczCylwZqQSaVnckL0PWptiwiZsJlT/ngE9CU2jls6+NvAdO5dDu6rbxMVE65SrdU/CXZPxhaqeAKitRosox9oDHobERozVsf0I= 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= (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 1754419016487351.82085402346354; Tue, 5 Aug 2025 11:36:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWM-0007Wf-QP; Tue, 05 Aug 2025 14:36:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMVG-0002SN-F9 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:35:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMRG-0004cS-9z for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:10 -0400 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-399-KS5_4e1vO5OYXnvcJOW0jw-1; Tue, 05 Aug 2025 14:31:04 -0400 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-24004ac2ecdso82625275ad.0 for ; Tue, 05 Aug 2025 11:31:03 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.30.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418665; 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=tugtLfDHs8KwfJFZEQdUUwiLj5Ix7NdURwlIQi3EhOw=; b=ZKt5v2rllNQOE0ITyZRvTrWx6UzMXBJmCojXHHQt0Xl6ZF8pxINCIM9J9JFd7y3BDRARXa ag8UuZCUU/W25KUdd4fC0EeqJHbDo+T8xB+ciA8dLQXuL15dlU6Y97V48dwweN5xC6tZAh aHwATg49KZKQpbveGguaOmrXlcKiaMY= X-MC-Unique: KS5_4e1vO5OYXnvcJOW0jw-1 X-Mimecast-MFC-AGG-ID: KS5_4e1vO5OYXnvcJOW0jw_1754418663 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418663; x=1755023463; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tugtLfDHs8KwfJFZEQdUUwiLj5Ix7NdURwlIQi3EhOw=; b=tGbS+IBYsJd5/rancoLoG/m4xz37+noFBv+YB70MswWvU2D7yintBz+bcJz5mL7hIX wwoTubSPZa2BFvXylLAPMGCTeUMMrOkcZNiem7GBpUFogUKaKg15WjCuf0h66lSs6ig2 7PPQ0oWTPmNf93VffKZo00Ee3u0hTaZj2JrZ+qmVJ8g8BXEMJ13YHpv5emVZDH1Wd4h0 XzQOAEViTB9hz8hKcd16e2kYfstFGcEQDp3hcz5KI+xb3GurswduouYjiKJh3WzI6XR3 yR/fTlllOYIi4N48Uq0siIyloo7KOqyKz9gg0mdL32xasG5qZgKdkKhljEPuB5ukkRjK CGig== X-Gm-Message-State: AOJu0YxA0V8bbdC/8F9mzNAllFE2Ni4y3z89yTcPczr93ZixdpKnOfej /yb32/Mue92f767QKXPRVNuja+bd8NYkWr305IKOPfhrWv8OCzZELFJg++4vLDBRmPfBW6SAti/ 0+nlgXTgwCm2rJ2it2vsE5q7qFXdpK6iqZv0P1hcWkmMTlZSvYrU5DshP X-Gm-Gg: ASbGncu+5SnEenVIqsxlxYAtyYfIuX9cxTh65Kstr8VtB3A9qBGjmmgbdendu5Z0qL3 6Q0JS+OwKzz4pa4d1ioiGIFFzHdsCSRMNDpIPdLENXGtXGfcHQ7715An4XAPRRAfgJQ9aOO0g4s 6v0emSDHhdXoJ6lnFvA0+Pr1bMO0nz1V8vfVmwamuwQDSlREM5xNx9zBHKl/ZrnOy0WuqU4ipmh +CWAxUZU0Ct5EurZbI4nAMOHhX22+XwlyDX+1qasIAwwcqTa8ZUvV+GTy35dU7JUmBLmgm1b6HL I4OLGw34szArWcX/cqHS3I1ap3ru+RtjwqxPTV14hUvQFhdd/w== X-Received: by 2002:a17:903:2f89:b0:240:1953:f9a with SMTP id d9443c01a7336-2429f1d9ae8mr1583435ad.2.1754418663061; Tue, 05 Aug 2025 11:31:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVJqb7wykthF/9LH+CDINP7viuvzFmMyxXeTVcYCZt37LeI7eXnPSoYUSX3p+JLdFB5WT06w== X-Received: by 2002:a17:903:2f89:b0:240:1953:f9a with SMTP id d9443c01a7336-2429f1d9ae8mr1583035ad.2.1754418662615; Tue, 05 Aug 2025 11:31:02 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:28 +0530 Subject: [PATCH v9 21/27] migration: push Error **errp into loadvm_postcopy_handle_switchover_start() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-21-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1701; i=armenon@redhat.com; h=from:subject:message-id; bh=WcIaXxDqhz3hsqgGVmmXRWkfk64gvb6L4XfIOd4pokA=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX9ka5SLm7Ru/Wj++vWPfvnA71kMnjlbnM6/VeRznn jTB92B5RykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIlYOzMynDsSJy+cOmdt6t2H HyTybB5e9A3j/blflDPq1+Z7/05Uf2dk2HFUe6Odx+KiXdbusnFbpveuPXq/f+nnzbesTn88v+P +f14A X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419024838124100 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_postcopy_handle_switchover_start() must report an error in errp, in case of failure. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- migration/savevm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index a6b71a958aeda31e89043f8103bfe2fc89542fb5..c89fa59161fd1c4f20d0c3f8f14= e86f014223dd6 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2538,7 +2538,7 @@ static int loadvm_process_enable_colo(MigrationIncomi= ngState *mis, return ret; } =20 -static int loadvm_postcopy_handle_switchover_start(void) +static int loadvm_postcopy_handle_switchover_start(Error **errp) { SaveStateEntry *se; =20 @@ -2551,6 +2551,7 @@ static int loadvm_postcopy_handle_switchover_start(vo= id) =20 ret =3D se->ops->switchover_start(se->opaque); if (ret < 0) { + error_setg(errp, "Switchover start failed: %d", ret); return ret; } } @@ -2655,11 +2656,7 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) return loadvm_process_enable_colo(mis, errp); =20 case MIG_CMD_SWITCHOVER_START: - ret =3D loadvm_postcopy_handle_switchover_start(); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", re= t); - } - return ret; + return loadvm_postcopy_handle_switchover_start(errp); } =20 return 0; --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419000; cv=none; d=zohomail.com; s=zohoarc; b=e0ZJVIrTHpajQnS4MN/R/jwepuMsw0ui9qIIReM8xAUJe18td7I8L8fQ7UaES1leqeVFsL5OM5waaYXzGYTaCp6LoDtXGKQyemvkJ8AXmoySUZs7XoRKOGEyslisZMy2Xvh9/GWc0idB9lBMd4jxJwQF3ZS1cusYRhVd2YtrFIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419000; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GmQB8vYEVOkmPdKDquv+cokl0fPVJk/XYuTDWxkgQnc=; b=mVkIf1p6ikPbeUgVHdYjTQM+tdw9nPxXh+rBpvzxnVBleICglXy7cJhN3znZkYHJKzXpgnB1/Dm9nM64sqYr+5jkwlIJ5dCpKRmwAthtlM/31YHr+KWAmPzWUPUUpfChwC0XG7zgwWSfIcg84ujL+pn/2B+KAIu9F3vznncQvc8= 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= (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 175441900032656.15997979618726; Tue, 5 Aug 2025 11:36:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMW7-0007CV-61; Tue, 05 Aug 2025 14:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUv-0002SN-9x for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMRS-0004eI-Po for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:20 -0400 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-635-EWFvo1i3MYSeuLrGFyo9Zw-1; Tue, 05 Aug 2025 14:31:13 -0400 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b115fb801bcso8048861a12.3 for ; Tue, 05 Aug 2025 11:31:13 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418677; 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=GmQB8vYEVOkmPdKDquv+cokl0fPVJk/XYuTDWxkgQnc=; b=Kkr9ORhyDiL5WNE5X/VBvbApmB0GMpH+D/VQY0OQ2m9O5b9nECHbjR5ox3iW/UDg4CPayO 3JMYdpuSX1/lfzOqMJAvvSx73pNz4M7X4Wd89po0MNyicF+sNBcX6CXLRWWSQ0HBduJB+l 54XaZWyvpMBmDslRnOaCvg2/vAopB0k= X-MC-Unique: EWFvo1i3MYSeuLrGFyo9Zw-1 X-Mimecast-MFC-AGG-ID: EWFvo1i3MYSeuLrGFyo9Zw_1754418672 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418672; x=1755023472; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GmQB8vYEVOkmPdKDquv+cokl0fPVJk/XYuTDWxkgQnc=; b=S2xuxhfAdYV6fNV4r8FUVTeqSSQSlTRZI6J6JXHaC3NUBHfI8e4TAFyrMyW6diimQk gB7rv3rV8LKBySuPUiGgAbbLXupDyOyh82tp6vjea86a7EqI7nckVVPkuRPTUdHX/IE9 kc4DBZku4qJpCLilYDh97V9WfhBilDkNAeMpqOeqpuNfT6ZCKKOQ3fIwL6o0j6Jc0+MM PBmdumxdd0Yc1UqGMSPNJ/eqtDwHPVBcmyfnAKS7cJGIzBNCzi8aX6f19AGELJkAyuB1 GNl3Fly2wW9xDEicKCPj9a+UKYA31BNT0i41+lJjPhPbSMvia1X9MfzBF2g9uSC3YI87 88jg== X-Gm-Message-State: AOJu0YxrxuLcuwUY3oaumvDKmassybEG5h/4RNP3qoGZ0uZWBBaBEgZr IqYN5dBXqGus81PSqH3022ldO0ONqMAFAyVRUAbzHhhZmTe/cQ40vm5H7DgY7nResf/ed+DtJMG iwhJ5nAJ9loAOOgzFmFbpj5Z6iTD7m0w9qTOSAGVbBlwsdEVQjNC8rDL8 X-Gm-Gg: ASbGncvnGxH+cyP0Svx3s6kTjvwJsEeHVIefStwj8x3qjqCQb2AayR1MNuHLYzTFdUY wcJgJ7bT55sk3nyir84WdubuE34CcFxIiNb1fOASVBKb1w5teH0g1WdlIXdNZhSS3FrSn17OhMO adbkOzYxrJHMgA4ILwhguhSUAd5YMzibkeS4ac7vPDqv1TeS2Kyl+7f+2K0AT3dJfY6D356Np10 jX/80o9XvQCNGkPZEyVsnvfnvtu1AgA9WCxP+/UURFDSjS0zMmt3YNOY88rcKgsMbcVuhG45Sdk so96chP1P5czjEWYrK3U7s5zW7wlhefkoU9aOLcrhy92TxmiXA== X-Received: by 2002:a17:902:ccce:b0:240:96c1:e860 with SMTP id d9443c01a7336-2429f5338famr859925ad.28.1754418672433; Tue, 05 Aug 2025 11:31:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHqRwOl9bEMJNDVPJOB6NsECsF8EhshXzXmcu2VDMWoiIvXyBZgloaGF+QWMvfomONQBINCHQ== X-Received: by 2002:a17:902:ccce:b0:240:96c1:e860 with SMTP id d9443c01a7336-2429f5338famr859385ad.28.1754418671978; Tue, 05 Aug 2025 11:31:11 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:29 +0530 Subject: [PATCH v9 22/27] migration: Capture error in postcopy_ram_listen_thread() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-22-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2103; i=armenon@redhat.com; h=from:subject:message-id; bh=mI1Y6oyruXcKKhKtHng8gWdORKFI0mPETPs3UZirwjg=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX1nNNhX7Z7dvqmev4BcQ6K9suJ+wQrj2h/2CO+wfW ZZ9adrUUcrCIMbFICumyNLwNUC2KaAwItL25XWYOaxMIEMYuDgFYCJ9tgz/XXVOVf5hqbfu2sTM b/elOXiF22KZo/EFmtVGj3v/T+BMYGRYt1Da6nCaZpGaolWib13dtJMfnx/+xmzlK27k2e7Ld5c fAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419002703116600 This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. postcopy_ram_listen_thread() calls qemu_loadvm_state_main() to load the vm, and in case of a failure, it should set the error in the migration object. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Arun Menon --- migration/savevm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index c89fa59161fd1c4f20d0c3f8f14e86f014223dd6..4df50fb5c674e56c0173c357c1e= 23367373e2114 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2095,6 +2095,7 @@ static void *postcopy_ram_listen_thread(void *opaque) QEMUFile *f =3D mis->from_src_file; int load_res; MigrationState *migr =3D migrate_get_current(); + Error *local_err =3D NULL; =20 object_ref(OBJECT(migr)); =20 @@ -2111,7 +2112,7 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_file_set_blocking(f, true); =20 /* TODO: sanity check that only postcopiable data will be loaded here = */ - load_res =3D qemu_loadvm_state_main(f, mis, NULL); + load_res =3D qemu_loadvm_state_main(f, mis, &local_err); =20 /* * This is tricky, but, mis->from_src_file can change after it @@ -2137,7 +2138,12 @@ static void *postcopy_ram_listen_thread(void *opaque) __func__, load_res); load_res =3D 0; /* prevent further exit() */ } else { - error_report("%s: loadvm failed: %d", __func__, load_res); + if (local_err !=3D NULL) { + error_prepend(&local_err, + "loadvm failed during postcopy: %d: ", load_= res); + migrate_set_error(migr, local_err); + error_report_err(local_err); + } migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIV= E, MIGRATION_STATUS_FAILED); } --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419039; cv=none; d=zohomail.com; s=zohoarc; b=T7XM6OyPboK/Es0LbEDD1LWJONqrPGdRNcEmAXkj74U+LvXewjCRIQ/PNbP5AlsENAp38KwB5fDGS7j4KU+OV4FnJciiU548AAGtkhW5OJF/xZe/YFm8LQCmXKj5DAEjJJg50+Wv8kyKnXT/Kum1cnRHw6hUX0hjW3e66SJr24s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419039; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kGN9/eILY+hbq3FdeGQ/l7q4/1VhCx4p2FFdcgrlpL0=; b=VEhZuOMDkWWZOSkNSWB5P/cQ6YOVnGs8NiYXUDzRQqNoyfOnvqPLB31pT4zyUi1lnT7XaDcQhVtPs7H7nN407INL+plW+q0TIENuxE7dKnF7yWmf/aw+UhnmxzlI4Y5v5epDwaw6hAoeY1x0He4g/O5PTyZT3QiPtBXzp4Czb98= 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= (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 1754419039785702.7914532059315; Tue, 5 Aug 2025 11:37:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMWA-0007Ha-8T; Tue, 05 Aug 2025 14:36:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUs-0002SN-Ip for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMRY-0004ez-Mn for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:26 -0400 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-61-rRJ82bqVMQKDwhkxv8V6DA-1; Tue, 05 Aug 2025 14:31:21 -0400 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b26e33ae9d5so7923308a12.1 for ; Tue, 05 Aug 2025 11:31:21 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418682; 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=kGN9/eILY+hbq3FdeGQ/l7q4/1VhCx4p2FFdcgrlpL0=; b=GOi6cGyHqAbXjOSJVBxa+1Jg0jb/7/StDANcBip2wVQnOlNAh0UzDZSMxOOesPNRj6XjCI UyrThqpspJ3y/vWsZA2qi3uFeX0i9kvrSNwq3tdUwoFpkcSalkD8TtuEebz3X+qHifpXrY gSRtMRVoXFdSbmPsXvp0ieuou0rp+sc= X-MC-Unique: rRJ82bqVMQKDwhkxv8V6DA-1 X-Mimecast-MFC-AGG-ID: rRJ82bqVMQKDwhkxv8V6DA_1754418681 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418681; x=1755023481; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kGN9/eILY+hbq3FdeGQ/l7q4/1VhCx4p2FFdcgrlpL0=; b=Lb3VlrrhDZgB88ac8oqgWHIy9hY6W+mwoQ54DG2sEQPeCqPXK+qdGmUnuE8uOnk0m7 rvlkntYugAIWspnLW9YZiSvuL2BdBLOwghVmkNkfWEW8H6vTRCstekODYaPw2qOYYxm3 ++V3qpTPz25uCK4aC2hiihsMO4OjCRSJoSMbpO5N8TOAf/8v2ge/3yMs7H87mm0P4Pe4 XtVXW2B2s1mDYPHNP5SuwdDoizCIqj4FWTE9QbHZyAwj0Zhlku8Q0lnQi8+HTneIQMW+ mK6evxYkn8V/rCp7u85Ssygy6MbQo5rzb3YZck988RP4iTAnyAvbWH/zhy902S/MfxBi Aj2w== X-Gm-Message-State: AOJu0YznMkInVL0lPFLT27clGhx5i4NZruTu9G6P1ZPX6Eu0OVqtPIGF JbWpuO8T4v1Be3jvxJopmoE7xAvH/UtfJeDcYVYfoP5LvtHdf+OtG/6cYwEro0ikZMGtifXFwrb uiDb1jslDHgCqjHHxn5Dsjc59YIYiPnlufcPGdDm3DPpOQrfxvteq70B1 X-Gm-Gg: ASbGnct6cvv7hG5pa4SFe6AOUYp7YW772rkX7wtR+E7KryrpLHFis+IxurjgO4FnZ05 dtExWZEVXlqHA0rAxlkCEMJ6ikaIU3IdBKqzve0W/BbIPXNtVumfeKMLKB+N7o8hvr5gGiuLovq PhXDalWcl6dwh/KwCNEGBT5zlWnGFATdjWwWmN+p3Q7oo90TtjZ5rRB45sxCmr6Id5xb3MxHfWm ErCzvGyc3KeJ5RWIyxvCbYRMjzYq1sJdIX/ZV2gkMAW36cSxW4zVU4bMlWw+2+gAtFUZSWS8kiJ zXd9OQlvevK1Tqs41hosEQqiUoo8/XxJiXaNN/qS4ed4I7Ycww== X-Received: by 2002:a17:903:228c:b0:240:8cca:50fb with SMTP id d9443c01a7336-2429f4ae088mr1074765ad.37.1754418680616; Tue, 05 Aug 2025 11:31:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH8UJNdT/JCKNBBfqfSyf2wpEKcB3xK3uXEiBVvh+NMh+GNn7goFyoioHIxxJowKfnYE0SFgQ== X-Received: by 2002:a17:903:228c:b0:240:8cca:50fb with SMTP id d9443c01a7336-2429f4ae088mr1074415ad.37.1754418680229; Tue, 05 Aug 2025 11:31:20 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:30 +0530 Subject: [PATCH v9 23/27] migration: Refactor vmstate_save_state_v() function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-23-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4475; i=armenon@redhat.com; h=from:subject:message-id; bh=c8kfvDk6lrJiSfsmBzhkJZ0RnyOClKC/mbMu3S27q9w=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX9mDncx6yzrOfLnhXyuXusnpTuJn7lX+N2LYpnF+T 96z/tyFjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABPxzWRkmLb9a8a0lbkLFrs+ z0vK7zHaPK0+OvaZZe5iVkY3r3apHoa/oucMVQTs5073Xv7op8gCp1OVyoGv1swT3PNJq/Wt1xk ZXgA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419041902124100 The original vmstate_save_state_v() function combined multiple responsibilities like calling pre-save hooks, saving the state of the device, handling subsection saves and invoking post-save hooks. This led to a lengthy and less readable function. To address this, introduce wrapper functions for pre-save, post-save and the device-state save functionalities. Signed-off-by: Arun Menon --- migration/vmstate.c | 78 ++++++++++++++++++++++++++++++++++++++++---------= ---- 1 file changed, 60 insertions(+), 18 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index 60ff38858cf54277992fa5eddeadb6f3d70edec3..fbc59caadbbcc75fe6de27b459a= a9aa25e76aa0a 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -414,22 +414,43 @@ int vmstate_save_state_with_err(QEMUFile *f, const VM= StateDescription *vmsd, return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, errp); } =20 -int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc, int version_id,= Error **errp) +static int pre_save_dispatch(const VMStateDescription *vmsd, void *opaque, + Error **errp) { int ret =3D 0; - const VMStateField *field =3D vmsd->fields; - - trace_vmstate_save_state_top(vmsd->name); - if (vmsd->pre_save) { ret =3D vmsd->pre_save(opaque); trace_vmstate_save_state_pre_save_res(vmsd->name, ret); if (ret) { - error_setg(errp, "pre-save failed: %s", vmsd->name); - return ret; + error_setg(errp, "pre-save for %s failed, ret: %d", + vmsd->name, ret); } } + return ret; +} + +static int post_save_dispatch(const VMStateDescription *vmsd, void *opaque, + Error **errp) +{ + int ret =3D 0; + if (vmsd->post_save) { + ret =3D vmsd->post_save(opaque); + error_setg(errp, "post-save for %s failed, ret: %d", + vmsd->name, ret); + } + return ret; +} + +static int vmstate_save_dispatch(QEMUFile *f, + const VMStateDescription *vmsd, + void *opaque, JSONWriter *vmdesc, + int version_id, Error **errp) +{ + ERRP_GUARD(); + int ret =3D 0; + int ps_ret =3D 0; + Error *local_err =3D NULL; + const VMStateField *field =3D vmsd->fields; =20 if (vmdesc) { json_writer_str(vmdesc, "vmsd_name", vmsd->name); @@ -532,9 +553,7 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDesc= ription *vmsd, if (ret) { error_setg(errp, "Save of field %s/%s failed", vmsd->name, field->name); - if (vmsd->post_save) { - vmsd->post_save(opaque); - } + ps_ret =3D post_save_dispatch(vmsd, opaque, &local_err= ); return ret; } =20 @@ -557,16 +576,39 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDe= scription *vmsd, if (vmdesc) { json_writer_end_array(vmdesc); } + return ret; +} =20 - ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); =20 - if (vmsd->post_save) { - int ps_ret =3D vmsd->post_save(opaque); - if (!ret && ps_ret) { - ret =3D ps_ret; - error_setg(errp, "post-save failed: %s", vmsd->name); - } +int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, + void *opaque, JSONWriter *vmdesc, int version_id, + Error **errp) +{ + ERRP_GUARD(); + int ret =3D 0; + Error *local_err =3D NULL; + int ps_ret =3D 0; + + trace_vmstate_save_state_top(vmsd->name); + + ret =3D pre_save_dispatch(vmsd, opaque, errp); + if (ret) { + return ret; + } + + ret =3D vmstate_save_dispatch(f, vmsd, opaque, vmdesc, + version_id, errp); + if (ret) { + return ret; } + + ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); + ps_ret =3D post_save_dispatch(vmsd, opaque, &local_err); + if (!ret && ps_ret) { + ret =3D ps_ret; + error_setg(errp, "post-save failed: %s", vmsd->name); + } + return ret; } =20 --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418992; cv=none; d=zohomail.com; s=zohoarc; b=e593xXApl0hQeARUmUm8fWgqa5fjRo29oQkJLRHqEmQ7JxWzMP+tKLl2WlocXvft9yWKeo/xamxPCT8SBcSup99uJHG/QQNFuqqLiYkoSfCOhjptiB0u86bPZe0YGbKbYbFKsDwqhmjue7uOIE33NfsS2JIXr6ZVqrnqOWKmXOY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418992; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lyEMNo8LTCH4oBBTDw8r5bocoE5jCam3ilxNpfs9W/A=; b=Vew/dbozSdgzP+WYdFPZo9Wa5nfSozC5m+L3HhhCzMEkNYADC7EifOYZoly9NRj6rKGJ79bWhLpUJzfIXu2ak0/ubCY3aPlTBDiT70gpmYPx/nLGwXq88auxXio8QgV78P00IHaAYWf6kwEz7wu0WEXTV2UE1p7IafkEtfSN554= 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= (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 1754418992013704.6784966898168; Tue, 5 Aug 2025 11:36:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMW4-00079H-9X; Tue, 05 Aug 2025 14:36:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUm-0002SN-SA for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMRf-0004fm-Ru for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:33 -0400 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-588-_vlmJ4KrN6KUKkaXz388BQ-1; Tue, 05 Aug 2025 14:31:30 -0400 Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-23824a9bc29so82770505ad.3 for ; Tue, 05 Aug 2025 11:31:30 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418691; 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=lyEMNo8LTCH4oBBTDw8r5bocoE5jCam3ilxNpfs9W/A=; b=MgxQt9EVayd9LJFeD9VpanpZqXdABDUdrJFd+ANk2SanYxml2SHuCkc+ti5Kzd9ggC5ZMe ggwbS/jaZ7lpTSbYKcZpr8GjDqzCB9Sdr8zqJrgqV3jFb5FncM80A5rPf/zDLV/LIiVEzk hvyzGhxwKbqUSiwZErR0I8QgUGDe+VY= X-MC-Unique: _vlmJ4KrN6KUKkaXz388BQ-1 X-Mimecast-MFC-AGG-ID: _vlmJ4KrN6KUKkaXz388BQ_1754418689 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418689; x=1755023489; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lyEMNo8LTCH4oBBTDw8r5bocoE5jCam3ilxNpfs9W/A=; b=iZcW6ncOhwsCFVxUuqLEbk5/YUxtYXpjLuvbunhre6EC6U2rnGQou/kuvcbAmv/vZQ 9rgShfzXfzDW+QpxCnT7gJGypxlQXMCI/c5V4qU5fSagXYydCrZpR0cuRLWevhC01742 KFH9mbb848wMgIaYFFPpmhKmwaJaj+G6+yDuZuR729QqCFLGdnW4bMuO7KCn6aSl4p1f onEyDnjibLaXomYg9CsR6BIQPkBhqr0rDB+zfdx1RdWU6nr8QR79X5NRG2pUogzHGu6F oICNcDyIowN0C+nhkCtgROOtwJDcoNLSZEBQY/SmkvdWaa6YIOhWLkzXRg9toG2BOhWm w71A== X-Gm-Message-State: AOJu0YxtQC3A1qO+vOi1NLyrQH26ykJW15GgGMatrgnVuZh7ejIGJ02A Jo1V3x/JuNogQLACKNYdTXSOqwYCEeGofDIGUDhmAAM+s7LBj1wgr0sdYKYt6xnES/RdwpLOtyh aTTGU3AIGpSt/bGlAnbSe4K7sEGLCDgtbABjOUH6DFge+iZP4vMwcnWUa X-Gm-Gg: ASbGncuYy3h2Ias+SJ6z5bxd+aXix6T7rQlaXfm3IOCWzRs57H7sCGYRPGXNjW6V4z8 Ta9sxn6gLiI8rEaH5E5ihyfEPz412XG1I7PVaSATPGIUgW/z/2GsIpi66jOGmTfKfwP7WII2iUP j5jbIgZy534Fydb2vQyNPpjNwaTqWmtxWh1qJVgqrkfH9l4sl4PZg8N1M71PJcUz8Zyvl+yjk/a 4l5kRe7u/EZdWmp/lTDqkxeWnP8dxqCVHDDBbh5AMaPiIX4Fuop6J1wYQ7bkjyXIvXb9NY9NHsb vjH22IOMzPlHhXqt+bThewKNhLPrjMqoRZTotpkZuI2YInXHUQ== X-Received: by 2002:a17:902:cf4a:b0:240:35c4:cde0 with SMTP id d9443c01a7336-2429f52c6fcmr1175405ad.36.1754418689186; Tue, 05 Aug 2025 11:31:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFgGtE7mAchzZB9wDEy2zDY5eWBH75SyCCqxgNcEKN3og9YSWofiyiYXX+Me0/j9YXvbBxa1w== X-Received: by 2002:a17:902:cf4a:b0:240:35c4:cde0 with SMTP id d9443c01a7336-2429f52c6fcmr1174825ad.36.1754418688829; Tue, 05 Aug 2025 11:31:28 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:31 +0530 Subject: [PATCH v9 24/27] migration: Propagate last encountered error in vmstate_save_state_v() function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-24-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3191; i=armenon@redhat.com; h=from:subject:message-id; bh=ErhzaVYJNAGZq3AWCqx0ACK1k2Z72sTWy4eZfUuNU3E=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX9nbT+pk1fT1Fk9gKGasFjzCX2ka4dSUx3zfYb1RR Ki9mGZHKQuDGBeDrJgiS8PXANmmgMKISNuX12HmsDKBDGHg4hSAiczlZ2RofR42V3P7faeg/p1T syJjk3Yd5XVdezDmpN0xsQjG2FlXGBludDKtNv+y2Tt7/hKNp+u0L7M8uSdUNjvhxuk8f27vrD5 uAA== X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.133.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418994601124100 We consider, - the saving of the device state (save or subsection save) and - running the cleanup after (post_save) as an atomic operation. And that is why, post_save() is called regardless of whether there is a preceeding error. This means that, it is possible that we have 2 distict errors, one from the preceeding function and the other from the post_save() function. This commit changes the error handling behavior when two errors occur during a save operation. 1) Preceding errors were propagated before, but they are now dismissed, if = there is a new post_save() error. - A failure during the main save operation, means the system failed to reach a new desired state. A failure during the post-save cleanup, however, is a more critical issue as it can leave the system in an inconsistent or corrupted state. At present, all post_save() calls succeed. However, the introduction of error handling variants of these functions (post_save_errp) in the following commit, imply that we need to handle and propagate these errors. Therefore, we prioritize report= ing the more severe error. 2) post_save() errors were dismissed before, but they are now propagated. - The original design implicitly assumed post-save hooks were infallible cleanup routines. This will not be the case after introducing the post/pre save/load er= rp variant functions. Dismissing these errors prevents users from identifying the specific operation that failed. The entire save-and-cleanup process is treated as a single logical operation, and all potential failures are communicated. Signed-off-by: Arun Menon --- migration/vmstate.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/migration/vmstate.c b/migration/vmstate.c index fbc59caadbbcc75fe6de27b459aa9aa25e76aa0a..ef78a1e62ad92e9608de72d125d= a80ea496c8dd1 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -554,6 +554,12 @@ static int vmstate_save_dispatch(QEMUFile *f, error_setg(errp, "Save of field %s/%s failed", vmsd->name, field->name); ps_ret =3D post_save_dispatch(vmsd, opaque, &local_err= ); + if (ps_ret) { + ret =3D ps_ret; + error_free_or_abort(errp); + error_setg(errp, "post-save for %s failed, ret: %d= ", + vmsd->name, ret); + } return ret; } =20 @@ -603,10 +609,14 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDe= scription *vmsd, } =20 ret =3D vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); + ps_ret =3D post_save_dispatch(vmsd, opaque, &local_err); - if (!ret && ps_ret) { + if (ps_ret) { + if (ret) { + error_free_or_abort(errp); + } ret =3D ps_ret; - error_setg(errp, "post-save failed: %s", vmsd->name); + error_propagate(errp, local_err); } =20 return ret; --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419004; cv=none; d=zohomail.com; s=zohoarc; b=DiIB21EBSb1B8LlmGtNoF90T9Qi1qaa2l1KnUV5By2ts1TXurDa9qhLoq2EJwTFADZlW1wG0cdNPw8htQ69fjai0j9u6Lu+J0GHw8d26tH8ditFZw4V8qRpDwwiiAgkOGCAWB1BgcHl/QWUqXjFfz4WQZDz9qUvk+/WvYTfQ+sE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419004; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oN42j+kNmSWrHg09G9CZUBsycZtVfyt3f441znO59p0=; b=ZfmUzh5ZzyahrpjGbyF5BGDKkMF/1DsQS20EfB0dcJ94Kr4i0tEgJprYQ8bBwx+Fs48xn3jcHJqXvY+uTYqO68b0bs+m4CJnAAE7EPziPK5JJDqZ4y67E/0sr5kzzSF1GF0Z7wyyxHuQ5Sv3Hm6yeL4FgAPL9LyOabfOZVDmpx4= 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= (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 1754419004373427.6955385491475; Tue, 5 Aug 2025 11:36:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMW9-0007Fc-9M; Tue, 05 Aug 2025 14:36:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUq-0002SN-B9 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMRp-0004gs-S6 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:44 -0400 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-637-Q_ry3YaBN6ym7JjrB0W4lQ-1; Tue, 05 Aug 2025 14:31:40 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2400a0ad246so49761985ad.2 for ; Tue, 05 Aug 2025 11:31:38 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418701; 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=oN42j+kNmSWrHg09G9CZUBsycZtVfyt3f441znO59p0=; b=NWGoOc4JC1aPvZ+KBFy0Jrm7sMtq3B63ANgaqAcOVf10XPbpEV1PUaPioiCgKd0cYSGdWS mjPdDxHhia1paOL7c5i9FKOOZvU16j40e/Cyt4cCQwX9Hm81YmBQOps3hkIGAJOV3D6Q+r 57Z5qCcZ0m3y5wtMuR5MILaVrzeEh8A= X-MC-Unique: Q_ry3YaBN6ym7JjrB0W4lQ-1 X-Mimecast-MFC-AGG-ID: Q_ry3YaBN6ym7JjrB0W4lQ_1754418698 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418698; x=1755023498; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oN42j+kNmSWrHg09G9CZUBsycZtVfyt3f441znO59p0=; b=Mn9A3FqErM6nwd3YWtLRSRFkwzgy7DRnqeJ3o6uZ53VrF4wfkARwxKT13ny+NdeMmF VCFDVrDKdS7q7S9SJhIr6J9blhSbduChy/Yi1npAiyPCGckR1bIG2x14vS3JfSjDVr7R 3WzfyLD/73UCGwq1BvJYrzI6V6BcLgK2llbXHfZg+BYwTspLkzjPzysTpq9A3e2Kk4HC O9sP3Ep6rRTLTWrui11XtUc1v+T/4M5FcuNiqW9eq8wV7WPoIgJ5s3KQ0WLj+xwVqFzW GzlcAqw5mqmafoZZz4OV7EiIFN9dSmIrIVHPVXCTbRkTSQJdzwRNVjAiuNvNZePC7A6e O41g== X-Gm-Message-State: AOJu0Yy4bYlPPVYWXsAzH7DgvMSmz60GkiOxjq0GRc6/x5hU+Re8M0n/ GBlueOTpYl9+CytyThs8rr7TLuMqZVD9zBLFU8UhOOiFvqP2XgCKbq1f4YGZq14pl+P/LkfZ8dF 8RTevjfg6D++KwOdYughmFNuN1KfkmBL2wRe5rTETImLSw+YTBHPvGzel X-Gm-Gg: ASbGnctSI9ISZzoppCMDNMPjkIi8J1Mk3dYNFrYqIZ3mtbWgSUYF0thjg8/zXParSIt YSWELuJrGLWLC0RJqMvyTTtLj9GHcy6VhuKXO8JUpjRlHIkZAl8vrv9htX1nxK4F93/iuXITs+o EnjnY9x7s4AKydPD+S0MDZ0QdFvYT/qx1eRYUDJzKju8Fgj/YJbQ81qFcfLb8CHCPcF31by0P2a 84Ca5hQNHjwknWx0gxr6ToMJ5lS3QW+ZhhlP/Zm4tnR9x3B6CX+qlbcbdR2aiIvjMZKO2i727il iOvjoRHSeR83c4U7l0nQSFopcHfjReEGnusUw0P3Uig6CwrI7Q== X-Received: by 2002:a17:902:cf03:b0:242:2cad:2f8 with SMTP id d9443c01a7336-2429ee8c2d2mr2081865ad.22.1754418697552; Tue, 05 Aug 2025 11:31:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE1kHHbctZMqH/gPFz+Mx9kDD0r5iy4abygJajYq72VdnG5fmXK6DoA+c9pqWg5Gt/hz9lYYw== X-Received: by 2002:a17:902:cf03:b0:242:2cad:2f8 with SMTP id d9443c01a7336-2429ee8c2d2mr2081225ad.22.1754418697058; Tue, 05 Aug 2025 11:31:37 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:32 +0530 Subject: [PATCH v9 25/27] migration: Remove error variant of vmstate_save_state() function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-25-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=17039; i=armenon@redhat.com; h=from:subject:message-id; bh=kXQ/cZgCJnWc0Kxl5wvYUazLbz9l7b6RLIN3nd5gun4=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX1mWy4r2ibrPZzn/Y123/lXI4zWFLq0cm2/ufHSgZ 4ey8UTdjlIWBjEuBlkxRZaGrwGyTQGFEZG2L6/DzGFlAhnCwMUpABM5JsDwm+VuYOtWJXaxD9OO f39bk92cYxnIvfKt2KHDPH5rw2721zAy/L7X5Cw+tbBigqnFVBf1fI5v8qWPrDoCr+w9Zd7zyI+ HHwA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419005483124100 This commit removes the redundant vmstate_save_state_with_err() function. Previously, commit 969298f9d7 introduced vmstate_save_state_with_err() to handle error propagation, while vmstate_save_state() existed for non-error scenarios. This is because there were code paths where vmstate_save_state_v() (called internally by vmstate_save_state) did not explicitly set errors on failure. This change unifies error handling by - updating vmstate_save_state() to accept an Error **errp argument. - vmstate_save_state_v() ensures errors are set directly within the errp object, eliminating the need for two separate functions. Specifically errors are handled by storing them in errp in vmstate_save_dispatch() All calls to vmstate_save_state_with_err() are replaced with vmstate_save_state(). This simplifies the API and improves code maintainability. Signed-off-by: Arun Menon --- hw/display/virtio-gpu.c | 3 ++- hw/pci/pci.c | 2 +- hw/s390x/virtio-ccw.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/vfio/pci.c | 4 ++-- hw/virtio/virtio-mmio.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio.c | 4 ++-- include/migration/vmstate.h | 2 -- migration/cpr.c | 5 +++-- migration/savevm.c | 7 ++++--- migration/vmstate-types.c | 12 +++++++----- migration/vmstate.c | 18 ++++++++---------- tests/unit/test-vmstate.c | 8 +++++--- ui/vdagent.c | 3 ++- 15 files changed, 40 insertions(+), 36 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5ff9f5e6dc0b6b112e36170318c900f893a73c5e..bddb26fa21312e5d0b2b6412cdf= 2a6c28dd06eb3 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1246,7 +1246,8 @@ static int virtio_gpu_save(QEMUFile *f, void *opaque,= size_t size, } qemu_put_be32(f, 0); /* end of list */ =20 - return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL); + return vmstate_save_state(f, &vmstate_virtio_gpu_scanouts, g, NULL, + &error_warn); } =20 static bool virtio_gpu_load_restore_mapping(VirtIOGPU *g, diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 80545189980f176ca6a3dc9abce7043c8bc2708c..f7fb3931ff190c25ffa665ba80a= be7737dbefdb6 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -926,7 +926,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) * This makes us compatible with old devices * which never set or clear this bit. */ s->config[PCI_STATUS] &=3D ~PCI_STATUS_INTERRUPT; - vmstate_save_state(f, &vmstate_pci_device, s, NULL); + vmstate_save_state(f, &vmstate_pci_device, s, NULL, &error_warn); /* Restore the interrupt status bit. */ pci_update_irq_status(s); } diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index bafcb9b76d81749925e31b5a0a1320b3332ad2cf..14304fd3e8901d28a7788266df2= c7ef7334b691c 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1130,7 +1130,7 @@ static int virtio_ccw_load_queue(DeviceState *d, int = n, QEMUFile *f) static void virtio_ccw_save_config(DeviceState *d, QEMUFile *f) { VirtioCcwDevice *dev =3D VIRTIO_CCW_DEVICE(d); - vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL); + vmstate_save_state(f, &vmstate_virtio_ccw_dev, dev, NULL, &error_warn); } =20 static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f) diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index a4812afd0cc7c495080ef03a531c7d279af29b33..2204beb40c7cdc827db2bf86fb8= 612d8c09999ed 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -630,7 +630,7 @@ static void vscsi_save_request(QEMUFile *f, SCSIRequest= *sreq) vscsi_req *req =3D sreq->hba_private; assert(req->active); =20 - vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL); + vmstate_save_state(f, &vmstate_spapr_vscsi_req, req, NULL, &error_warn= ); =20 trace_spapr_vscsi_save_request(req->qtag, req->cur_desc_num, req->cur_desc_offset); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 04d385d7674f444844beeee7364ee0424f762758..8e2b6d611de8efdf98235355226= f5e5a6fd87b19 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2780,8 +2780,8 @@ static int vfio_pci_save_config(VFIODevice *vbasedev,= QEMUFile *f, Error **errp) { VFIOPCIDevice *vdev =3D container_of(vbasedev, VFIOPCIDevice, vbasedev= ); =20 - return vmstate_save_state_with_err(f, &vmstate_vfio_pci_config, vdev, = NULL, - errp); + return vmstate_save_state(f, &vmstate_vfio_pci_config, vdev, NULL, + errp); } =20 static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f) diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index f14f0487fec3ed30d2cc3aec96950c2121265716..58957990743f061e78d0eafcfcb= 6cc5989252edc 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -613,7 +613,7 @@ static void virtio_mmio_save_extra_state(DeviceState *o= paque, QEMUFile *f) { VirtIOMMIOProxy *proxy =3D VIRTIO_MMIO(opaque); =20 - vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL, &error_warn); } =20 static int virtio_mmio_load_extra_state(DeviceState *opaque, QEMUFile *f) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 07f144d6d1bfbb561b28015de71762601080dc23..0826399cdfbf09b5b3f9acd9967= de3417858c9d2 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -154,7 +154,7 @@ static void virtio_pci_save_extra_state(DeviceState *d,= QEMUFile *f) { VirtIOPCIProxy *proxy =3D to_virtio_pci_proxy(d); =20 - vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL); + vmstate_save_state(f, &vmstate_virtio_pci, proxy, NULL, &error_warn); } =20 static int virtio_pci_load_extra_state(DeviceState *d, QEMUFile *f) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index aac317a93c3cd55ece9b0fd858c7b2459f8242f9..552e167529e9c22fb4cba2b445f= fad85fef619f3 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -3025,14 +3025,14 @@ int virtio_save(VirtIODevice *vdev, QEMUFile *f) } =20 if (vdc->vmsd) { - int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL); + int ret =3D vmstate_save_state(f, vdc->vmsd, vdev, NULL, &error_wa= rn); if (ret) { return ret; } } =20 /* Subsections */ - return vmstate_save_state(f, &vmstate_virtio, vdev, NULL); + return vmstate_save_state(f, &vmstate_virtio, vdev, NULL, &error_warn); } =20 /* A wrapper for use as a VMState .put function */ diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 056781b1c21e737583f081594d9f88b32adfd674..5fe9bbf39058d0cf97c1adab54c= c516dbe8dc32a 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -1198,8 +1198,6 @@ extern const VMStateInfo vmstate_info_qlist; int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, int version_id, Error **errp); int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc); -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc, Error **errp); int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, void *opaque, JSONWriter *vmdesc, diff --git a/migration/cpr.c b/migration/cpr.c index bdb24736f44e91ba59b6e622a315597c97e7f64d..d48f013dac21b531e41a26f4bb3= 3eefe32097757 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -163,6 +163,7 @@ bool cpr_is_incoming(void) =20 int cpr_state_save(MigrationChannel *channel, Error **errp) { + ERRP_GUARD(); int ret; QEMUFile *f; MigMode mode =3D migrate_mode(); @@ -182,9 +183,9 @@ int cpr_state_save(MigrationChannel *channel, Error **e= rrp) qemu_put_be32(f, QEMU_CPR_FILE_MAGIC); qemu_put_be32(f, QEMU_CPR_FILE_VERSION); =20 - ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0); + ret =3D vmstate_save_state(f, &vmstate_cpr_state, &cpr_state, 0, errp); if (ret) { - error_setg(errp, "vmstate_save_state error %d", ret); + error_prepend(errp, "vmstate_save_state error %d: ", ret); qemu_fclose(f); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index 4df50fb5c674e56c0173c357c1e23367373e2114..3cb9c34efb22fdcb2b05cf1fefc= b6fbd80cadca5 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1056,8 +1056,8 @@ static int vmstate_save(QEMUFile *f, SaveStateEntry *= se, JSONWriter *vmdesc, if (!se->vmsd) { vmstate_save_old_style(f, se, vmdesc); } else { - ret =3D vmstate_save_state_with_err(f, se->vmsd, se->opaque, vmdes= c, - errp); + ret =3D vmstate_save_state(f, se->vmsd, se->opaque, vmdesc, + errp); if (ret) { return ret; } @@ -1303,7 +1303,8 @@ void qemu_savevm_state_header(QEMUFile *f) json_writer_start_object(vmdesc, "configuration"); } =20 - vmstate_save_state(f, &vmstate_configuration, &savevm_state, vmdes= c); + vmstate_save_state(f, &vmstate_configuration, &savevm_state, vmdes= c, + &error_warn); =20 if (vmdesc) { json_writer_end_object(vmdesc); diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index e2020a733d0921d748b6f832a193e5de8d302d5f..2b88dc145ab32072f09845cee95= b79aad7ac3cb2 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -564,7 +564,7 @@ static int put_tmp(QEMUFile *f, void *pv, size_t size, =20 /* Writes the parent field which is at the start of the tmp */ *(void **)tmp =3D pv; - ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc); + ret =3D vmstate_save_state(f, vmsd, tmp, vmdesc, &error_warn); g_free(tmp); =20 return ret; @@ -675,7 +675,7 @@ static int put_qtailq(QEMUFile *f, void *pv, size_t unu= sed_size, =20 QTAILQ_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &error_warn); if (ret) { return ret; } @@ -712,7 +712,8 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, gpointer data) if (!capsule->key_vmsd) { qemu_put_be64(f, (uint64_t)(uintptr_t)(key)); /* direct key */ } else { - ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc); + ret =3D vmstate_save_state(f, capsule->key_vmsd, key, capsule->vmd= esc, + &error_warn); if (ret) { capsule->ret =3D ret; return true; @@ -720,7 +721,8 @@ static gboolean put_gtree_elem(gpointer key, gpointer v= alue, gpointer data) } =20 /* put the data */ - ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c); + ret =3D vmstate_save_state(f, capsule->val_vmsd, value, capsule->vmdes= c, + &error_warn); if (ret) { capsule->ret =3D ret; return true; @@ -856,7 +858,7 @@ static int put_qlist(QEMUFile *f, void *pv, size_t unus= ed_size, trace_put_qlist(field->name, vmsd->name, vmsd->version_id); QLIST_RAW_FOREACH(elm, pv, entry_offset) { qemu_put_byte(f, true); - ret =3D vmstate_save_state(f, vmsd, elm, vmdesc); + ret =3D vmstate_save_state(f, vmsd, elm, vmdesc, &error_warn); if (ret) { error_report("%s: failed to save %s (%d)", field->name, vmsd->name, ret); diff --git a/migration/vmstate.c b/migration/vmstate.c index ef78a1e62ad92e9608de72d125da80ea496c8dd1..569e66ea983f833e6a0d651d2a7= 51f34a64e8f5c 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -403,12 +403,6 @@ bool vmstate_section_needed(const VMStateDescription *= vmsd, void *opaque) =20 =20 int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, - void *opaque, JSONWriter *vmdesc_id) -{ - return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, NULL); -} - -int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vms= d, void *opaque, JSONWriter *vmdesc_id, Error **errp) { return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_= id, errp); @@ -530,7 +524,7 @@ static int vmstate_save_dispatch(QEMUFile *f, =20 if (inner_field->flags & VMS_STRUCT) { ret =3D vmstate_save_state(f, inner_field->vmsd, - curr_elem, vmdesc_loop); + curr_elem, vmdesc_loop, errp); } else if (inner_field->flags & VMS_VSTRUCT) { ret =3D vmstate_save_state_v(f, inner_field->vmsd, curr_elem, vmdesc_loop, @@ -539,6 +533,10 @@ static int vmstate_save_dispatch(QEMUFile *f, } else { ret =3D inner_field->info->put(f, curr_elem, size, inner_field, vmdesc_loop); + if (ret) { + error_setg(errp, "Save of field %s failed", + inner_field->name); + } } =20 written_bytes =3D qemu_file_transferred(f) - old_offset; @@ -551,8 +549,8 @@ static int vmstate_save_dispatch(QEMUFile *f, } =20 if (ret) { - error_setg(errp, "Save of field %s/%s failed", - vmsd->name, field->name); + error_prepend(errp, "Save of field %s/%s failed: ", + vmsd->name, field->name); ps_ret =3D post_save_dispatch(vmsd, opaque, &local_err= ); if (ps_ret) { ret =3D ps_ret; @@ -723,7 +721,7 @@ static int vmstate_subsection_save(QEMUFile *f, const V= MStateDescription *vmsd, qemu_put_byte(f, len); qemu_put_buffer(f, (uint8_t *)vmsdsub->name, len); qemu_put_be32(f, vmsdsub->version_id); - ret =3D vmstate_save_state_with_err(f, vmsdsub, opaque, vmdesc= , errp); + ret =3D vmstate_save_state(f, vmsdsub, opaque, vmdesc, errp); if (ret) { return ret; } diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 807deb3531f3079864ac99567d4dece7122571dd..5f31ed4b6969c4ebf72b298f965= bcbdc752ff87f 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -69,7 +69,7 @@ static void save_vmstate(const VMStateDescription *desc, = void *obj) QEMUFile *f =3D open_test_file(true); =20 /* Save file with vmstate */ - int ret =3D vmstate_save_state(f, desc, obj, NULL); + int ret =3D vmstate_save_state(f, desc, obj, NULL, &error_warn); g_assert(!ret); qemu_put_byte(f, QEMU_VM_EOF); g_assert(!qemu_file_get_error(f)); @@ -429,7 +429,8 @@ static void test_save_noskip(void) QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D false }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &error_warn); g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 @@ -451,7 +452,8 @@ static void test_save_skip(void) QEMUFile *fsave =3D open_test_file(true); TestStruct obj =3D { .a =3D 1, .b =3D 2, .c =3D 3, .d =3D 4, .e =3D 5,= .f =3D 6, .skip_c_e =3D true }; - int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL); + int ret =3D vmstate_save_state(fsave, &vmstate_skipping, &obj, NULL, + &error_warn); g_assert(!ret); g_assert(!qemu_file_get_error(fsave)); =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index b9a22a689d9acfeafb862ae73308db6fbd52331e..e0fc7ff71468bfe667613853876= 53c742c375f05 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -992,7 +992,8 @@ static int put_cbinfo(QEMUFile *f, void *pv, size_t siz= e, } } =20 - return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc); + return vmstate_save_state(f, &vmstate_cbinfo_array, &cbinfo, vmdesc, + &error_warn); } =20 static int get_cbinfo(QEMUFile *f, void *pv, size_t size, --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754419028; cv=none; d=zohomail.com; s=zohoarc; b=bac7OfqyY3vLj8aO5hKhIDFr2f2zOjQqH4OpCdkBNK63vppHgMTj9ppasqAJyxp9CkbmFUrubyG9eIV9YeCGhu8ORcaudAnPnMm/1+YDYmBPriLBfznbput3I9cymCTfQ6Oqsik3qU4FRdhPqeRiO6EpZXTmBfnbKfn3zdYFaWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754419028; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rlIs+5oJLd8M5Nb7gR+6rl1imycCIonfLjvBTmqx+ps=; b=nH+5r96gb7zJCbxeEybcIHIdgHL73bl74WGe4G/tdLZclwGdT18k/D9gmzLkSkzJmsn9JCP//UgOIBnTJfrefktuvA8Q0QC+GU5aXXMdZjQqmJJ+DaO+7NJXfTnM1pD0D7mqwx6Noy5qfBhFxqYYpsumMtM65aV3cVmEY2i+0yI= 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= (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 1754419028756132.5842694590317; Tue, 5 Aug 2025 11:37:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMW5-0007Ae-8e; Tue, 05 Aug 2025 14:36:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUo-0002SN-Ag for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMS0-0004iF-27 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:31:53 -0400 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-241-WQ1rJ-0hOqyd2W145JFoLQ-1; Tue, 05 Aug 2025 14:31:48 -0400 Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b425a67c64bso85005a12.1 for ; Tue, 05 Aug 2025 11:31:48 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418711; 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=rlIs+5oJLd8M5Nb7gR+6rl1imycCIonfLjvBTmqx+ps=; b=B4dvIu3kwt7CMw4SPhxkOwCbZXElx8vLaV0fVZq3H8Cf2z9Q0KBHIR24QQU23eQfN6C1Uu Q1mStlxTYopgmXq6gAK5nao8Mql2E2uB2mehHhRnvh3JZrqu1gQb4Ky5Y+k2YDGKt8hK3p b3s897e1d2LXxjwH4GYfK69XWfIxpx0= X-MC-Unique: WQ1rJ-0hOqyd2W145JFoLQ-1 X-Mimecast-MFC-AGG-ID: WQ1rJ-0hOqyd2W145JFoLQ_1754418707 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418707; x=1755023507; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rlIs+5oJLd8M5Nb7gR+6rl1imycCIonfLjvBTmqx+ps=; b=qEmITnKAsujkRbtFAto/I2h7k/+3ytMvPA8sczOLzyvlj65OwtkUZP+PCWsvPyuH4o WhkLHZsT5J1fuLbADAIsvkNP/3Panpyg2Ya6abaasva7CAow3h9dM+Js0opS3uLjeTnj Cs+S0zO7ByHQMe3wffnKpiZokvXh5sr6ced7zDmXW9EFnMvUidRfQGVCn5O+sGcozSjZ 6U1xU2Kndz0REd3isJUGY5FIQ1AHWbgSxuiOVqCPOekAKlF3xJJAVSYpxzA5XUvM2i+I kUDC1hlgPJbxv3x2qutd/Q/EuPeJp8HeBqrnc75FWYRE4buef8toIRskwi12G0tadvbo IyBA== X-Gm-Message-State: AOJu0Yz/9yEyrRGWgJljkZ3iT1rBXFqeDHLHPX1MGsfUlL3TdlGRELSx XLpaq6biyfPkqf6x/ozWT5AgP+Iru/tzSG/Xj4MWuEYqnYQXbAOsax/f8NxMYfzA/7ji4O//Ka9 cFE1nASA5YcWn65pd1c1yQb1Uv17x6WQ/+qLE/bSPgDWgPwmHM+k3rc4V X-Gm-Gg: ASbGnctXnpCIeeQQmxXJm1+xeJjkfz/lXwrbWnh+B9OdRZ8Um5zmAbvJRBPM7Io5r1U RdGHFRrSapm8aA4POczqKZFRdUccucn+OzijYQ853uvy02MdYa9DVfxR1pqbYTjoao/Zgl8vj+n OFETKgrABLGXPdV3t7yBCJlXcatyEFy+eZFI5ZciD+D0/j0EKs5L9QrwFieNn7qqyeL3BcD6eRg vab0yofbmR/zmj7TVzXK7iARvAc0o/bYf80ZIbX0L8JMd6djwOYA1vkBj/3sM+ZGgXbc5conTmk NnvpCfyto8T1kvyWOTVyA0PbgcdAFiELuR6iRLdPe+7Lc9z0QA== X-Received: by 2002:a17:903:2451:b0:240:ac96:e054 with SMTP id d9443c01a7336-24288d93ae0mr63928985ad.23.1754418707024; Tue, 05 Aug 2025 11:31:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF+EvusuAD7Nz1pX9yL7gT1GAIxsawLlXQuSwuAygxjQw72BsDD3sp4xUI9FrzUEblX5w0w+A== X-Received: by 2002:a17:903:2451:b0:240:ac96:e054 with SMTP id d9443c01a7336-24288d93ae0mr63928535ad.23.1754418706543; Tue, 05 Aug 2025 11:31:46 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:33 +0530 Subject: [PATCH v9 26/27] migration: Add error-parameterized function variants in VMSD struct MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-26-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7155; i=armenon@redhat.com; h=from:subject:message-id; bh=E+HpMgoCIwt9wAj1MGaL/SXGMQu3dPj/x5uh9PXiny0=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX9m43OelYgLfuPmS9568qrRzyZSDYuuTWd03TWFcr zPX/LN5RykLgxgXg6yYIkvD1wDZpoDCiEjbl9dh5rAygQxh4OIUgIk8nsvIMGX2pegFgZxXDs86 /4p381TJ2SlMArYn7dui/k1ymPR65kFGht8x1iYTaqbtPbpVhmNBd0ldwYUbmu3yi240rvYR7PZ yZwIA X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754419029229116600 - We need to have good error reporting in the callbacks in VMStateDescription struct. Specifically pre_save, post_save, pre_load and post_load callbacks. - It is not possible to change these functions everywhere in one patch, therefore, we introduce a duplicate set of callbacks with Error object passed to them. - So, in this commit, we implement 'errp' variants of these callbacks, introducing an explicit Error object parameter. - This is a functional step towards transitioning the entire codebase to the new error-parameterized functions. - Deliberately called in mutual exclusion from their counterparts, to prevent conflicts during the transition. - New impls should preferentally use 'errp' variants of these methods, and existing impls incrementally converted. The variants without 'errp' are intended to be removed once all usage is converted. Signed-off-by: Arun Menon --- docs/devel/migration/main.rst | 24 ++++++++++++++++++++++++ include/migration/vmstate.h | 15 +++++++++++++++ migration/vmstate.c | 34 ++++++++++++++++++++++++++++++---- 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index 6493c1d2bca48a2fa34d92f6c0979c215c56b8d5..35bf5ae26c87f3c82964eb15618= be373ab5a41fc 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -444,6 +444,30 @@ The functions to do that are inside a vmstate definiti= on, and are called: This function is called after we save the state of one device (even upon failure, unless the call to pre_save returned an error). =20 +Following are the errp variants of these functions. + +- ``int (*pre_load_errp)(void *opaque, Error **errp);`` + + This function is called before we load the state of one device. + +- ``int (*post_load_errp)(void *opaque, int version_id, Error **errp);`` + + This function is called after we load the state of one device. + +- ``int (*pre_save_errp)(void *opaque, Error **errp);`` + + This function is called before we save the state of one device. + +- ``int (*post_save_errp)(void *opaque, Error **errp);`` + + This function is called after we save the state of one device + (even upon failure, unless the call to pre_save returned an error). + +New impls should preferentally use 'errp' variants of these +methods and existing impls incrementally converted. +The variants without 'errp' are intended to be removed +once all usage is converted. + Example: You can look at hpet.c, that uses the first three functions to massage the state that is transferred. =20 diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 5fe9bbf39058d0cf97c1adab54cc516dbe8dc32a..51baf6c7f9d061ee33949d7e798= f2184e50b4cbf 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -200,15 +200,30 @@ struct VMStateDescription { * exclusive. For this reason, also early_setup VMSDs are migrated in a * QEMU_VM_SECTION_FULL section, while save_setup() data is migrated in * a QEMU_VM_SECTION_START section. + * + * There are duplicate impls of the post/pre save/load hooks. + * New impls should preferentally use 'errp' variants of these + * methods and existing impls incrementally converted. + * The variants without 'errp' are intended to be removed + * once all usage is converted. + * + * For the errp variants, + * Returns: 0 on success, + * <0 on error where -value is an error number from errno.h */ + bool early_setup; int version_id; int minimum_version_id; MigrationPriority priority; int (*pre_load)(void *opaque); + int (*pre_load_errp)(void *opaque, Error **errp); int (*post_load)(void *opaque, int version_id); + int (*post_load_errp)(void *opaque, int version_id, Error **errp); int (*pre_save)(void *opaque); + int (*pre_save_errp)(void *opaque, Error **errp); int (*post_save)(void *opaque); + int (*post_save_errp)(void *opaque, Error **errp); bool (*needed)(void *opaque); bool (*dev_unplug_pending)(void *opaque); =20 diff --git a/migration/vmstate.c b/migration/vmstate.c index 569e66ea983f833e6a0d651d2a751f34a64e8f5c..0acaa855cfec8ddac63e33d4562= e39c345856213 100644 --- a/migration/vmstate.c +++ b/migration/vmstate.c @@ -152,7 +152,16 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); return -EINVAL; } - if (vmsd->pre_load) { + if (vmsd->pre_load_errp) { + ret =3D vmsd->pre_load_errp(opaque, errp); + if (ret) { + error_prepend(errp, "VM pre load failed for: '%s', " + "version_id: %d, minimum version_id: %d, " + "ret: %d: ", vmsd->name, vmsd->version_id, + vmsd->minimum_version_id, ret); + return ret; + } + } else if (vmsd->pre_load) { ret =3D vmsd->pre_load(opaque); if (ret) { error_setg(errp, "VM pre load failed for: '%s', " @@ -242,7 +251,14 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescr= iption *vmsd, qemu_file_set_error(f, ret); return ret; } - if (vmsd->post_load) { + if (vmsd->post_load_errp) { + ret =3D vmsd->post_load_errp(opaque, version_id, errp); + if (ret < 0) { + error_prepend(errp, "VM Post load failed for: %s, version_id: = %d, " + "minimum_version: %d, ret: %d: ", vmsd->name, + vmsd->version_id, vmsd->minimum_version_id, ret); + } + } else if (vmsd->post_load) { ret =3D vmsd->post_load(opaque, version_id); if (ret < 0) { error_setg(errp, @@ -411,8 +427,16 @@ int vmstate_save_state(QEMUFile *f, const VMStateDescr= iption *vmsd, static int pre_save_dispatch(const VMStateDescription *vmsd, void *opaque, Error **errp) { + ERRP_GUARD(); int ret =3D 0; - if (vmsd->pre_save) { + if (vmsd->pre_save_errp) { + ret =3D vmsd->pre_save_errp(opaque, errp); + trace_vmstate_save_state_pre_save_res(vmsd->name, ret); + if (ret) { + error_prepend(errp, "pre-save for %s failed, ret: %d: ", + vmsd->name, ret); + } + } else if (vmsd->pre_save) { ret =3D vmsd->pre_save(opaque); trace_vmstate_save_state_pre_save_res(vmsd->name, ret); if (ret) { @@ -427,7 +451,9 @@ static int post_save_dispatch(const VMStateDescription = *vmsd, void *opaque, Error **errp) { int ret =3D 0; - if (vmsd->post_save) { + if (vmsd->post_save_errp) { + ret =3D vmsd->post_save_errp(opaque, errp); + } else if (vmsd->post_save) { ret =3D vmsd->post_save(opaque); error_setg(errp, "post-save for %s failed, ret: %d", vmsd->name, ret); --=20 2.50.1 From nobody Mon Dec 15 11:27:05 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1754418939; cv=none; d=zohomail.com; s=zohoarc; b=BYMioRSipCP2xmoaBFjvApnhSKHOal7EZPXaz7Kw2xgPHh/4E4beQgH40MEr4nzbVKatrdgouSprnrNrwd8ZhPdut8FQsHK4F056d80KXhLEo0gXJUgf12CFMoIh3VvBvBRK9kavVbviuHFDHFIR/VFyPFg7ty8u+o1fj7v/3oc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754418939; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=ez96UFXhP7LsmXuLAlnNLdDdFdHOYi3CFCVuDXdriGTamcDUTbNt7Qgl2DC1s46TPDMWSQndet1vfhnv8Gtb2xtFidIEjgciZNT5mJbKOeqdnZ+tqizAXGg+jaGsh6mcpuJc4bo+fUG4y3mIIPMYxRsCwgDIgk80BP4PL4X5QW8= 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= (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 175441893997979.08528810178677; Tue, 5 Aug 2025 11:35:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujMVY-00066y-SP; Tue, 05 Aug 2025 14:35:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMUf-0002SN-OU for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:34:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujMS9-0004j4-2o for qemu-devel@nongnu.org; Tue, 05 Aug 2025 14:32:04 -0400 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-Ey3ysf22MXuVbAqzVsGqng-1; Tue, 05 Aug 2025 14:31:59 -0400 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-23fed1492f6so87980195ad.2 for ; Tue, 05 Aug 2025 11:31:58 -0700 (PDT) Received: from armenon-kvm.bengluru.csb ([49.36.99.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1f0e585sm139200115ad.40.2025.08.05.11.31.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 11:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754418720; 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=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=VI8BbSF29Y8UQpQg7Rb/jpGROsPaOq4J0m16EAm94hBMtcrxK+BMGm9zflxAG83Nsk43Ax Z6gnwVDze20w5yoCSexIq4OiPKBDJ4bxZ5ciZF1vj/dferx8qzRAlzYof2Gn33XQZsnZFc 1rL0A3EcJrL0YWoMJyZkKe//7SUUQxg= X-MC-Unique: Ey3ysf22MXuVbAqzVsGqng-1 X-Mimecast-MFC-AGG-ID: Ey3ysf22MXuVbAqzVsGqng_1754418717 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754418717; x=1755023517; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IrmyOFbIa0k81LCSi2crfagyGp2pAVLdS4CCVD46SsM=; b=LKADQrQp9lc8ALg0sH4pqdLZ/dtkJfDsOCibXa7RE6p0IsLozhy7f/mj3zvKCBnigJ bJlQHZLZ4LV+hR/cUXDKbs0Ci8uXwE64BE+JgJbPk637LTxEx/XyYZm6aV0bMNdp4PBu Idean48VMy9k9BHaAmz/oo7MDEUHRW3jOiI/n+jdYtNqf4QxOzd490mcXeFswCK0Wwp9 ww9hUoGoVpvv1dO7mT3d+nQix9XLEdRZXEn2YzfW64kcWmw30eIAyNHRy+8KusVsa3Pe wKKX0b6c6r3D+FkYt34K0BKyRvRoUVh5QoW83fug6GKelCmfCxUl+nM4UNGHvLfuPtx1 e4lw== X-Gm-Message-State: AOJu0YzeNI3wQr3nzJZ/Z8o09Ul5Tjj7xryXmx45J9Wm3FdTUGhx9J4Y sPb67TxN0yzuTtX6orG8CMYokLprlbsbfha3BcwjEtar1MDKW4Vja/p5lu3csU+w4B3QOqLpN3Z miRtRkVVK5ks3jrB7RONqzcB+AgHYvD8jo8hHikN/lzb/lu56BQn7NJqy X-Gm-Gg: ASbGncszinsHqnOYIF1ts53aM7s6yKjc/3jPE+OedweCWH8p6kLWkCdcO1duRAvBVHe ZmgGs8Cx8Aa49isWaTZcue35+g1H2y00sZo8HaC5sqLY2VjvEu34E94T545pWsy20lSpuIiY4YJ iLG9ZF+NivRZ/3sAcpL8LJDIfcDf/8ngXnMB/Uq8+Foh1svw44XYxJQppGpCFRyEeN2zS57RCTr 2HH1b5zBA/Nztu1OQSEnOwaFcRe7elFt3+fG0K+XiwYlg+EDVHbFDs0Fkj7sIzvBw3Xl4PHzF1p RFo6asDo9U98G6TG80tVS6RwpnPaovq51Pd0NhFnYtE2bjTN/g== X-Received: by 2002:a17:902:ebd1:b0:234:d679:72e9 with SMTP id d9443c01a7336-2429f1dbd61mr1605175ad.12.1754418717082; Tue, 05 Aug 2025 11:31:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHkEnPwXt4F0PjqUW0gxc4siWVnwOGpvW2ZF0yoZWuEkI5SWYloSLwYPzSP6yX0UF0jzOtTDg== X-Received: by 2002:a17:902:ebd1:b0:234:d679:72e9 with SMTP id d9443c01a7336-2429f1dbd61mr1604625ad.12.1754418716620; Tue, 05 Aug 2025 11:31:56 -0700 (PDT) From: Arun Menon Date: Tue, 05 Aug 2025 23:55:34 +0530 Subject: [PATCH v9 27/27] backends/tpm: Propagate vTPM error on migration failure MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250805-propagate_tpm_error-v9-27-123450810db7@redhat.com> References: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> In-Reply-To: <20250805-propagate_tpm_error-v9-0-123450810db7@redhat.com> To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?utf-8?q?Alex_Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Halil Pasic , Eric Farman , Thomas Huth , Christian Borntraeger , Matthew Rosato , Richard Henderson , David Hildenbrand , Ilya Leoshkevich , Nicholas Piggin , Harsh Prateek Bora , Paolo Bonzini , Fam Zheng , Alex Williamson , =?utf-8?q?C=C3=A9dric_Le_Goater?= , Steve Sistare , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Hailiang Zhang , Stefan Berger , Arun Menon , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Stefan Berger X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6695; i=armenon@redhat.com; h=from:subject:message-id; bh=qkfEA7ojmGiLCP4BOBgR+X9tFhQoPaG7uEYFJBJjL/Q=; b=owGbwMvMwCWWVaVqcZPfqI/xtFoSQ8YkX9njzw/nXVc2u7Cx6mFWQ3eXUSfLbfnzMjL7mPoOJ xZZhh7uKGVhEONikBVTZGn4GiDbFFAYEWn78jrMHFYmkCEMXJwCMJGnexgZnqtcfrFgBttqpeO8 T2IP1hfNm93+R/JElnWhcJfPaw6DKEaG492vZz2Qys89Vsy84tNvKz5TvknP+trPi3cb2no6fg1 gAAA= X-Developer-Key: i=armenon@redhat.com; a=openpgp; fpr=80F5501D82507158593DE9D76A7A2538D90F328E 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=170.10.129.124; envelope-from=armenon@redhat.com; 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1754418942126116600 - When migration of a VM with encrypted vTPM fails on the destination host, (e.g., due to a mismatch in secret values), the error message displayed on the source host is generic and unhelpful. - For example, a typical error looks like this: "operation failed: job 'migration out' failed: Sibling indicated error 1. operation failed: job 'migration in' failed: load of migration failed: Input/output error" - Such generic errors are logged using error_report(), which prints to the console/monitor but does not make the detailed error accessible via the QMP query-migrate command. - This change, along with the set of changes of passing errp Error object to the VM state loading functions, help in addressing the issue. We use the post_load_errp hook of VMStateDescription to propagate errors by setting Error **errp objects in case of failure in the TPM backend. - It can then be retrieved using QMP command: {"execute" : "query-migrate"} Buglink: https://issues.redhat.com/browse/RHEL-82826 Reviewed-by: Stefan Berger Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Arun Menon --- backends/tpm/tpm_emulator.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 4a234ab2c0b19b2604bf0dd8cb5f4540c72a9438..dacfca5ab7eb0445ddc1ced9751= 3068501b468bf 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -819,7 +819,8 @@ static int tpm_emulator_get_state_blobs(TPMEmulator *tp= m_emu) static int tpm_emulator_set_state_blob(TPMEmulator *tpm_emu, uint32_t type, TPMSizedBuffer *tsb, - uint32_t flags) + uint32_t flags, + Error **errp) { ssize_t n; ptm_setstate pss; @@ -838,17 +839,18 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, /* write the header only */ if (tpm_emulator_ctrlcmd(tpm_emu, CMD_SET_STATEBLOB, &pss, offsetof(ptm_setstate, u.req.data), 0, 0) < 0= ) { - error_report("tpm-emulator: could not set state blob type %d : %s", - type, strerror(errno)); + error_setg_errno(errp, errno, + "tpm-emulator: could not set state blob type %d", + type); return -1; } =20 /* now the body */ n =3D qemu_chr_fe_write_all(&tpm_emu->ctrl_chr, tsb->buffer, tsb->size= ); if (n !=3D tsb->size) { - error_report("tpm-emulator: Writing the stateblob (type %d) " - "failed; could not write %u bytes, but only %zd", - type, tsb->size, n); + error_setg(errp, "tpm-emulator: Writing the stateblob (type %d) " + "failed; could not write %u bytes, but only %zd", + type, tsb->size, n); return -1; } =20 @@ -856,17 +858,17 @@ static int tpm_emulator_set_state_blob(TPMEmulator *t= pm_emu, n =3D qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, (uint8_t *)&pss, sizeof(pss.u.resp)); if (n !=3D sizeof(pss.u.resp)) { - error_report("tpm-emulator: Reading response from writing stateblo= b " - "(type %d) failed; expected %zu bytes, got %zd", type, - sizeof(pss.u.resp), n); + error_setg(errp, "tpm-emulator: Reading response from writing " + "stateblob (type %d) failed; expected %zu bytes, " + "got %zd", type, sizeof(pss.u.resp), n); return -1; } =20 tpm_result =3D be32_to_cpu(pss.u.resp.tpm_result); if (tpm_result !=3D 0) { - error_report("tpm-emulator: Setting the stateblob (type %d) failed= " - "with a TPM error 0x%x %s", type, tpm_result, - tpm_emulator_strerror(tpm_result)); + error_setg(errp, "tpm-emulator: Setting the stateblob (type %d) " + "failed with a TPM error 0x%x %s", type, tpm_result, + tpm_emulator_strerror(tpm_result)); return -1; } =20 @@ -880,7 +882,7 @@ static int tpm_emulator_set_state_blob(TPMEmulator *tpm= _emu, * * Returns a negative errno code in case of error. */ -static int tpm_emulator_set_state_blobs(TPMBackend *tb) +static int tpm_emulator_set_state_blobs(TPMBackend *tb, Error **errp) { TPMEmulator *tpm_emu =3D TPM_EMULATOR(tb); TPMBlobBuffers *state_blobs =3D &tpm_emu->state_blobs; @@ -894,13 +896,13 @@ static int tpm_emulator_set_state_blobs(TPMBackend *t= b) =20 if (tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT, &state_blobs->permanent, - state_blobs->permanent_flags) < 0 || + state_blobs->permanent_flags, errp) < = 0 || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE, &state_blobs->volatil, - state_blobs->volatil_flags) < 0 || + state_blobs->volatil_flags, errp) < 0 = || tpm_emulator_set_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE, &state_blobs->savestate, - state_blobs->savestate_flags) < 0) { + state_blobs->savestate_flags, errp) < = 0) { return -EIO; } =20 @@ -948,12 +950,12 @@ static void tpm_emulator_vm_state_change(void *opaque= , bool running, * * Returns negative errno codes in case of error. */ -static int tpm_emulator_post_load(void *opaque, int version_id) +static int tpm_emulator_post_load(void *opaque, int version_id, Error **er= rp) { TPMBackend *tb =3D opaque; int ret; =20 - ret =3D tpm_emulator_set_state_blobs(tb); + ret =3D tpm_emulator_set_state_blobs(tb, errp); if (ret < 0) { return ret; } @@ -969,7 +971,7 @@ static const VMStateDescription vmstate_tpm_emulator = =3D { .name =3D "tpm-emulator", .version_id =3D 0, .pre_save =3D tpm_emulator_pre_save, - .post_load =3D tpm_emulator_post_load, + .post_load_errp =3D tpm_emulator_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(state_blobs.permanent_flags, TPMEmulator), VMSTATE_UINT32(state_blobs.permanent.size, TPMEmulator), --=20 2.50.1