From nobody Mon Feb 9 01:48:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1580284560959385.7802389754189; Tue, 28 Jan 2020 23:56:00 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-121-9UpNXmeGO1apKAPkXVQROQ-1; Wed, 29 Jan 2020 02:55:57 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E48BA1882CD2; Wed, 29 Jan 2020 07:55:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BB01860C18; Wed, 29 Jan 2020 07:55:49 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7960485799; Wed, 29 Jan 2020 07:55:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 00T7sdrG024249 for ; Wed, 29 Jan 2020 02:54:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id 8C1CF84BB8; Wed, 29 Jan 2020 07:54:39 +0000 (UTC) Received: from moe.redhat.com (unknown [10.43.2.30]) by smtp.corp.redhat.com (Postfix) with ESMTP id E2A918578F; Wed, 29 Jan 2020 07:54:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1580284559; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=N8WBGmvZCwCKem2Kz+KPJ5fKOR1TYeL3vKtEAlk6tdE=; b=Oj1P91ZLsnn1hVY0AZeQaXxmUrEBmRWZFj+VEZkz1XvqkqWd+rqzvIMDSNTl40gWfJEjbv IIcGvlmPqQ6nC8GiCDsL0jk17cJvjiUfXKsMGT30xKTKN9u1yoq9G14UcLgSb7Y5UkRW2b 6jwkb3dN+8h2l5Pp9MtLqm9L5A0+HsE= From: Michal Privoznik To: libvir-list@redhat.com Subject: [PATCH v2 5/7] qemu: fix using defaults when setting persistent iotune params Date: Wed, 29 Jan 2020 08:54:16 +0100 Message-Id: <096832a782db32d559182b55020c97548282b3ea.1580284312.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: nshirokovskiy@virtuozzo.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-MC-Unique: 9UpNXmeGO1apKAPkXVQROQ-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" From: Nikolay Shirokovskiy virDomainSetBlockIoTune not simply sets the iotune params given in API but use current settings for all the omitted params. Unfortunately it uses current settings for active config when setting inactive params. Let's fix it. Signed-off-by: Nikolay Shirokovskiy Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 9 +++++++++ src/conf/domain_conf.h | 7 ++++++- src/libvirt_private.syms | 1 + src/qemu/qemu_driver.c | 9 +++++++-- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 89c9ed2834..7bbd3fcaaf 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31811,3 +31811,12 @@ virDomainBlockIoTuneInfoEqual(const virDomainBlock= IoTuneInfo *a, a->read_iops_sec_max_length =3D=3D b->read_iops_sec_max_length && a->write_iops_sec_max_length =3D=3D b->write_iops_sec_max_length; } + + +void +virDomainBlockIoTuneInfoCopy(const virDomainBlockIoTuneInfo *src, + virDomainBlockIoTuneInfoPtr dst) +{ + *dst =3D *src; + dst->group_name =3D g_strdup(src->group_name); +} diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5c3156a0aa..0c35c9155d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -489,7 +489,8 @@ struct _virDomainBlockIoTuneInfo { unsigned long long total_iops_sec_max_length; unsigned long long read_iops_sec_max_length; unsigned long long write_iops_sec_max_length; - /* Don't forget to update virDomainBlockIoTuneInfoEqual. */ + /* Don't forget to update virDomainBlockIoTuneInfoEqual + * and virDomainBlockIoTuneInfoCopy. */ }; =20 =20 @@ -3715,3 +3716,7 @@ virDomainBlockIoTuneInfoHasAny(const virDomainBlockIo= TuneInfo *iotune); bool virDomainBlockIoTuneInfoEqual(const virDomainBlockIoTuneInfo *a, const virDomainBlockIoTuneInfo *b); + +void +virDomainBlockIoTuneInfoCopy(const virDomainBlockIoTuneInfo *src, + virDomainBlockIoTuneInfoPtr dst); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5e9eb34459..970f412527 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -226,6 +226,7 @@ virDomainActualNetDefFree; virDomainActualNetDefValidate; virDomainBlockedReasonTypeFromString; virDomainBlockedReasonTypeToString; +virDomainBlockIoTuneInfoCopy; virDomainBlockIoTuneInfoEqual; virDomainBlockIoTuneInfoHasAny; virDomainBlockIoTuneInfoHasBasic; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 255b77cbb4..eb4b85a20d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19150,6 +19150,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, virDomainDefPtr def =3D NULL; virDomainDefPtr persistentDef =3D NULL; virDomainBlockIoTuneInfo info; + virDomainBlockIoTuneInfo conf_info; g_autofree char *drivealias =3D NULL; const char *qdevid =3D NULL; int ret =3D -1; @@ -19213,6 +19214,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, return -1; =20 memset(&info, 0, sizeof(info)); + memset(&conf_info, 0, sizeof(conf_info)); =20 if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; @@ -19337,6 +19339,8 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, goto endjob; } =20 + virDomainBlockIoTuneInfoCopy(&info, &conf_info); + if (def) { supportMaxOptions =3D virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX); @@ -19459,11 +19463,11 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, goto endjob; } =20 - if (qemuDomainSetBlockIoTuneDefaults(&info, &conf_disk->blkdeviotu= ne, + if (qemuDomainSetBlockIoTuneDefaults(&conf_info, &conf_disk->blkde= viotune, set_fields) < 0) goto endjob; =20 - if (virDomainDiskSetBlockIOTune(conf_disk, &info) < 0) + if (virDomainDiskSetBlockIOTune(conf_disk, &conf_info) < 0) goto endjob; =20 qemuDomainSetGroupBlockIoTune(persistentDef, &conf_info); @@ -19479,6 +19483,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, =20 cleanup: VIR_FREE(info.group_name); + VIR_FREE(conf_info.group_name); virDomainObjEndAPI(&vm); if (eventNparams) virTypedParamsFree(eventParams, eventNparams); --=20 2.24.1