From nobody Sun Feb 8 12:52:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652368682; cv=none; d=zohomail.com; s=zohoarc; b=j80MM0O2OGwmcA01ROa8s1rlM00YiDIpiYw/Gv+T4p0ntR1vDwjcHvhQLUoDmrX5W3orYchm0m5LFZimo3T0ymQmBNDrZe+6UmRP3HA9zbhY+qElmOiE4ZqZUEstqP5n34EQBxJkAVTQH1Aoq/qHhWBg/GyVDRLlIPTO6prYzWE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652368682; h=Content-Type:Content-Transfer-Encoding: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=ZG8j3vlMKHXoSSw9uGcjS+ojqmTh9WiJXxKz1pjQPi0=; b=Z2vF6145V6kS0Zg/dfgrlruiDt9HEAINrPPr0YJdU6LkDZlkdqpIKibd3c1ozuURPvfO+8yB2Kn5YhXj0MPIpA9I8AEJwf0Hj8FGgBO1iX2oEGWYXRfxLEuXcZ78fsgECOGKpg6F65u/QeHQtV0zP7rU/bu5ixXiWAEUPJMuGJo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 165236868266651.524653139259385; Thu, 12 May 2022 08:18:02 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-625-0VbxY7bfODGRoC_e1EDrdg-1; Thu, 12 May 2022 11:17:52 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D83B318A6658; Thu, 12 May 2022 15:17:44 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id B24B17C4E; Thu, 12 May 2022 15:17:44 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E0CD11932226; Thu, 12 May 2022 15:17:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 7041E1947058 for ; Thu, 12 May 2022 15:17:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 41F64414768; Thu, 12 May 2022 15:17:42 +0000 (UTC) Received: from maggie.redhat.com (unknown [10.43.2.180]) by smtp.corp.redhat.com (Postfix) with ESMTP id DD36240D1C3 for ; Thu, 12 May 2022 15:17:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652368681; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ZG8j3vlMKHXoSSw9uGcjS+ojqmTh9WiJXxKz1pjQPi0=; b=QMjdjWNu0B45goXeEkKkchMiZxQLAW6iq0nAk6gU/zCKLue3p9UgKeV+XCaueMCfO6jsI7 lgFtWHvFRaXB+YsIB4gGO8wVDFK9Z4OZJCutdIx9+dBlExtr1KE9AD0r0oFoXQki/RKW2g BlWKsN91ccumWtLt10mSwClH8BqUHgU= X-MC-Unique: 0VbxY7bfODGRoC_e1EDrdg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Michal Privoznik To: libvir-list@redhat.com Subject: [PATCH 2/3] lib: Repurpose virDomainSaveParams() with no VIR_DOMAIN_SAVE_PARAM_FILE Date: Thu, 12 May 2022 17:17:36 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652368684727100001 Content-Type: text/plain; charset="utf-8"; x-default="true" When no VIR_DOMAIN_SAVE_PARAM_FILE typed param is set when calling virDomainSaveParams() then in turn virQEMUFileOpenAs() tries to open a NULL path. We have two options now: 1) require the typed param, which in turn may be promoted to a regular argument, or 2) use this opportunity to make the API behave like virDomainManagedSave() and use typed params to pass extra arguments, instead of having to invent new managed save API with typed params. Let's go with option 2, as it is more future proof. Signed-off-by: Michal Privoznik --- src/libvirt-domain.c | 2 ++ src/qemu/qemu_driver.c | 33 ++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index d1d62daa71..208c2438fe 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -1007,6 +1007,8 @@ virDomainSaveFlags(virDomainPtr domain, const char *t= o, * @flags: bitwise-OR of virDomainSaveRestoreFlags * * This method extends virDomainSaveFlags by adding parameters. + * If VIR_DOMAIN_SAVE_PARAM_FILE is not provided then a managed save is + * performed (see virDomainManagedSave). * * Returns 0 in case of success and -1 in case of failure. * diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7d8c7176d9..0b31c73bb9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2772,6 +2772,7 @@ qemuDomainManagedSavePath(virQEMUDriver *driver, virD= omainObj *vm) static int qemuDomainManagedSaveHelper(virQEMUDriver *driver, virDomainObj *vm, + const char *dxml, unsigned int flags) { g_autoptr(virQEMUDriverConfig) cfg =3D NULL; @@ -2799,7 +2800,7 @@ qemuDomainManagedSaveHelper(virQEMUDriver *driver, VIR_INFO("Saving state of domain '%s' to '%s'", vm->def->name, path); =20 if (qemuDomainSaveInternal(driver, vm, path, compressed, - compressor, NULL, flags) < 0) + compressor, dxml, flags) < 0) return -1; =20 vm->hasManagedSave =3D true; @@ -2853,17 +2854,18 @@ qemuDomainSave(virDomainPtr dom, const char *path) =20 static int qemuDomainSaveParams(virDomainPtr dom, - virTypedParameterPtr params, int nparams, + virTypedParameterPtr params, + int nparams, unsigned int flags) { + virQEMUDriver *driver =3D dom->conn->privateData; + g_autoptr(virQEMUDriverConfig) cfg =3D NULL; + virDomainObj *vm =3D NULL; + g_autoptr(virCommand) compressor =3D NULL; const char *to =3D NULL; const char *dxml =3D NULL; - virQEMUDriver *driver =3D dom->conn->privateData; int compressed; - g_autoptr(virCommand) compressor =3D NULL; int ret =3D -1; - virDomainObj *vm =3D NULL; - g_autoptr(virQEMUDriverConfig) cfg =3D NULL; =20 virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | VIR_DOMAIN_SAVE_RUNNING | @@ -2884,18 +2886,23 @@ qemuDomainSaveParams(virDomainPtr dom, VIR_DOMAIN_SAVE_PARAM_DXML, &dxml) < 0) return -1; =20 - cfg =3D virQEMUDriverGetConfig(driver); - if ((compressed =3D qemuSaveImageGetCompressionProgram(cfg->saveImageF= ormat, - &compressor, - "save", false)) <= 0) - goto cleanup; - if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; =20 if (virDomainSaveParamsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; =20 + if (!to) { + /* If no save path was provided then this behaves as managed save.= */ + return qemuDomainManagedSaveHelper(driver, vm, dxml, flags); + } + + cfg =3D virQEMUDriverGetConfig(driver); + if ((compressed =3D qemuSaveImageGetCompressionProgram(cfg->saveImageF= ormat, + &compressor, + "save", false)) <= 0) + goto cleanup; + if (virDomainObjCheckActive(vm) < 0) goto cleanup; =20 @@ -2925,7 +2932,7 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int = flags) if (virDomainManagedSaveEnsureACL(dom->conn, vm->def) < 0) goto cleanup; =20 - ret =3D qemuDomainManagedSaveHelper(driver, vm, flags); + ret =3D qemuDomainManagedSaveHelper(driver, vm, NULL, flags); =20 cleanup: virDomainObjEndAPI(&vm); --=20 2.35.1