From nobody Fri Dec 19 20:17:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1739573455; cv=none; d=zohomail.com; s=zohoarc; b=NxtcXXfYMuaTseM3PSJHv3xTQPAfFEWwVU3q4a2hhHZv+bfhpJX/QELdeeLWjcGsT5Eexo3gzInNn0CislJz026EAFp8wBP35k6kcwm0SS+Xda/UZSaeGCO9NI5B/5utMu+dH93HU4Ed2+HDd2adT7Grc9lsxh/qwtZ6JsOeK8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739573455; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=yLFDXuB84ihXqz1S+5XGk9RV193i3Qp9f+SRCRprwfs=; b=QOHLK+mQnYdPAoC3iTcBWvff7GJA0TvmcQnk0fPYvPhFBcEDJoNxK9RhIIDbvBQckevj/0Olg13W0O1toQia8wObMCQ+9wFtRAXd+U+XA1OajH24RgmuDR+dT/KoUNAaJ8Yb1VohL7eYO847j++fKZlcQx027E2kbrNPDAYHjjY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739573454918316.2850932137294; Fri, 14 Feb 2025 14:50:54 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id CD0021C2B; Fri, 14 Feb 2025 17:50:53 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 76D3F1C4D; Fri, 14 Feb 2025 17:50:14 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9C5EE19DF; Fri, 14 Feb 2025 17:50:11 -0500 (EST) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 886BB19E0 for ; Fri, 14 Feb 2025 17:50:10 -0500 (EST) Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-38dc6d55ebaso2365143f8f.1 for ; Fri, 14 Feb 2025 14:50:10 -0800 (PST) Received: from localhost (75-169-8-111.slkc.qwest.net. [75.169.8.111]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-2fbf9ab01e1sm5684616a91.43.2025.02.14.14.50.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 14:50:09 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739573409; x=1740178209; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TcQS4Bv6lPsycjxNL0RN8AuYz7IC0aU+y1PPkVb7Q6g=; b=WoNEbzACppucTU5f29OWT9JluYrvfTAR9jJ+IBSIcRATw7gdSOPsL+ycMr8xNDBAr0 ORswStyaCDWJsz4G8fVdOMPm1zmKkn2tohdrE3ziFlxkIb+BDhxnRInXf9koUSHeC95K hj2B5s2Nm0Y9EE97wpWI9lTRpugR7Exxx3bqFV7LvUXZYBrzi6AJtvp4qxaXBdmDuCND TPkPrGBePzyExxYwFRCwOZrERSiJfvriW7fZFxRZSjxN4VfAdScJ2vhLNNqvpNYHM7Sh M0e+ds8cpOHZNiYsvF2/V8+TvU+yJiIcr9qad4kRbLzxb5HxIbzZZTy8dI3yizVhELLH HqSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739573409; x=1740178209; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TcQS4Bv6lPsycjxNL0RN8AuYz7IC0aU+y1PPkVb7Q6g=; b=kV0Zw7XnHhTVHGg4u1kX6WBcsB0d21ojW7cEH3WMupuUB1BYz/zd/2P+o0/rLwOfPo aMkMv5r9/yvzBZtBxV58KbSDpXgL+p9/+hiOTdCs/1/Sebj6KhRpO/BVZZV2WESQ8I5W TnMMBQyDJUlffVBqYUYF43rYl2p8/XrhzlHbbDaJVxUD/K61zzkWbN/QsThp4vgSDs9J 0zxQA9MIzOiMzj9Lvy0kD3fPKBvjxFEiO39zfhzf1RUHsFBmHsoxQ5FmcchcRdCum3lk KC3QrmRb+EuYV5vShI5G00aBucUGEw2NbPjw49HtOfpAOZObUwSGjuzuUs9Bpx5xLywp RJbg== X-Gm-Message-State: AOJu0YwsXuyMr4LiCJeLb/Z7kc9C3uwoqoyeehWXu0g3Ccq4zLO5kU4f DSq6vjpZqe8buGvEvqkQan8eUxon7JgxPC6cRxsEq4PzJ9mgdveuv4Nph0UMS8LZM/eaKqqJNc+ S X-Gm-Gg: ASbGncvIOksoLIFxqiazck/dshTKaPOzQK5V6+btpphM+dm+qkaBO1pT7R0fNq59xQ0 igQWBMCzuKXh3V5/Wtg/5jLCdIdcRC1RYBLXqTvjRoNg6Qp5rJmBP4O4+WT3DWdCGPHMH2JL6nE Le+TQ27AWNJsNdsmUHfoAWpyT6poKElZxSRFKOAjUq0yitS7kj0nTzZBqzQ7W7VFZMKQKUGgBrX cNaAKrYCgd+sQmvAK/JNVs2iEZzbuvE/FQPfo1DTZQTeCXhLN8LuHdqRHU9GoNOu0XMhwAPWXaV Ilf8HhybgjUnrVa94b9A65TUACPcDvF95A== X-Google-Smtp-Source: AGHT+IEql81Ytq3McT6U2LJSPdEjVuyQG5kq/BS+DPPA3+400IsNcSOi9jZgrK9tf6YVSXMbItSgug== X-Received: by 2002:a5d:5f4b:0:b0:38d:db2c:26be with SMTP id ffacd0b85a97d-38f24d10863mr12098692f8f.14.1739573409440; Fri, 14 Feb 2025 14:50:09 -0800 (PST) To: devel@lists.libvirt.org Subject: [PATCH 1/3] qemu: Move declaration of virQEMUSaveFormat to header file Date: Fri, 14 Feb 2025 15:48:16 -0700 Message-ID: <20250214225005.29753-2-jfehlig@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250214225005.29753-1-jfehlig@suse.com> References: <20250214225005.29753-1-jfehlig@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: X6RFT2CMUEH5WFXLMQWD4TTNOCCLR5T5 X-Message-ID-Hash: X6RFT2CMUEH5WFXLMQWD4TTNOCCLR5T5 X-MailFrom: jfehlig@suse.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Jim Fehlig via Devel Reply-To: Jim Fehlig X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739573457098019100 Content-Type: text/plain; charset="utf-8" Allow use of the enum outside of qemu_saveimage. Signed-off-by: Jim Fehlig Reviewed-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_saveimage.c | 19 ------------------- src/qemu/qemu_saveimage.h | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 5c889fee11..403e4c9679 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -37,25 +37,6 @@ =20 VIR_LOG_INIT("qemu.qemu_saveimage"); =20 -typedef enum { - QEMU_SAVE_FORMAT_RAW =3D 0, - QEMU_SAVE_FORMAT_GZIP =3D 1, - QEMU_SAVE_FORMAT_BZIP2 =3D 2, - /* - * Deprecated by xz and never used as part of a release - * QEMU_SAVE_FORMAT_LZMA - */ - QEMU_SAVE_FORMAT_XZ =3D 3, - QEMU_SAVE_FORMAT_LZOP =3D 4, - QEMU_SAVE_FORMAT_ZSTD =3D 5, - /* Note: add new members only at the end. - These values are used in the on-disk format. - Do not change or re-use numbers. */ - - QEMU_SAVE_FORMAT_LAST -} virQEMUSaveFormat; - -VIR_ENUM_DECL(qemuSaveFormat); VIR_ENUM_IMPL(qemuSaveFormat, QEMU_SAVE_FORMAT_LAST, "raw", diff --git a/src/qemu/qemu_saveimage.h b/src/qemu/qemu_saveimage.h index 53ae222467..8e755e1eb5 100644 --- a/src/qemu/qemu_saveimage.h +++ b/src/qemu/qemu_saveimage.h @@ -32,6 +32,25 @@ =20 G_STATIC_ASSERT(sizeof(QEMU_SAVE_MAGIC) =3D=3D sizeof(QEMU_SAVE_PARTIAL)); =20 +typedef enum { + QEMU_SAVE_FORMAT_RAW =3D 0, + QEMU_SAVE_FORMAT_GZIP =3D 1, + QEMU_SAVE_FORMAT_BZIP2 =3D 2, + /* + * Deprecated by xz and never used as part of a release + * QEMU_SAVE_FORMAT_LZMA + */ + QEMU_SAVE_FORMAT_XZ =3D 3, + QEMU_SAVE_FORMAT_LZOP =3D 4, + QEMU_SAVE_FORMAT_ZSTD =3D 5, + /* Note: add new members only at the end. + These values are used in the on-disk format. + Do not change or re-use numbers. */ + + QEMU_SAVE_FORMAT_LAST +} virQEMUSaveFormat; +VIR_ENUM_DECL(qemuSaveFormat); + typedef struct _virQEMUSaveHeader virQEMUSaveHeader; struct _virQEMUSaveHeader { char magic[sizeof(QEMU_SAVE_MAGIC)-1]; --=20 2.43.0 From nobody Fri Dec 19 20:17:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1739573493; cv=none; d=zohomail.com; s=zohoarc; b=ltx/hz6ZEJcQbju0ngLknaAtIPuKBCGP3Swh0oz3mEIrtqI4OYuDTRePC7+uXwxtHqo4Euc6gwZebCUm59kEi4NQJsIJQTUTGdc3Y0BKKIST7dfaZ5BpFHBVXTz0zDbLuDBosoSXzaSBBjfEXOn1KWTLoq3pFN5x9puCjRsmuiQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739573493; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=UVGjSkzrTvbPIazxWVpd9hLyrwfNZEKwarxDC7c84S4=; b=ZTAIdwKgCJwAihvwSJfoN+4qhLAUOLcC5E4WH0fhZqLRwe1AK7oWqflSg3+d+FhUqOaZlg28hUmIeKqMEubqlPlv+2sFJ2N57iXj9BAhOxhiRiNXSxYgYp34j0FyYqxyuMxZ9rrvIPoeDoK+BUerRs9txpiKfYsklTL5I2X/rNk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739573493583102.26456244652343; Fri, 14 Feb 2025 14:51:33 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 85D101B45; Fri, 14 Feb 2025 17:51:32 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id D89421BFF; Fri, 14 Feb 2025 17:50:23 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 034271C0E; Fri, 14 Feb 2025 17:50:18 -0500 (EST) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 86AED1A08 for ; Fri, 14 Feb 2025 17:50:12 -0500 (EST) Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-38f1e8efe82so3002486f8f.0 for ; Fri, 14 Feb 2025 14:50:12 -0800 (PST) Received: from localhost (75-169-8-111.slkc.qwest.net. [75.169.8.111]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-220d537ca99sm33462205ad.106.2025.02.14.14.50.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 14:50:10 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739573411; x=1740178211; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MN981TTn8axKLUPpoAV+uTqD7ZKKK/9dBzGgBMRA8Wc=; b=ZJHLqC94I6lq5vuCf1qlRsiEaEW0rW/lU+23m/JMokPg7b7T3jou/r6vvSQl02N9bt hZub2s1E5dsRTPOeUmrfh3yqd+uWeJLQbl9O0sF8Q0GSP9HPQl1bG2dWJXXz3LSEiHyT 3n3Tm6dc7r/Hy/pDqWBamKlDA0/h/l7K1hnRESZtnUTNfvxMQGveiWcIekAeqZd1kH5l AV5aW11YAAR71N4NI9iEnU448FqlOPBNDavf3F2zjD/APJhUDGqOnNOjK5nF+7vXIUNi I48oQDwGf/5W9erWTiDfRjb5XOB/fK36BkqvsNrfjPNwkGvKBdY0i+HAmbVaRPUbehHr v+8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739573411; x=1740178211; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MN981TTn8axKLUPpoAV+uTqD7ZKKK/9dBzGgBMRA8Wc=; b=a9Yu64t0E/0RO5VCQyE+IrWwMIHQOV5V/MZzZjx7a8WVhwiqsFRFghBNgA2qI+FZZx EIplJrPmZudb4IJOgK+xgtvM6AgG+5kdgB6EOdfzAAKM/zMEnmPKQCLpqZ0IGAfJkjjg 0PHmlARtaCgTAiRfV1EdXJGIsTZRSdNM7UhJ2Ociu0pLh8fcf+z/ALeAr/G+ygjafheE 2kMl+MFBjXTsaGpYXuWbsTwIspAZ4tnUFxOZL8vNgazfUib1gIC112NdSaK5UE4/VWcV 9bKOAQbijnnxn4K2TiOdfH8qUqSzRqhPxepSjWT7x6RipsVZN5l9eqfoxg2cjodeTMyF bN8g== X-Gm-Message-State: AOJu0YzsNNUFnhHdA33hxgoBo9hHXx+CZIyNFkc8PrACTJjeoSv6WYUG GR2eh3v14B2HbbInhbSOXwQxPakykFfUMgZc5/SmMUyAdEoK3OguHiLUIJgZeXo2MrdJzw3i2E4 R X-Gm-Gg: ASbGncuOIpmwlr9L5jeNGC7wjbBMN5PMUEiPVyW/i9vRW2kIJ/rP66Dsk37RTmN2NeO QAUJLmz9+c0OJ7zkyju9Kd5uk+tgsWcbEtqEieb9ST7JuR0NHElhn72Bz9Y4eJbLNbMErc90ZW7 PDaMtkb9/WITPQ4gedlG7OoPPnnLwTZ0AyZKYzDqIZ2+j/EVWpuaegnxVJSTTn3HaFRynzZ9nm4 D3l0m5/3O/05KMpyvK2dX+skoFSrR7GPL8BARbJw40bFbEoJFJx0WIdYWz8mJHyD3tFbnUgxUW0 0d9giH0wUqVwKw/IlZFH3Zcgh0e8LmbM1A== X-Google-Smtp-Source: AGHT+IH2OUolKfcOAReVkwAVHCemdUhV6ks0Q2GgrVt1gQWtHHZ3Vlww4cW8Rca7PgyxUzvxABR/CA== X-Received: by 2002:a5d:50cd:0:b0:38c:5e03:5bb with SMTP id ffacd0b85a97d-38f33f51191mr924026f8f.41.1739573411341; Fri, 14 Feb 2025 14:50:11 -0800 (PST) To: devel@lists.libvirt.org Subject: [PATCH 2/3] qemu: Move special handling of invalid dump format to only caller Date: Fri, 14 Feb 2025 15:48:17 -0700 Message-ID: <20250214225005.29753-3-jfehlig@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250214225005.29753-1-jfehlig@suse.com> References: <20250214225005.29753-1-jfehlig@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ER3UAJGUNA45ZB4W2MACZ7Y33PZKPWO5 X-Message-ID-Hash: ER3UAJGUNA45ZB4W2MACZ7Y33PZKPWO5 X-MailFrom: jfehlig@suse.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Jim Fehlig via Devel Reply-To: Jim Fehlig X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739573495338019100 Content-Type: text/plain; charset="utf-8" The 'use_raw_on_fail' logic in qemuSaveImageGetCompressionProgram is only used by doCoreDump in qemu_driver.c. Move the logic to the single call site and remove the parameter from qemuSaveImageGetCompressionProgram. Signed-off-by: Jim Fehlig --- src/qemu/qemu_driver.c | 29 ++++++++++++++++++++--------- src/qemu/qemu_saveimage.c | 38 ++++++++++---------------------------- src/qemu/qemu_saveimage.h | 3 +-- src/qemu/qemu_snapshot.c | 2 +- 4 files changed, 32 insertions(+), 40 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 78bfaa5b3a..0a1bcc0ed5 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2766,7 +2766,7 @@ qemuDomainManagedSaveHelper(virQEMUDriver *driver, cfg =3D virQEMUDriverGetConfig(driver); if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, &compressor, - "save", false)) < 0) + "save")) < 0) return -1; =20 path =3D qemuDomainManagedSavePath(driver, vm); @@ -2800,7 +2800,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *pat= h, const char *dxml, cfg =3D virQEMUDriverGetConfig(driver); if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, &compressor, - "save", false)) < 0) + "save")) < 0) goto cleanup; =20 if (!(vm =3D qemuDomainObjFromDomain(dom))) @@ -2874,7 +2874,7 @@ qemuDomainSaveParams(virDomainPtr dom, cfg =3D virQEMUDriverGetConfig(driver); if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, &compressor, - "save", false)) < 0) + "save")) < 0) goto cleanup; =20 if (virDomainObjCheckActive(vm) < 0) @@ -3077,6 +3077,7 @@ doCoreDump(virQEMUDriver *driver, { int fd =3D -1; int ret =3D -1; + int format =3D QEMU_SAVE_FORMAT_RAW; virFileWrapperFd *wrapperFd =3D NULL; int directFlag =3D 0; bool needUnlink =3D false; @@ -3085,13 +3086,23 @@ doCoreDump(virQEMUDriver *driver, g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); g_autoptr(virCommand) compressor =3D NULL; =20 + if (cfg->dumpImageFormat) { + if ((format =3D qemuSaveFormatTypeFromString(cfg->dumpImageFormat)= ) < 0) { + VIR_WARN("Invalid dump image format specified in configuration= file, using raw"); + format =3D QEMU_SAVE_FORMAT_RAW; + } + } + /* We reuse "save" flag for "dump" here. Then, we can support the same - * format in "save" and "dump". This path doesn't need the compression - * program to exist and can ignore the return value - it only cares to - * get the compressor */ - ignore_value(qemuSaveImageGetCompressionProgram(cfg->dumpImageFormat, - &compressor, - "dump", true)); + * format in "save" and "dump". If the compression program doesn't exi= st, + * reset any errors and continue on using the raw format. + */ + if (qemuSaveImageGetCompressionProgram(cfg->dumpImageFormat, + &compressor, "dump") < 0) { + virResetLastError(); + VIR_WARN("Compression program for dump image format in " + "configuration file isn't available, using raw"); + } =20 /* Create an empty file with appropriate ownership. */ if (dump_flags & VIR_DUMP_BYPASS_CACHE) { diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 403e4c9679..eea35df175 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -513,10 +513,6 @@ qemuSaveImageCreate(virQEMUDriver *driver, * @compresspath: Pointer to a character string to store the fully qualifi= ed * path from virFindFileInPath. * @styleFormat: String representing the style of format (dump, save, snap= shot) - * @use_raw_on_fail: Boolean indicating how to handle the error path. For - * callers that are OK with invalid data or inability to - * find the compression program, just return a raw format - * and let the path remain as NULL. * * Returns: * virQEMUSaveFormat - Integer representation of the save image @@ -529,8 +525,7 @@ qemuSaveImageCreate(virQEMUDriver *driver, int qemuSaveImageGetCompressionProgram(const char *imageFormat, virCommand **compressor, - const char *styleFormat, - bool use_raw_on_fail) + const char *styleFormat) { int ret; const char *prog; @@ -549,6 +544,7 @@ qemuSaveImageGetCompressionProgram(const char *imageFor= mat, if (!(prog =3D virFindFileInPath(imageFormat))) goto error; =20 + *compressor =3D virCommandNew(prog); virCommandAddArg(*compressor, "-c"); if (ret =3D=3D QEMU_SAVE_FORMAT_XZ) @@ -558,31 +554,17 @@ qemuSaveImageGetCompressionProgram(const char *imageF= ormat, =20 error: if (ret < 0) { - if (use_raw_on_fail) - VIR_WARN("Invalid %s image format specified in " - "configuration file, using raw", - styleFormat); - else - virReportError(VIR_ERR_OPERATION_FAILED, - _("Invalid %1$s image format specified in confi= guration file"), - styleFormat); + ret =3D QEMU_SAVE_FORMAT_RAW; + virReportError(VIR_ERR_OPERATION_FAILED, + _("Invalid %1$s image format specified in configura= tion file"), + styleFormat); } else { - if (use_raw_on_fail) - VIR_WARN("Compression program for %s image format in " - "configuration file isn't available, using raw", - styleFormat); - else - virReportError(VIR_ERR_OPERATION_FAILED, - _("Compression program for %1$s image format in= configuration file isn't available"), - styleFormat); + virReportError(VIR_ERR_OPERATION_FAILED, + _("Compression program for %1$s image format in con= figuration file isn't available"), + styleFormat); } =20 - /* Use "raw" as the format if the specified format is not valid, - * or the compress program is not available. */ - if (use_raw_on_fail) - return QEMU_SAVE_FORMAT_RAW; - - return -1; + return ret; } =20 =20 diff --git a/src/qemu/qemu_saveimage.h b/src/qemu/qemu_saveimage.h index 8e755e1eb5..aa905768de 100644 --- a/src/qemu/qemu_saveimage.h +++ b/src/qemu/qemu_saveimage.h @@ -112,8 +112,7 @@ qemuSaveImageOpen(virQEMUDriver *driver, int qemuSaveImageGetCompressionProgram(const char *imageFormat, virCommand **compressor, - const char *styleFormat, - bool use_raw_on_fail) + const char *styleFormat) ATTRIBUTE_NONNULL(2); =20 int diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index ed140dd41c..4ff7e09bd4 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1658,7 +1658,7 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *drive= r, =20 if ((format =3D qemuSaveImageGetCompressionProgram(cfg->snapshotIm= ageFormat, &compressor, - "snapshot", false= )) < 0) + "snapshot")) < 0) goto cleanup; =20 if (!(xml =3D qemuDomainDefFormatLive(driver, priv->qemuCaps, --=20 2.43.0 From nobody Fri Dec 19 20:17:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1739573520; cv=none; d=zohomail.com; s=zohoarc; b=hRMOExgnQ670732HRw1LW5m5vADF7WKXwXQg1WAuj4K1mui5CoiZ/GXtotpZHzCEs1EABBzeSmvRZB/2msvGDghT1xO9Cv99W0EWozOkoQGvNmupznPNGfxfd/pcxNhRbOg/2XuxBugiNJvHiMGAx0SA3aX8UOnusILr57bVB5c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739573520; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=NjzPlcKlfYf5qrViDC6P1XnNsvsK7kIubZ2u0Q832KI=; b=HD8AtUcdoahKvXujIGDhxTwbHnlV64mVOJWJa3zhZQzmkI/pd6O41+DRiNR2H3DVWG05GWNiY9rBk3gUHnxYrLpm8cSl5ZwE66mbeOjwcRwHi7jroSkBXu+tBqOM7YqstPpMmoVpwEOpmL7WAgHaaRECrtlMPBfukfJeemhvhVY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1739573520899968.5505887967868; Fri, 14 Feb 2025 14:52:00 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 35D251207; Fri, 14 Feb 2025 17:52:00 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 938F21D06; Fri, 14 Feb 2025 17:50:26 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 51BD91C6E; Fri, 14 Feb 2025 17:50:22 -0500 (EST) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8B4F91C4B for ; Fri, 14 Feb 2025 17:50:14 -0500 (EST) Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-38f2c4382d1so741175f8f.0 for ; Fri, 14 Feb 2025 14:50:14 -0800 (PST) Received: from localhost (75-169-8-111.slkc.qwest.net. [75.169.8.111]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-732425467d1sm3755540b3a.12.2025.02.14.14.50.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 14:50:12 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739573413; x=1740178213; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bKcfYbT96YjMGl/xhzDv50wJ96Bw5mqt8+QNGTiKlHI=; b=FaQcdoKK39mR3xDqr5IBSyttF1JVq/PDOl9NIUgNvOEtM64tSMckl7aRVbPIzfVbGz t0aYnhYulm4h06L7s6FTvbM1mpN5MGC6Ii9hom8b6Xawc3gdRA52fEQVlQEmhgYCcIfy 74W2ShmbUwS6LXQfbveImFLkzodmoEXCHdfmylmeYIgCdUAImteGORTs9PNuBeRMmoRK t0GJj3x9oW6NedjiTnAA7ozuPJfpb/dMoqxlCYZ2MfqDGnX226L5YC8QdgHMKvMRugyq Ucc0VT7UQUN084IxnC/1ogSShgtIxB7ObqsHA4f2Z2H2lsxl4NTBDM5dO4oIsyZ1z0re Ersg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739573413; x=1740178213; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bKcfYbT96YjMGl/xhzDv50wJ96Bw5mqt8+QNGTiKlHI=; b=jesZkMneWBWmmRFSEOGoJLEtegJr7/QgTu7SAx4GHDXmWxf+98mOH3+28m2myIBEEd 2Vvt8RFUgebXH2SuMvXgQwvU5Z4RV+1+dAXGGHlRR4XyWEs3aoO3o1wBKgHc4J5cCA7F qhoq+2AqmryxgaK8K/bCKUCD30subg8B1NImuDqmnb6pXyFSKdklHFBhQu55RWKLXxIA Oso+raIU9RULoj3yfwHo8abKer1XimtBYuea7m4l5v4DbQwKHTvxazm50DhCH79JcxV8 Wdvj237EjbJHkFsjMRIitlS6QjdgdqlKkIoGvy+4T/LR1BM/XZaK/ff+E5MKTaSIShqx R88A== X-Gm-Message-State: AOJu0YzqG3b7TdA/wQoOn3crYG9NZfH2rwxqgrG8CnKdNvc7eeWMFQ3b jsY2JvfqpquZ2ULBq9WJzry43+3sxuwmXM4jYnjJVTyo4+ytJybWVKMEc5+3dtIdrghQJilDwuz m X-Gm-Gg: ASbGncsnSfVOpCJxEg32tQgmNzQGdWcjnYw9QFnfaf5wmlk6LdpesiYa2VoFmhs73b6 O/P5q0eZ2kQcElMVEOoTb3YCUJ0gqPWrR+sMX1szJ6ZxQn2Z5zTJ8VAgmRz7NyTQN7HnDbOk9RA +WN8hwe1C68Y+9j4FtFNobtKekoY06mHWr2Y0wOaHvc0asvTYezRRMvZmgnRs9e4antMHvPjuj2 NyH2IAMLL32lVmP7HL4tcM0q+hjkQ/kX0G2wOTBBNKPU4v60kJK0zkQT4nyj6bybih+HKRkj4Uj hTOYkhAEf6X4vlpXV0wbZSq/8HaOEuQjmQ== X-Google-Smtp-Source: AGHT+IFEq7SF/blWwNX3e1W10aH7o+hbsPRPLWObPdqqpLpYGkVbZzCJweQrABLfoOYnyUyZ+aD7DA== X-Received: by 2002:a05:6000:144b:b0:38d:e0a9:7e5e with SMTP id ffacd0b85a97d-38f24ce7791mr11647238f8f.6.1739573413339; Fri, 14 Feb 2025 14:50:13 -0800 (PST) To: devel@lists.libvirt.org Subject: [PATCH 3/3] qemu: Change return value of SaveImageGetCompressionProgram Date: Fri, 14 Feb 2025 15:48:18 -0700 Message-ID: <20250214225005.29753-4-jfehlig@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250214225005.29753-1-jfehlig@suse.com> References: <20250214225005.29753-1-jfehlig@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: WIAPIJTIHNSZ7LPR76VALZDB6J7VB2WD X-Message-ID-Hash: WIAPIJTIHNSZ7LPR76VALZDB6J7VB2WD X-MailFrom: jfehlig@suse.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Jim Fehlig via Devel Reply-To: Jim Fehlig X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739573521664019000 Content-Type: text/plain; charset="utf-8" qemuSaveImageGetCompressionProgram is a bit overloaded. Along with getting a compression program, it checks the validity of the image format and returns the integer representation of the format. Change the function to only handle retrieving the specified compression program, returning success or failure. Checking the validity of the image format can be left to the calling functions. Signed-off-by: Jim Fehlig Reviewed-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_driver.c | 33 +++++++++++++---------- src/qemu/qemu_saveimage.c | 55 ++++++++++++--------------------------- src/qemu/qemu_saveimage.h | 2 +- src/qemu/qemu_snapshot.c | 11 +++++--- 4 files changed, 43 insertions(+), 58 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0a1bcc0ed5..577e799c2b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2752,7 +2752,7 @@ qemuDomainManagedSaveHelper(virQEMUDriver *driver, g_autoptr(virQEMUDriverConfig) cfg =3D NULL; g_autoptr(virCommand) compressor =3D NULL; g_autofree char *path =3D NULL; - int format; + int format =3D QEMU_SAVE_FORMAT_RAW; =20 if (virDomainObjCheckActive(vm) < 0) return -1; @@ -2764,9 +2764,11 @@ qemuDomainManagedSaveHelper(virQEMUDriver *driver, } =20 cfg =3D virQEMUDriverGetConfig(driver); - if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, - &compressor, - "save")) < 0) + if (cfg->saveImageFormat && + (format =3D qemuSaveFormatTypeFromString(cfg->saveImageFormat)) < = 0) + return -1; + + if (qemuSaveImageGetCompressionProgram(format, &compressor, "save") < = 0) return -1; =20 path =3D qemuDomainManagedSavePath(driver, vm); @@ -2787,7 +2789,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *pat= h, const char *dxml, unsigned int flags) { virQEMUDriver *driver =3D dom->conn->privateData; - int format; + int format =3D QEMU_SAVE_FORMAT_RAW; g_autoptr(virCommand) compressor =3D NULL; int ret =3D -1; virDomainObj *vm =3D NULL; @@ -2798,9 +2800,11 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *pa= th, const char *dxml, VIR_DOMAIN_SAVE_PAUSED, -1); =20 cfg =3D virQEMUDriverGetConfig(driver); - if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, - &compressor, - "save")) < 0) + if (cfg->saveImageFormat && + (format =3D qemuSaveFormatTypeFromString(cfg->saveImageFormat)) < = 0) + goto cleanup; + + if (qemuSaveImageGetCompressionProgram(format, &compressor, "save") < = 0) goto cleanup; =20 if (!(vm =3D qemuDomainObjFromDomain(dom))) @@ -2838,7 +2842,7 @@ qemuDomainSaveParams(virDomainPtr dom, g_autoptr(virCommand) compressor =3D NULL; const char *to =3D NULL; const char *dxml =3D NULL; - int format; + int format =3D QEMU_SAVE_FORMAT_RAW; int ret =3D -1; =20 virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -2872,9 +2876,11 @@ qemuDomainSaveParams(virDomainPtr dom, } =20 cfg =3D virQEMUDriverGetConfig(driver); - if ((format =3D qemuSaveImageGetCompressionProgram(cfg->saveImageForma= t, - &compressor, - "save")) < 0) + if (cfg->saveImageFormat && + (format =3D qemuSaveFormatTypeFromString(cfg->saveImageFormat)) < = 0) + goto cleanup; + + if (qemuSaveImageGetCompressionProgram(format, &compressor, "save") < = 0) goto cleanup; =20 if (virDomainObjCheckActive(vm) < 0) @@ -3097,8 +3103,7 @@ doCoreDump(virQEMUDriver *driver, * format in "save" and "dump". If the compression program doesn't exi= st, * reset any errors and continue on using the raw format. */ - if (qemuSaveImageGetCompressionProgram(cfg->dumpImageFormat, - &compressor, "dump") < 0) { + if (qemuSaveImageGetCompressionProgram(format, &compressor, "dump") < = 0) { virResetLastError(); VIR_WARN("Compression program for dump image format in " "configuration file isn't available, using raw"); diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index eea35df175..d940bfb5c3 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -508,63 +508,40 @@ qemuSaveImageCreate(virQEMUDriver *driver, =20 =20 /* qemuSaveImageGetCompressionProgram: - * @imageFormat: String representation from qemu.conf of the image format - * being used (dump, save, or snapshot). + * @format: Integer representation of the image format being used + * (dump, save, or snapshot). * @compresspath: Pointer to a character string to store the fully qualifi= ed * path from virFindFileInPath. * @styleFormat: String representing the style of format (dump, save, snap= shot) * - * Returns: - * virQEMUSaveFormat - Integer representation of the save image - * format to be used for particular style - * (e.g. dump, save, or snapshot). - * QEMU_SAVE_FORMAT_RAW - If there is no qemu.conf imageFormat value or - * no there was an error, then just return RAW - * indicating none. + * Returns -1 on failure, 0 on success. */ int -qemuSaveImageGetCompressionProgram(const char *imageFormat, +qemuSaveImageGetCompressionProgram(int format, virCommand **compressor, const char *styleFormat) { - int ret; + const char *imageFormat =3D qemuSaveFormatTypeToString(format); const char *prog; =20 *compressor =3D NULL; =20 - if (!imageFormat) - return QEMU_SAVE_FORMAT_RAW; - - if ((ret =3D qemuSaveFormatTypeFromString(imageFormat)) < 0) - goto error; - - if (ret =3D=3D QEMU_SAVE_FORMAT_RAW) - return QEMU_SAVE_FORMAT_RAW; - - if (!(prog =3D virFindFileInPath(imageFormat))) - goto error; - + if (format =3D=3D QEMU_SAVE_FORMAT_RAW) + return 0; + + if (!(prog =3D virFindFileInPath(imageFormat))) { + virReportError(VIR_ERR_OPERATION_FAILED, + _("Compression program for %1$s image format in con= figuration file isn't available"), + styleFormat); + return -1; + } =20 *compressor =3D virCommandNew(prog); virCommandAddArg(*compressor, "-c"); - if (ret =3D=3D QEMU_SAVE_FORMAT_XZ) + if (format =3D=3D QEMU_SAVE_FORMAT_XZ) virCommandAddArg(*compressor, "-3"); =20 - return ret; - - error: - if (ret < 0) { - ret =3D QEMU_SAVE_FORMAT_RAW; - virReportError(VIR_ERR_OPERATION_FAILED, - _("Invalid %1$s image format specified in configura= tion file"), - styleFormat); - } else { - virReportError(VIR_ERR_OPERATION_FAILED, - _("Compression program for %1$s image format in con= figuration file isn't available"), - styleFormat); - } - - return ret; + return 0; } =20 =20 diff --git a/src/qemu/qemu_saveimage.h b/src/qemu/qemu_saveimage.h index aa905768de..0d8ee542af 100644 --- a/src/qemu/qemu_saveimage.h +++ b/src/qemu/qemu_saveimage.h @@ -110,7 +110,7 @@ qemuSaveImageOpen(virQEMUDriver *driver, ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4); =20 int -qemuSaveImageGetCompressionProgram(const char *imageFormat, +qemuSaveImageGetCompressionProgram(int format, virCommand **compressor, const char *styleFormat) ATTRIBUTE_NONNULL(2); diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 4ff7e09bd4..c672d4f24f 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1579,7 +1579,7 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *drive= r, bool memory_existing =3D false; bool thaw =3D false; bool pmsuspended =3D false; - int format; + int format =3D QEMU_SAVE_FORMAT_RAW; g_autoptr(virCommand) compressor =3D NULL; virQEMUSaveData *data =3D NULL; g_autoptr(GHashTable) blockNamedNodeData =3D NULL; @@ -1656,9 +1656,12 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driv= er, JOB_MASK(VIR_JOB_SUSPEND) | JOB_MASK(VIR_JOB_MIGRATION_OP))); =20 - if ((format =3D qemuSaveImageGetCompressionProgram(cfg->snapshotIm= ageFormat, - &compressor, - "snapshot")) < 0) + if (cfg->snapshotImageFormat && + (format =3D qemuSaveFormatTypeFromString(cfg->snapshotImageFor= mat)) < 0) + goto cleanup; + + if (qemuSaveImageGetCompressionProgram(format, &compressor, + "snapshot") < 0) goto cleanup; =20 if (!(xml =3D qemuDomainDefFormatLive(driver, priv->qemuCaps, --=20 2.43.0