From nobody Fri Dec 19 20:17:07 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