From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344438; cv=none; d=zohomail.com; s=zohoarc; b=Q807nw4MLPuYWRMWayqDbjvS4U1Hm8YwwFHLFqQbcJJ6bZWOk9WtjgtclbxglLw66l3v2xzeTAN/Ht6OOF9MN++Rn2Z88t4XRxWQC1EQvVWRnWKxqqhECLelRbepI87vbMCnDfDHRcOxPyBUVTraGMuZct9Ioo4Oa9NtfA89Nts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344438; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=npu6QCAVO0+Gg1boHLcX4oRJpIURmt5HZFLHhVTQCBE=; b=hd3tH5p2SMonXp5fujqSR3hNA4Oazxudy8YVoH8RrSMpPfcmFwXXyoz4ag0g1V0cFtX7spjlF0XX9OKiUTxajbcFQMyDDKvc4TqX1tYXxPGrcg36ryGKtPjaBgWGlW5SpR83DeZHL8hpofQpASGLVDxwuYUO7hCouMe1Ba2Q3MA= 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 164034443763968.22444428394442; Fri, 24 Dec 2021 03:13:57 -0800 (PST) Received: from localhost ([::1]:39006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0iWK-0003pr-PQ for importer@patchew.org; Fri, 24 Dec 2021 06:13:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36180) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUP-00018Y-GF for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from relay.sw.ru ([185.231.240.75]:48192) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUM-0003OU-5B for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:57 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUG-004OwN-VJ; Fri, 24 Dec 2021 14:11:48 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=npu6QCAVO0+Gg1boHLcX4oRJpIURmt5HZFLHhVTQCBE=; b=Y7e+mrjlXHs2 U4PWuA+kcxEkAzWb7sSeivDeTC6l1S2b+TOJwW2Tt2bxPj1JOJStQairQqo08OHVBK7VrODR6Bqvb VmALtQHtWyVgfwSj3AXm1wBR5w7cCrQWmCZYyHFq+khFQGWFZQD+rjIloFGaKWDL0Y+CGmDVNi9KN 4vxLA=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 1/6] migration: is_ram changed to is_iterable Date: Fri, 24 Dec 2021 14:11:43 +0300 Message-Id: <20211224111148.345438-2-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640346234417000002 Content-Type: text/plain; charset="utf-8" For new migration capabilities upcoming we need to use something like is_ram for this purpose. This member of struction is true not only for RAM so it should be renamed. Signed-off-by: Nikita Lapshin Reviewed-by: Vladimir Sementsov-Ogievskiy --- migration/savevm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 0bef031acb..f90fdb2bdd 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -248,7 +248,7 @@ typedef struct SaveStateEntry { const VMStateDescription *vmsd; void *opaque; CompatEntry *compat; - int is_ram; + int is_iterable; } SaveStateEntry; =20 typedef struct SaveState { @@ -797,9 +797,9 @@ int register_savevm_live(const char *idstr, se->ops =3D ops; se->opaque =3D opaque; se->vmsd =3D NULL; - /* if this is a live_savem then set is_ram */ + /* if this is a live_savem then set is_iterable */ if (ops->save_setup !=3D NULL) { - se->is_ram =3D 1; + se->is_iterable =3D 1; } =20 pstrcat(se->idstr, sizeof(se->idstr), idstr); @@ -1625,7 +1625,7 @@ int qemu_save_device_state(QEMUFile *f) QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { int ret; =20 - if (se->is_ram) { + if (se->is_iterable) { continue; } if ((!se->ops || !se->ops->save_state) && !se->vmsd) { @@ -2428,7 +2428,7 @@ qemu_loadvm_section_start_full(QEMUFile *f, Migration= IncomingState *mis) se->load_section_id =3D section_id; =20 /* Validate if it is a device's state */ - if (xen_enabled() && se->is_ram) { + if (xen_enabled() && se->is_iterable) { error_report("loadvm: %s RAM loading not allowed on Xen", idstr); return -EINVAL; } --=20 2.27.0 From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344437; cv=none; d=zohomail.com; s=zohoarc; b=Mi3w/tpaZDcI0QrAxGFvWMPFY0m9BwKP6pwo2di2t9bK+YG8fX6+Wb+WvqrJhCtP3QrwTvEbAyxQ/ucyC1wRpNQriAvA23tiwRl8gl8hMichY+zI8B33TFCzKSyCj2uQbIIP+Pz6YozyywYF7HULMrP4BStyhyr7+4U5T4GYzqY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344437; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=znwnfv7R77s7s4VebADjDiwiaRtlNq5ELCcua3CtUrQ=; b=EvOhUXc9h6vHuIgabmvLHVS0bHq6iGzxIeHXcID7r1nVtDFmS2zLYnYrFTK9nB+Rc+PsCO6QNT3xiL7meHR4ubLDHbof0NuhzT0t7dgqE2zYGpgveVF0rdZoJ2QAzODH7CyDknnHH/AyPdVi3xEGmdG+iaSGlEFCf+/V71AYBQA= 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 1640344437541201.4673556403461; Fri, 24 Dec 2021 03:13:57 -0800 (PST) Received: from localhost ([::1]:38996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0iWK-0003pW-Mp for importer@patchew.org; Fri, 24 Dec 2021 06:13:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUQ-00018a-TY for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from relay.sw.ru ([185.231.240.75]:48186) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUM-0003OV-7M for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:58 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUG-004OwN-Vr; Fri, 24 Dec 2021 14:11:48 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=znwnfv7R77s7s4VebADjDiwiaRtlNq5ELCcua3CtUrQ=; b=qgzxeCTchrPh Qe0CqYplG4RtpIdWr+if03+JT8Wq3O4zUoMXAf2owUmvkOSLKuN1wUS0vmItaneLLArrI6sinVxTM OfWyCUtFAiFMHP+M9kFwVyruX98BkMbChgRoop2kWeFyLZFmeo7q8QcFSfBD1Te8PMnLuAw2XK5tf 3NAVg=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 2/6] migration: should_skip() implemented Date: Fri, 24 Dec 2021 14:11:44 +0300 Message-Id: <20211224111148.345438-3-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640344561769000001 Content-Type: text/plain; charset="utf-8" For next changes it is convenient to make all decisions about sections skipping in one function. Signed-off-by: Nikita Lapshin Reviewed-by: Vladimir Sementsov-Ogievskiy --- migration/savevm.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index f90fdb2bdd..ba644083ab 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -943,6 +943,15 @@ static int vmstate_save(QEMUFile *f, SaveStateEntry *s= e, return vmstate_save_state(f, se->vmsd, se->opaque, vmdesc); } =20 +static bool should_skip(SaveStateEntry *se) +{ + if (se->ops->is_active && !se->ops->is_active(se->opaque)) { + return true; + } + + return false; +} + /* * Write the header for device section (QEMU_VM_SECTION START/END/PART/FUL= L) */ @@ -1207,10 +1216,8 @@ void qemu_savevm_state_setup(QEMUFile *f) if (!se->ops || !se->ops->save_setup) { continue; } - if (se->ops->is_active) { - if (!se->ops->is_active(se->opaque)) { - continue; - } + if (should_skip(se)) { + continue; } save_section_header(f, se, QEMU_VM_SECTION_START); =20 @@ -1238,10 +1245,8 @@ int qemu_savevm_state_resume_prepare(MigrationState = *s) if (!se->ops || !se->ops->resume_prepare) { continue; } - if (se->ops->is_active) { - if (!se->ops->is_active(se->opaque)) { - continue; - } + if (should_skip(se)) { + continue; } ret =3D se->ops->resume_prepare(s, se->opaque); if (ret < 0) { @@ -1268,8 +1273,7 @@ int qemu_savevm_state_iterate(QEMUFile *f, bool postc= opy) if (!se->ops || !se->ops->save_live_iterate) { continue; } - if (se->ops->is_active && - !se->ops->is_active(se->opaque)) { + if (should_skip(se)) { continue; } if (se->ops->is_active_iterate && @@ -1336,10 +1340,8 @@ void qemu_savevm_state_complete_postcopy(QEMUFile *f) if (!se->ops || !se->ops->save_live_complete_postcopy) { continue; } - if (se->ops->is_active) { - if (!se->ops->is_active(se->opaque)) { - continue; - } + if (should_skip(se)) { + continue; } trace_savevm_section_start(se->idstr, se->section_id); /* Section type */ @@ -1373,10 +1375,8 @@ int qemu_savevm_state_complete_precopy_iterable(QEMU= File *f, bool in_postcopy) continue; } =20 - if (se->ops->is_active) { - if (!se->ops->is_active(se->opaque)) { - continue; - } + if (should_skip(se)) { + continue; } trace_savevm_section_start(se->idstr, se->section_id); =20 @@ -1521,10 +1521,8 @@ void qemu_savevm_state_pending(QEMUFile *f, uint64_t= threshold_size, if (!se->ops || !se->ops->save_live_pending) { continue; } - if (se->ops->is_active) { - if (!se->ops->is_active(se->opaque)) { - continue; - } + if (should_skip(se)) { + continue; } se->ops->save_live_pending(f, se->opaque, threshold_size, res_precopy_only, res_compatible, --=20 2.27.0 From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344437; cv=none; d=zohomail.com; s=zohoarc; b=ZrtFCzILZZEYw1EzOaGDQtX5BYCPn4i2ut6Hw+l+wpiVnsqbLquW06DTg+3kcJ4mBC1T/18vdkzETrEYh9iutE8vVyxjwMKHJK68QO0FYbRRhldbi6C38u+J1nBA/d91/z4dpb4EorY5P5m6Vxwor9TTVuHYS+yGbEw2WkPFJLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344437; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Yee3Ax2klg8vh7BdC/9EFRNijNMHc9EKU3OOmfpV7Xc=; b=djSQzphenvKFY9d7eFLU0OIJxoSbel1UYId2rs8Z75XeRqEphTy1M7bc9V3NWbNJ1a40jIW7C7JuWtAlC2/EygyBKmExL5bifueIAaapYaXz4HPhzJwCJ58QAe3a34S99GPh43fgIzPOMFnMUgbip/I3x0MEV5s1tE9IKiOdq4c= 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 1640344437699628.1859895476714; Fri, 24 Dec 2021 03:13:57 -0800 (PST) Received: from localhost ([::1]:39074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0iWK-0003sV-FI for importer@patchew.org; Fri, 24 Dec 2021 06:13:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36182) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUP-00018Z-Rm for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from relay.sw.ru ([185.231.240.75]:48176) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUM-0003OR-7K for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:57 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUH-004OwN-0C; Fri, 24 Dec 2021 14:11:49 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=Yee3Ax2klg8vh7BdC/9EFRNijNMHc9EKU3OOmfpV7Xc=; b=JU+gPCBuBLpu Ypmg0/9zs0XS78HZmD1uJjps/QL+jrEqVVuJ5o+r65zIItXIqpGsZ+mGvAEEj3ZNz4bf8J9V5DjjI E6OA5JTUxwSADFcDRReEwO54EicjV5nsJUhQpc+oSm3cXxWUb1Qd1u2plY1g5p6gWfLh/dj7OhMZS ZYaPs=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 3/6] migration: Add no-ram capability Date: Fri, 24 Dec 2021 14:11:45 +0300 Message-Id: <20211224111148.345438-4-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640344561864000002 Content-Type: text/plain; charset="utf-8" This capability disable RAM section in migration stream. Signed-off-by: Nikita Lapshin Reviewed-by: Vladimir Sementsov-Ogievskiy --- migration/migration.c | 9 +++++++++ migration/migration.h | 1 + migration/ram.c | 6 ++++++ qapi/migration.json | 8 +++++--- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 3de11ae921..006447d00a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2610,6 +2610,15 @@ bool migrate_background_snapshot(void) return s->enabled_capabilities[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHO= T]; } =20 +bool migrate_no_ram(void) +{ + MigrationState *s; + + s =3D migrate_get_current(); + + return s->enabled_capabilities[MIGRATION_CAPABILITY_NO_RAM]; +} + /* migration thread support */ /* * Something bad happened to the RP stream, mark an error diff --git a/migration/migration.h b/migration/migration.h index 8130b703eb..43f7bf8eba 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -358,6 +358,7 @@ int migrate_decompress_threads(void); bool migrate_use_events(void); bool migrate_postcopy_blocktime(void); bool migrate_background_snapshot(void); +bool migrate_no_ram(void); =20 /* Sending on the return path - generic and then for each message type */ void migrate_send_rp_shut(MigrationIncomingState *mis, diff --git a/migration/ram.c b/migration/ram.c index 57efa67f20..aa3583d0bc 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -4339,6 +4339,11 @@ static int ram_resume_prepare(MigrationState *s, voi= d *opaque) return 0; } =20 +static bool ram_is_active(void* opaque) +{ + return !migrate_no_ram(); +} + static SaveVMHandlers savevm_ram_handlers =3D { .save_setup =3D ram_save_setup, .save_live_iterate =3D ram_save_iterate, @@ -4351,6 +4356,7 @@ static SaveVMHandlers savevm_ram_handlers =3D { .load_setup =3D ram_load_setup, .load_cleanup =3D ram_load_cleanup, .resume_prepare =3D ram_resume_prepare, + .is_active =3D ram_is_active, }; =20 static void ram_mig_ram_block_resized(RAMBlockNotifier *n, void *host, diff --git a/qapi/migration.json b/qapi/migration.json index bbfd48cf0b..d53956852c 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -452,6 +452,8 @@ # procedure starts. The VM RAM is saved with running= VM. # (since 6.0) # +# @no-ram: If enabled, migration stream won't contain any ram in it. (sinc= e 7.0) +# # Features: # @unstable: Members @x-colo and @x-ignore-shared are experimental. # @@ -465,8 +467,7 @@ 'block', 'return-path', 'pause-before-switchover', 'multifd', 'dirty-bitmaps', 'postcopy-blocktime', 'late-block-activate', { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] }, - 'validate-uuid', 'background-snapshot'] } - + 'validate-uuid', 'background-snapshot', 'no-ram'] } ## # @MigrationCapabilityStatus: # @@ -519,7 +520,8 @@ # {"state": false, "capability": "compress"}, # {"state": true, "capability": "events"}, # {"state": false, "capability": "postcopy-ram"}, -# {"state": false, "capability": "x-colo"} +# {"state": false, "capability": "x-colo"}, +# {"state": false, "capability": "no-ram"} # ]} # ## --=20 2.27.0 From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344667; cv=none; d=zohomail.com; s=zohoarc; b=LdibM+sYg3sOauW7DlEiId6KqqgHKIwNpqCwR6Pq3cAGNjrXVSE65upRLDmpwLlb6fohNd5Zjepncicegax5xLZzZ3gXjqWtrSBRFLA3XiisCf55NQhX+rYbcsGFb9MgfRJ26J9gNgBN9UbZLSMdUTUA4FxquCQaMmo7dGzf7lM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344667; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BCZPOz7PNvWKMmFA73SNdrDpoTzMi0IKzZ/uQSMBGGc=; b=O+G/RI1wL6KzlqtR3DbzC/5yzZOV7dZRoocFzL38OgJmNp8+Hd435wU3lOdLmiH8USXOMv0TWfI1m27NVitCXP6ekW707EPGmfV77WgbELW1UrJVEbKd0Ex1lrFzIy2QAChpvh7U7usoZuPSpQQI89dtUAUMNygbjoV+Xw1YHiI= 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 1640344667116504.70444742426616; Fri, 24 Dec 2021 03:17:47 -0800 (PST) Received: from localhost ([::1]:46970 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0ia2-0000zo-H4 for importer@patchew.org; Fri, 24 Dec 2021 06:17:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36148) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUO-00018W-IG for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:57 -0500 Received: from relay.sw.ru ([185.231.240.75]:48180) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUL-0003OP-OD for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:55 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUH-004OwN-2L; Fri, 24 Dec 2021 14:11:49 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=BCZPOz7PNvWKMmFA73SNdrDpoTzMi0IKzZ/uQSMBGGc=; b=efuiodMQD5EQ bv2+/SZNPv8WVruP/XBiYTQlfPHKot8Vbq6iOXkOeehXQwprIJRCbGPV2BU7LLvRgNsFXnWDqMWb3 GMnbj0GeYJ2kGoiroOyLq/7P6w8qsn22NnpSON9cX6EaZIgBQ+jLOpshRnDdjX/qvXG9TAfa98022 iaGzc=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 4/6] migration: Add ram-only capability Date: Fri, 24 Dec 2021 14:11:46 +0300 Message-Id: <20211224111148.345438-5-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640344788643000003 Content-Type: text/plain; charset="utf-8" If this capability is enabled migration stream will have RAM section only. Signed-off-by: Nikita Lapshin --- migration/migration.c | 20 +++++++++++++++++++- migration/migration.h | 1 + migration/savevm.c | 11 ++++++++++- qapi/migration.json | 7 +++++-- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 006447d00a..4d7ef9d8dc 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1257,6 +1257,14 @@ static bool migrate_caps_check(bool *cap_list, return false; } =20 + if (cap_list[MIGRATION_CAPABILITY_NO_RAM] && + cap_list[MIGRATION_CAPABILITY_RAM_ONLY]) { + error_setg(errp, "ram-only and no-ram aren't " + "compatible with each other"); + + return false; + } + return true; } =20 @@ -2619,6 +2627,15 @@ bool migrate_no_ram(void) return s->enabled_capabilities[MIGRATION_CAPABILITY_NO_RAM]; } =20 +bool migrate_ram_only(void) +{ + MigrationState *s; + + s =3D migrate_get_current(); + + return s->enabled_capabilities[MIGRATION_CAPABILITY_RAM_ONLY]; +} + /* migration thread support */ /* * Something bad happened to the RP stream, mark an error @@ -3973,7 +3990,8 @@ static void *bg_migration_thread(void *opaque) * save their state to channel-buffer along with devices. */ cpu_synchronize_all_states(); - if (qemu_savevm_state_complete_precopy_non_iterable(fb, false, false))= { + if (!migrate_ram_only() && + qemu_savevm_state_complete_precopy_non_iterable(fb, false, false))= { goto fail; } /* diff --git a/migration/migration.h b/migration/migration.h index 43f7bf8eba..d5a077e00d 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -359,6 +359,7 @@ bool migrate_use_events(void); bool migrate_postcopy_blocktime(void); bool migrate_background_snapshot(void); bool migrate_no_ram(void); +bool migrate_ram_only(void); =20 /* Sending on the return path - generic and then for each message type */ void migrate_send_rp_shut(MigrationIncomingState *mis, diff --git a/migration/savevm.c b/migration/savevm.c index ba644083ab..e41ca76000 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -249,6 +249,7 @@ typedef struct SaveStateEntry { void *opaque; CompatEntry *compat; int is_iterable; + bool is_ram; } SaveStateEntry; =20 typedef struct SaveState { @@ -802,6 +803,10 @@ int register_savevm_live(const char *idstr, se->is_iterable =3D 1; } =20 + if (!strcmp("ram", idstr)) { + se->is_ram =3D true; + } + pstrcat(se->idstr, sizeof(se->idstr), idstr); =20 if (instance_id =3D=3D VMSTATE_INSTANCE_ID_ANY) { @@ -949,6 +954,10 @@ static bool should_skip(SaveStateEntry *se) return true; } =20 + if (migrate_ram_only() && !se->is_ram) { + return true; + } + return false; } =20 @@ -1486,7 +1495,7 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, b= ool iterable_only, } } =20 - if (iterable_only) { + if (iterable_only || migrate_ram_only()) { goto flush; } =20 diff --git a/qapi/migration.json b/qapi/migration.json index d53956852c..626fc59d14 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -454,6 +454,8 @@ # # @no-ram: If enabled, migration stream won't contain any ram in it. (sinc= e 7.0) # +# @ram-only: If enabled, only RAM sections will be sent. (since 7.0) +# # Features: # @unstable: Members @x-colo and @x-ignore-shared are experimental. # @@ -467,7 +469,7 @@ 'block', 'return-path', 'pause-before-switchover', 'multifd', 'dirty-bitmaps', 'postcopy-blocktime', 'late-block-activate', { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] }, - 'validate-uuid', 'background-snapshot', 'no-ram'] } + 'validate-uuid', 'background-snapshot', 'no-ram', 'ram-only'] } ## # @MigrationCapabilityStatus: # @@ -521,7 +523,8 @@ # {"state": true, "capability": "events"}, # {"state": false, "capability": "postcopy-ram"}, # {"state": false, "capability": "x-colo"}, -# {"state": false, "capability": "no-ram"} +# {"state": false, "capability": "no-ram"}, +# {"state": false, "capability": "ram-only"} # ]} # ## --=20 2.27.0 From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344666; cv=none; d=zohomail.com; s=zohoarc; b=R8cwjt2SLThckn1SiIVUe8odQ5t5fnod6+PYkLsVpF9JqIMqJpEIfcmlb6FdL5ZvGvuybKNijY9hwFTOwS5ZQXi9GHLIc/cHHBoVk0CVvIw3llGC167ywHIXxqq2+lFfwvFmWO6TJLe8x1v5MncP/P7xHGjdea2NM4r0GixYcrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344666; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tCvifQSnLlWrMvmJBaFd5pcx1Ud1JDyXCYHoGHkKti8=; b=NvTFvoGsqLIm8Q/Eymv7IrYKOWvyBoDbM1WPHR5UnV7OmPy/TdWZ4h4OvyZlnbN21FQoVufjvlv/x1+JVATC9GqmH65Ag8cRg6i+y/QHJY9KT9qaSLVO0rPl2q+NoLIM2wouxj/MI0q2CSeXacRFwJbpus28knRQXmuWiZpzFfI= 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 1640344666650848.8649574711907; Fri, 24 Dec 2021 03:17:46 -0800 (PST) Received: from localhost ([::1]:46926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0ia1-0000xz-Uz for importer@patchew.org; Fri, 24 Dec 2021 06:17:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUP-00018X-Dx for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from relay.sw.ru ([185.231.240.75]:48188) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUL-0003OS-OA for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:57 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUH-004OwN-4E; Fri, 24 Dec 2021 14:11:49 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=tCvifQSnLlWrMvmJBaFd5pcx1Ud1JDyXCYHoGHkKti8=; b=sbjo1RF0rdJG g/gNAiiMrNvqf1SyBNOnNSL8n7+c2Tbav11SaTIGvQ2myuSiCo7f/L0os56GJ/JnSp+OCuJZ1A0pm bpsoJD3uTjLz3XZJOEOE6qRBlkYQqXPTDVQY9Ou6jLH4buR4I3DxCzZnJVv5tSvBI2ZdfLEp+5KND eHh40=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 5/6] migration: analyze-migration script changed Date: Fri, 24 Dec 2021 14:11:47 +0300 Message-Id: <20211224111148.345438-6-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640344788514000001 Content-Type: text/plain; charset="utf-8" This script is used for RAM capabilities test. But it cannot work in case of no vm description in migration stream. So new flag is added to allow work this script with ram-only migration stream. Signed-off-by: Nikita Lapshin --- scripts/analyze-migration.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py index b82a1b0c58..80077a09bc 100755 --- a/scripts/analyze-migration.py +++ b/scripts/analyze-migration.py @@ -495,7 +495,7 @@ def __init__(self, filename): self.filename =3D filename self.vmsd_desc =3D None =20 - def read(self, desc_only =3D False, dump_memory =3D False, write_memor= y =3D False): + def read(self, ram_only, desc_only =3D False, dump_memory =3D False, w= rite_memory =3D False): # Read in the whole file file =3D MigrationFile(self.filename) =20 @@ -509,7 +509,8 @@ def read(self, desc_only =3D False, dump_memory =3D Fal= se, write_memory =3D False): if data !=3D self.QEMU_VM_FILE_VERSION: raise Exception("Invalid version number %d" % data) =20 - self.load_vmsd_json(file) + if not ram_only: + self.load_vmsd_json(file) =20 # Read sections self.sections =3D collections.OrderedDict() @@ -518,7 +519,10 @@ def read(self, desc_only =3D False, dump_memory =3D Fa= lse, write_memory =3D False): return =20 ramargs =3D {} - ramargs['page_size'] =3D self.vmsd_desc['page_size'] + if ram_only: + ramargs['page_size'] =3D 4096 + else: + ramargs['page_size'] =3D self.vmsd_desc['page_size'] ramargs['dump_memory'] =3D dump_memory ramargs['write_memory'] =3D write_memory self.section_classes[('ram',0)][1] =3D ramargs @@ -579,6 +583,7 @@ def default(self, o): parser.add_argument("-m", "--memory", help=3D'dump RAM contents as well', = action=3D'store_true') parser.add_argument("-d", "--dump", help=3D'what to dump ("state" or "desc= ")', default=3D'state') parser.add_argument("-x", "--extract", help=3D'extract contents into indiv= idual files', action=3D'store_true') +parser.add_argument("--ram-only", help=3D'parse migration dump containing = only RAM', action=3D'store_true') args =3D parser.parse_args() =20 jsonenc =3D JSONEncoder(indent=3D4, separators=3D(',', ': ')) @@ -586,14 +591,14 @@ def default(self, o): if args.extract: dump =3D MigrationDump(args.file) =20 - dump.read(desc_only =3D True) + dump.read(desc_only =3D True, ram_only =3D args.ram_only) print("desc.json") f =3D open("desc.json", "w") f.truncate() f.write(jsonenc.encode(dump.vmsd_desc)) f.close() =20 - dump.read(write_memory =3D True) + dump.read(write_memory =3D True, ram_only =3D args.ram_only) dict =3D dump.getDict() print("state.json") f =3D open("state.json", "w") @@ -602,12 +607,12 @@ def default(self, o): f.close() elif args.dump =3D=3D "state": dump =3D MigrationDump(args.file) - dump.read(dump_memory =3D args.memory) + dump.read(dump_memory =3D args.memory, ram_only =3D args.ram_only) dict =3D dump.getDict() print(jsonenc.encode(dict)) elif args.dump =3D=3D "desc": dump =3D MigrationDump(args.file) - dump.read(desc_only =3D True) + dump.read(desc_only =3D True, ram_only =3D args.ram_only) print(jsonenc.encode(dump.vmsd_desc)) else: raise Exception("Please specify either -x, -d state or -d desc") --=20 2.27.0 From nobody Sun May 19 05:22:53 2024 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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1640344781; cv=none; d=zohomail.com; s=zohoarc; b=n4cRel602pWwvBUn5J/+z0ME3vn4ljVyoQU/t62zU/YiqwNoE3d7xU3CEut78romN7OTR1em026ge2ZwIg6Rb+IqpIVAvMwObM31Q754iv/Us4ZH1IYThZzvugQNKBPSJ70JVQxwpDknd58lScCbGyjKO92nWtvW2TtbHT3EHtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640344781; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JiHOn090187soNjUgeM1lAwziV2eS+k5CJ/SAjifh4I=; b=FF3P0xApPHKptm1FkjxdHw3ll9zAgl13VPPDuezD+vlwCaadAcRImuAQL0Y5I+Ql1QRbBVm3tEqOinXVM6M/w049cazxvfLLbPuxVV8qAwkJQzyQzD/ip+RS0WnUbXpwXzpxBoe83Gx9/Ydk6IAb3eea/aD9k2TqtKLjnd3QRuE= 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 1640344781584982.441835939608; Fri, 24 Dec 2021 03:19:41 -0800 (PST) Received: from localhost ([::1]:52222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n0ibs-0004Z7-GL for importer@patchew.org; Fri, 24 Dec 2021 06:19:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36202) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUR-00018b-AF for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from relay.sw.ru ([185.231.240.75]:48200) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n0iUM-0003OQ-6E for qemu-devel@nongnu.org; Fri, 24 Dec 2021 06:11:59 -0500 Received: from [10.94.3.117] (helo=nun.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1n0iUH-004OwN-67; Fri, 24 Dec 2021 14:11:49 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=JiHOn090187soNjUgeM1lAwziV2eS+k5CJ/SAjifh4I=; b=IXWhr1dABt7Z NDFHyvWGg+phUM4UArnIiMNRA1WbC2uAc6k0ftVyLoFpkaC1LvT1gpUWau5mbeOMX+PLAscV7+Y3Y REXV31+udxapZv36152+2lYXI1tj0xBi544pXsZWK8NkrKLPfQG97Jl6jMae3+xtu4CajKifqZkc2 gpzRQ=; From: Nikita Lapshin To: qemu-devel@nongnu.org Cc: quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, armbru@redhat.com, eduardo@habkost.net, crosa@redhat.com, kwolf@redhat.com, hreitz@redhat.com, nikita.lapshin@virtuozzo.com, vsementsov@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 6/6] migration: Test for ram capabilities Date: Fri, 24 Dec 2021 14:11:48 +0300 Message-Id: <20211224111148.345438-7-nikita.lapshin@virtuozzo.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> References: <20211224111148.345438-1-nikita.lapshin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=nikita.lapshin@virtuozzo.com; helo=relay.sw.ru 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1640344898227000001 Content-Type: text/plain; charset="utf-8" Use scripts/analyze-migration.py to split migration stream into sections and analyze its output. Signed-off-by: Nikita Lapshin --- .../tests/migrate-ram-capabilities-test | 96 +++++++++++++++++++ .../tests/migrate-ram-capabilities-test.out | 5 + 2 files changed, 101 insertions(+) create mode 100755 tests/qemu-iotests/tests/migrate-ram-capabilities-test create mode 100644 tests/qemu-iotests/tests/migrate-ram-capabilities-test.= out diff --git a/tests/qemu-iotests/tests/migrate-ram-capabilities-test b/tests= /qemu-iotests/tests/migrate-ram-capabilities-test new file mode 100755 index 0000000000..917f888340 --- /dev/null +++ b/tests/qemu-iotests/tests/migrate-ram-capabilities-test @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +# group: rw migration +# +# Tests for 'no-ram' and 'ram-only' capabilities +# +# Copyright (c) 2021 Virtuozzo International GmbH. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import os +import json +import subprocess +import iotests + +img =3D os.path.join(iotests.test_dir, 'disk.img') + +class TestRamCapabilities(iotests.QMPTestCase): + def setUp(self): + iotests.qemu_img('create', '-f', iotests.imgfmt, img, '10M') + self.vm =3D iotests.VM() + self.vm.launch() + self.vm.qmp('migrate-set-capabilities', capabilities=3D[ + { + 'capability': 'events', + 'state': True + } + ]) + + def tearDown(self): + self.vm.shutdown() + os.remove(img) + + def check_ram_only(self, output): + str_json =3D output.decode() + json_obj =3D json.loads(str_json) + + success =3D False + for key in json_obj: + self.assertTrue("ram" in key) + success =3D True + self.assertTrue(success) + + def run_migration(self, capability, tmp_stream): + self.vm.qmp('migrate-set-capabilities', capabilities=3D[ + { + 'capability': capability, + 'state': True + } + ]) + + self.vm.qmp('migrate', uri=3D'exec:cat>' + tmp_stream) + + while True: + event =3D self.vm.event_wait('MIGRATION') + + if event['data']['status'] =3D=3D 'completed': + break + + + def test_no_ram(self): + with iotests.FilePath('tmp_stream') as tmp_stream: + self.run_migration('no-ram', tmp_stream) + output =3D subprocess.run( + ['../../../scripts/analyze-migration.py', '-f', tmp_stream= ], + stdout=3Dsubprocess.PIPE, + stderr=3Dsubprocess.STDOUT, + check=3DFalse).stdout + + self.assertFalse('ram' in output.decode()) + + def test_ram_only(self): + with iotests.FilePath('tmp_stream') as tmp_stream: + self.run_migration('ram-only', tmp_stream) + output =3D subprocess.run( + ['../../../scripts/analyze-migration.py', '-f', tmp_stream, + '--ram-only'], + stdout=3Dsubprocess.PIPE, + stderr=3Dsubprocess.STDOUT, + check=3DFalse).stdout + + self.check_ram_only(output) + +if __name__ =3D=3D '__main__': + iotests.main(supported_protocols=3D['file']) diff --git a/tests/qemu-iotests/tests/migrate-ram-capabilities-test.out b/t= ests/qemu-iotests/tests/migrate-ram-capabilities-test.out new file mode 100644 index 0000000000..fbc63e62f8 --- /dev/null +++ b/tests/qemu-iotests/tests/migrate-ram-capabilities-test.out @@ -0,0 +1,5 @@ +.. +---------------------------------------------------------------------- +Ran 2 tests + +OK --=20 2.27.0