From nobody Fri May 3 13:53:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 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=1574424031; cv=none; d=zohomail.com; s=zohoarc; b=ajtuTpqw4cfM0uphnc5jeKIUbcn+Qy+4PceOpUJIckgXPG/ygptgcreszy1C0uxSogY/t3jgdRPRn77hjxDf02hyVBvHD3b9QutEYm6O4rjU1tQI5Oo3nzM3lEVvHalqbDzzt1Bxp6vvg0dqrkL/MNhDjHy8NMBVKf9oO6Tpf/Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574424031; 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=rckqvVaTVRcQkLLrp6w6pLKrOpp4xD8SHR0baAdN+hM=; b=brs9roSzMWD+vIeePQM92XmpIMjh+PMe4Z31M0xYMFMl20HCg12Jc2WAV7MQyQEjiGgMA9z0EC3HKN/PBEPokYBcaKlcwPooIL0HHsxXNyNrw+tZ9p4+AUXAKcc5M9jLYvFRqcf4NvvUNueHI5Z4NH0aOCw3GlyxsUX5VYOoX8s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 157442403177756.07075976981389; Fri, 22 Nov 2019 04:00:31 -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-7-h0FgswPfPVSbziIpzeLkhg-1; Fri, 22 Nov 2019 07:00:22 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E7E30801E76; Fri, 22 Nov 2019 12:00:15 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A264F60906; Fri, 22 Nov 2019 12:00:14 +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 2B5C218089C8; Fri, 22 Nov 2019 12:00:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id xAMC0CN7013070 for ; Fri, 22 Nov 2019 07:00:12 -0500 Received: by smtp.corp.redhat.com (Postfix) id 083B01DA; Fri, 22 Nov 2019 12:00:12 +0000 (UTC) Received: from domokun.gsslab.fab.redhat.com (dhcp-94.gsslab.fab.redhat.com [10.33.9.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 63B95541FC; Fri, 22 Nov 2019 12:00:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574424030; 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=rckqvVaTVRcQkLLrp6w6pLKrOpp4xD8SHR0baAdN+hM=; b=eq4ETKXkQw2dFur0gHqAutwuUNunQeH8JPrBUdRQZPJQfo8leLSY3JhVJZaaxInhRvxc6y /CE+ZE9B5/mWx0VyilSjEBP26dUeeIxDQcosFcKor8sieZNn1e+ltJOrI1yJzcBHSbN/nn 90GIOdZTdKgIXajRUxz/zo8VOGupnKM= From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 22 Nov 2019 12:00:03 +0000 Message-Id: <20191122120004.11685-2-berrange@redhat.com> In-Reply-To: <20191122120004.11685-1-berrange@redhat.com> References: <20191122120004.11685-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] conf: stop using hash key when free'ing hash entries 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.13 X-MC-Unique: h0FgswPfPVSbziIpzeLkhg-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" The virChrdevHashEntryFree method uses the hash 'key' as the name of the logfile it has to remove. By storing a struct as the value which contains the stream and the dev path, we can avoid relying on the hash key when free'ing entries. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Michal Privoznik --- src/conf/virchrdev.c | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/conf/virchrdev.c b/src/conf/virchrdev.c index 4b8f526d35..d5c0fdbe99 100644 --- a/src/conf/virchrdev.c +++ b/src/conf/virchrdev.c @@ -202,23 +202,30 @@ static void virChrdevLockFileRemove(const char *dev G= _GNUC_UNUSED) } #endif /* #ifdef VIR_CHRDEV_LOCK_FILE_PATH */ =20 +typedef struct { + char *dev; + virStreamPtr st; +} virChrdevHashEntry; + /** * Frees an entry from the hash containing domain's active devices * * @data Opaque data, struct holding information about the device - * @name Path of the device. */ -static void virChrdevHashEntryFree(void *data, - const void *name) +static void virChrdevHashEntryFree(void *data, const void *key G_GNUC_UNUS= ED) { - const char *dev =3D name; - virStreamPtr st =3D data; + virChrdevHashEntry *ent =3D data; + + if (!ent) + return; =20 /* free stream reference */ - virObjectUnref(st); + virObjectUnref(ent->st); =20 /* delete lock file */ - virChrdevLockFileRemove(dev); + virChrdevLockFileRemove(ent->dev); + + g_free(ent); } =20 /** @@ -290,9 +297,9 @@ static int virChrdevFreeClearCallbacks(void *payload, const void *name G_GNUC_UNUSED, void *data G_GNUC_UNUSED) { - virStreamPtr st =3D payload; + virChrdevHashEntry *ent =3D payload; =20 - virFDStreamSetInternalCloseCb(st, NULL, NULL, NULL); + virFDStreamSetInternalCloseCb(ent->st, NULL, NULL, NULL); return 0; } =20 @@ -337,7 +344,7 @@ int virChrdevOpen(virChrdevsPtr devs, bool force) { virChrdevStreamInfoPtr cbdata =3D NULL; - virStreamPtr savedStream; + virChrdevHashEntry *ent; char *path; int ret; bool added =3D false; @@ -363,7 +370,7 @@ int virChrdevOpen(virChrdevsPtr devs, =20 virMutexLock(&devs->lock); =20 - if ((savedStream =3D virHashLookup(devs->hash, path))) { + if ((ent =3D virHashLookup(devs->hash, path))) { if (!force) { /* entry found, device is busy */ virMutexUnlock(&devs->lock); @@ -376,8 +383,8 @@ int virChrdevOpen(virChrdevsPtr devs, * same thread. We need to unregister the callback and abort the * stream manually before we create a new device connection. */ - virFDStreamSetInternalCloseCb(savedStream, NULL, NULL, NULL); - virStreamAbort(savedStream); + virFDStreamSetInternalCloseCb(ent->st, NULL, NULL, NULL); + virStreamAbort(ent->st); virHashRemoveEntry(devs->hash, path); /* continue adding a new stream connection */ } @@ -398,8 +405,15 @@ int virChrdevOpen(virChrdevsPtr devs, if (VIR_ALLOC(cbdata) < 0) goto error; =20 - if (virHashAddEntry(devs->hash, path, st) < 0) + if (VIR_ALLOC(ent) < 0) + goto error; + + ent->st =3D st; + ent->dev =3D g_strdup(path); + + if (virHashAddEntry(devs->hash, path, ent) < 0) goto error; + ent =3D NULL; added =3D true; =20 cbdata->devs =3D devs; @@ -441,5 +455,6 @@ int virChrdevOpen(virChrdevsPtr devs, VIR_FREE(cbdata->path); VIR_FREE(cbdata); virMutexUnlock(&devs->lock); + virChrdevHashEntryFree(ent, NULL); return -1; } --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 13:53:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 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=1574424045; cv=none; d=zohomail.com; s=zohoarc; b=KkYcSxdCVnOtheP3JiOvvRDSGNw+rnLWAMNSKT4Idp+wDEcQGNsZRJ8VK31KB4GBQNdJNCh7etv/NWONZU6rzDuZiPeIdW5whijJeYpC4/Q+MMqM0L0Nk8OpZy98xHOlXCUtk+tYPLaBUcaPB7oKucPMvSZ2Twv7Fm3lS/nxhl8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574424045; 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=WllZFrw7dq5Wkb5TO8vl5GcqqeNrgpCMPI7cC++fUvg=; b=ZaoDnwHByBPzVrjffhVonWC2hEbcRm9zJWdVEhWHZne8acl5j8w430rtF8K0gHnOMYgPPvUWL2N4BZs+4xkTk/piW0joRSDbPhEpwqGF8ux/6C+fgXGSV1qF07PZxrFY+KHYBAcEPwaq9RRqjE/Qn5a1caJ2Y3a/u2VPx6rd1p8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1574424045681544.6372392016415; Fri, 22 Nov 2019 04:00:45 -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-238-lt_i_P_8P3q3PtpScMh3tg-1; Fri, 22 Nov 2019 07:00:38 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 639FE184CAA4; Fri, 22 Nov 2019 12:00:29 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1174266098; Fri, 22 Nov 2019 12:00:29 +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 7E94618089CF; Fri, 22 Nov 2019 12:00:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id xAMC0Gfq013086 for ; Fri, 22 Nov 2019 07:00:16 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9F1AC54212; Fri, 22 Nov 2019 12:00:16 +0000 (UTC) Received: from domokun.gsslab.fab.redhat.com (dhcp-94.gsslab.fab.redhat.com [10.33.9.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4FF7E1DA; Fri, 22 Nov 2019 12:00:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574424044; 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=WllZFrw7dq5Wkb5TO8vl5GcqqeNrgpCMPI7cC++fUvg=; b=XAcRYsqrZ4ZZvDgwpUqyGnAf/YyN7bKwpTVGzJgo8mxoz0JDCzJVC6Jofkx0LIMVu0bnck 47qtbcPLANdwpecTFGkULBDcZQH5WSotYHRjls001F0XU1hyu6SYAA5hyfCLXHdnhJxaj5 DiXMf8XRBN03JIP1FOG7+NmHUK4F4dE= From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Fri, 22 Nov 2019 12:00:04 +0000 Message-Id: <20191122120004.11685-3-berrange@redhat.com> In-Reply-To: <20191122120004.11685-1-berrange@redhat.com> References: <20191122120004.11685-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/2] util: consolidate on one free callback for hash data 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.13 X-MC-Unique: lt_i_P_8P3q3PtpScMh3tg-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" This previous commit introduced a simpler free callback for hash data with only 1 arg, the value to free: commit 49288fac965f0ee23db45d83ae4ef3a9a71dafd0 Author: Peter Krempa Date: Wed Oct 9 15:26:37 2019 +0200 util: hash: Add possibility to use simpler data free function in virHash It missed two functions in the hash table code which need to call the alternate data free function, virHashRemoveEntry and virHashRemoveSet. After the previous patch though, there is no code that makes functional use of the 2nd key arg in the data free function. There is merely one log message that can be dropped. We can thus purge the current virHashDataFree callback entirely, and rename virHashDataFreeSimple to replace it. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Michal Privoznik --- src/conf/domain_addr.c | 4 ++-- src/conf/nwfilter_params.c | 2 +- src/conf/virchrdev.c | 4 ++-- src/conf/virdomainmomentobjlist.c | 3 +-- src/conf/virnetworkobj.c | 2 +- src/libxl/libxl_logger.c | 2 +- src/locking/lock_daemon.c | 3 +-- src/nwfilter/nwfilter_dhcpsnoop.c | 4 ++-- src/nwfilter/nwfilter_learnipaddr.c | 2 +- src/qemu/qemu_block.c | 3 +-- src/qemu/qemu_conf.c | 4 ++-- src/qemu/qemu_conf.h | 2 +- src/qemu/qemu_domain.c | 3 +-- src/qemu/qemu_migration.c | 3 +-- src/qemu/qemu_monitor.c | 5 ++--- src/qemu/qemu_monitor.h | 2 +- src/qemu/qemu_monitor_json.c | 2 +- src/util/vircgroup.c | 2 +- src/util/virhash.c | 28 +++++++--------------------- src/util/virhash.h | 16 +++------------- src/util/virjson.c | 3 +-- src/util/virjson.h | 2 +- src/util/virkeyfile.c | 2 +- src/util/virlockspace.c | 2 +- src/util/virobject.c | 3 +-- src/util/virobject.h | 3 +-- src/util/virsystemd.c | 8 ++++---- 27 files changed, 43 insertions(+), 76 deletions(-) diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c index 74d561cd12..165bd70f2b 100644 --- a/src/conf/domain_addr.c +++ b/src/conf/domain_addr.c @@ -1037,14 +1037,14 @@ virDomainPCIAddressSetExtensionAlloc(virDomainPCIAd= dressSetPtr addrs, if (VIR_ALLOC(addrs->zpciIds) < 0) return -1; =20 - if (!(addrs->zpciIds->uids =3D virHashCreateFull(10, NULL, NULL, + if (!(addrs->zpciIds->uids =3D virHashCreateFull(10, NULL, virZPCIAddrKeyCode, virZPCIAddrKeyEqual, virZPCIAddrKeyCopy, virZPCIAddrKeyFree)= )) goto error; =20 - if (!(addrs->zpciIds->fids =3D virHashCreateFull(10, NULL, NULL, + if (!(addrs->zpciIds->fids =3D virHashCreateFull(10, NULL, virZPCIAddrKeyCode, virZPCIAddrKeyEqual, virZPCIAddrKeyCopy, diff --git a/src/conf/nwfilter_params.c b/src/conf/nwfilter_params.c index 7608d4960e..b1a2c50f27 100644 --- a/src/conf/nwfilter_params.c +++ b/src/conf/nwfilter_params.c @@ -619,7 +619,7 @@ virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIte= rPtr ci, } =20 static void -hashDataFree(void *payload, const void *name G_GNUC_UNUSED) +hashDataFree(void *payload) { virNWFilterVarValueFree(payload); } diff --git a/src/conf/virchrdev.c b/src/conf/virchrdev.c index d5c0fdbe99..d4ca3188c5 100644 --- a/src/conf/virchrdev.c +++ b/src/conf/virchrdev.c @@ -212,7 +212,7 @@ typedef struct { * * @data Opaque data, struct holding information about the device */ -static void virChrdevHashEntryFree(void *data, const void *key G_GNUC_UNUS= ED) +static void virChrdevHashEntryFree(void *data) { virChrdevHashEntry *ent =3D data; =20 @@ -455,6 +455,6 @@ int virChrdevOpen(virChrdevsPtr devs, VIR_FREE(cbdata->path); VIR_FREE(cbdata); virMutexUnlock(&devs->lock); - virChrdevHashEntryFree(ent, NULL); + virChrdevHashEntryFree(ent); return -1; } diff --git a/src/conf/virdomainmomentobjlist.c b/src/conf/virdomainmomentob= jlist.c index ef702eb6aa..18dbd434fb 100644 --- a/src/conf/virdomainmomentobjlist.c +++ b/src/conf/virdomainmomentobjlist.c @@ -262,8 +262,7 @@ virDomainMomentAssignDef(virDomainMomentObjListPtr mome= nts, =20 =20 static void -virDomainMomentObjListDataFree(void *payload, - const void *name G_GNUC_UNUSED) +virDomainMomentObjListDataFree(void *payload) { virDomainMomentObjPtr obj =3D payload; =20 diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index a0daaefb74..5daf4a8cb1 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -94,7 +94,7 @@ virNetworkObjLoadAllPorts(virNetworkObjPtr net, =20 =20 static void -virNetworkObjPortFree(void *val, const void *key G_GNUC_UNUSED) +virNetworkObjPortFree(void *val) { virNetworkPortDefFree(val); } diff --git a/src/libxl/libxl_logger.c b/src/libxl/libxl_logger.c index a829142b2b..1581a3070c 100644 --- a/src/libxl/libxl_logger.c +++ b/src/libxl/libxl_logger.c @@ -47,7 +47,7 @@ struct xentoollog_logger_libvirt { }; =20 static void -libxlLoggerFileFree(void *payload, const void *key G_GNUC_UNUSED) +libxlLoggerFileFree(void *payload) { FILE *file =3D payload; VIR_FORCE_FCLOSE(file); diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index 2fa3238794..0d12a97231 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -139,8 +139,7 @@ virLockDaemonUnlock(virLockDaemonPtr lockd) virMutexUnlock(&lockd->lock); } =20 -static void virLockDaemonLockSpaceDataFree(void *data, - const void *key G_GNUC_UNUSED) +static void virLockDaemonLockSpaceDataFree(void *data) { virLockSpaceFree(data); } diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcp= snoop.c index 4e77ca0d2d..9514dfd75c 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.c +++ b/src/nwfilter/nwfilter_dhcpsnoop.c @@ -660,7 +660,7 @@ virNWFilterSnoopReqUnlock(virNWFilterSnoopReqPtr req) * virNWFilterSnoopReqRelease - hash table free function to kill a request */ static void -virNWFilterSnoopReqRelease(void *req0, const void *name G_GNUC_UNUSED) +virNWFilterSnoopReqRelease(void *req0) { virNWFilterSnoopReqPtr req =3D req0; =20 @@ -721,7 +721,7 @@ virNWFilterSnoopReqPut(virNWFilterSnoopReqPtr req) * - if we still have a valid lease, keep the req for restarts */ if (virHashLookup(virNWFilterSnoopState.snoopReqs, req->ifkey) != =3D req) { - virNWFilterSnoopReqRelease(req, NULL); + virNWFilterSnoopReqRelease(req); } else if (!req->start || req->start->timeout < time(0)) { ignore_value(virHashRemoveEntry(virNWFilterSnoopState.snoopReq= s, req->ifkey)); diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_le= arnipaddr.c index 08ef02be7c..9b4fab7ffb 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -307,7 +307,7 @@ virNWFilterHasLearnReq(int ifindex) =20 =20 static void -freeLearnReqEntry(void *payload, const void *name G_GNUC_UNUSED) +freeLearnReqEntry(void *payload) { virNWFilterIPAddrLearnReqFree(payload); } diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 1140a33114..ada2c52947 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -93,8 +93,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuBlockNodeNameBackingCha= inData, =20 =20 static void -qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque, - const void *name G_GNUC_UNU= SED) +qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque) { qemuBlockNodeNameBackingChainDataFree(opaque); } diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 21025d0785..30637b21ac 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1516,7 +1516,7 @@ qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEnt= ryPtr entry, } =20 void -qemuSharedDeviceEntryFree(void *payload, const void *name G_GNUC_UNUSED) +qemuSharedDeviceEntryFree(void *payload) { qemuSharedDeviceEntryPtr entry =3D payload; size_t i; @@ -1566,7 +1566,7 @@ qemuSharedDeviceEntryInsert(virQEMUDriverPtr driver, return 0; =20 error: - qemuSharedDeviceEntryFree(entry, NULL); + qemuSharedDeviceEntryFree(entry); return -1; } =20 diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 7334a440f8..95b33a1093 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -338,7 +338,7 @@ bool qemuSharedDeviceEntryDomainExists(qemuSharedDevice= EntryPtr entry, char *qemuGetSharedDeviceKey(const char *disk_path) ATTRIBUTE_NONNULL(1); =20 -void qemuSharedDeviceEntryFree(void *payload, const void *name); +void qemuSharedDeviceEntryFree(void *payload); =20 int qemuAddSharedDisk(virQEMUDriverPtr driver, virDomainDiskDefPtr disk, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index c4d5f08541..168e7464a9 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2063,8 +2063,7 @@ qemuDomainSetPrivatePaths(virQEMUDriverPtr driver, =20 =20 static void -dbusVMStateHashFree(void *opaque, - const void *name G_GNUC_UNUSED) +dbusVMStateHashFree(void *opaque) { qemuDBusVMStateFree(opaque); } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 6b667728aa..c38bf342d7 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5432,8 +5432,7 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, virDo= mainObjPtr vm) =20 =20 static void -qemuMigrationDstErrorFree(void *data, - const void *name G_GNUC_UNUSED) +qemuMigrationDstErrorFree(void *data) { virErrorPtr err =3D data; virFreeError(err); diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 231387a3f3..a48305b046 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -2109,7 +2109,7 @@ qemuMonitorBlockIOStatusToError(const char *status) =20 =20 static void -qemuDomainDiskInfoFree(void *value, const void *name G_GNUC_UNUSED) +qemuDomainDiskInfoFree(void *value) { struct qemuDomainDiskInfo *info =3D value; =20 @@ -2774,8 +2774,7 @@ qemuMonitorQueryRxFilter(qemuMonitorPtr mon, const ch= ar *alias, =20 =20 void -qemuMonitorChardevInfoFree(void *data, - const void *name G_GNUC_UNUSED) +qemuMonitorChardevInfoFree(void *data) { qemuMonitorChardevInfoPtr info =3D data; =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index d30d075b43..a17d7200c2 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -882,7 +882,7 @@ struct _qemuMonitorChardevInfo { char *ptyPath; virDomainChrDeviceState state; }; -void qemuMonitorChardevInfoFree(void *data, const void *name); +void qemuMonitorChardevInfoFree(void *data); int qemuMonitorGetChardevInfo(qemuMonitorPtr mon, virHashTablePtr *retinfo); =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index c729450a52..4d38030179 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -2925,7 +2925,7 @@ qemuMonitorJSONBlockGetNamedNodeData(qemuMonitorPtr m= on) if (!(nodes =3D qemuMonitorJSONQueryNamedBlockNodes(mon))) return NULL; =20 - if (!(ret =3D virHashNew((virHashDataFreeSimple) qemuMonitorJSONBlockN= amedNodeDataFree))) + if (!(ret =3D virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNo= deDataFree))) return NULL; =20 if (virJSONValueArrayForeachSteal(nodes, diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c index a70ffdf748..87ed9f4565 100644 --- a/src/util/vircgroup.c +++ b/src/util/vircgroup.c @@ -2583,7 +2583,7 @@ virCgroupKillRecursive(virCgroupPtr group, int signum) bool backendAvailable =3D false; virCgroupBackendPtr *backends =3D virCgroupBackendGetAll(); virHashTablePtr pids =3D virHashCreateFull(100, - NULL, NULL, + NULL, virCgroupPidCode, virCgroupPidEqual, virCgroupPidCopy, diff --git a/src/util/virhash.c b/src/util/virhash.c index 1df7f6efca..313ca57a54 100644 --- a/src/util/virhash.c +++ b/src/util/virhash.c @@ -56,7 +56,6 @@ struct _virHashTable { size_t size; size_t nbElems; virHashDataFree dataFree; - virHashDataFreeSimple dataFreeSimple; virHashKeyCode keyCode; virHashKeyEqual keyEqual; virHashKeyCopy keyCopy; @@ -106,7 +105,7 @@ static void virHashStrFree(void *name) =20 =20 void -virHashValueFree(void *value, const void *name G_GNUC_UNUSED) +virHashValueFree(void *value) { VIR_FREE(value); } @@ -134,7 +133,6 @@ virHashComputeKey(const virHashTable *table, const void= *name) */ virHashTablePtr virHashCreateFull(ssize_t size, virHashDataFree dataFree, - virHashDataFreeSimple dataFreeSimple, virHashKeyCode keyCode, virHashKeyEqual keyEqual, virHashKeyCopy keyCopy, @@ -151,10 +149,7 @@ virHashTablePtr virHashCreateFull(ssize_t size, table->seed =3D virRandomBits(32); table->size =3D size; table->nbElems =3D 0; - if (dataFree) - table->dataFree =3D dataFree; - else - table->dataFreeSimple =3D dataFreeSimple; + table->dataFree =3D dataFree; table->keyCode =3D keyCode; table->keyEqual =3D keyEqual; table->keyCopy =3D keyCopy; @@ -178,10 +173,9 @@ virHashTablePtr virHashCreateFull(ssize_t size, * Returns the newly created object, or NULL if an error occurred. */ virHashTablePtr -virHashNew(virHashDataFreeSimple dataFree) +virHashNew(virHashDataFree dataFree) { return virHashCreateFull(32, - NULL, dataFree, virHashStrCode, virHashStrEqual, @@ -203,7 +197,6 @@ virHashTablePtr virHashCreate(ssize_t size, virHashData= Free dataFree) { return virHashCreateFull(size, dataFree, - NULL, virHashStrCode, virHashStrEqual, virHashStrCopy, @@ -324,9 +317,7 @@ virHashFree(virHashTablePtr table) virHashEntryPtr next =3D iter->next; =20 if (table->dataFree) - table->dataFree(iter->payload, iter->name); - if (table->dataFreeSimple) - table->dataFreeSimple(iter->payload); + table->dataFree(iter->payload); if (table->keyFree) table->keyFree(iter->name); VIR_FREE(iter); @@ -358,9 +349,7 @@ virHashAddOrUpdateEntry(virHashTablePtr table, const vo= id *name, if (table->keyEqual(entry->name, name)) { if (is_update) { if (table->dataFree) - table->dataFree(entry->payload, entry->name); - if (table->dataFreeSimple) - table->dataFreeSimple(entry->payload); + table->dataFree(entry->payload); entry->payload =3D userdata; return 0; } else { @@ -518,12 +507,9 @@ void *virHashSteal(virHashTablePtr table, const void *= name) void *data =3D virHashLookup(table, name); if (data) { virHashDataFree dataFree =3D table->dataFree; - virHashDataFreeSimple dataFreeSimple =3D table->dataFreeSimple; table->dataFree =3D NULL; - table->dataFreeSimple =3D NULL; virHashRemoveEntry(table, name); table->dataFree =3D dataFree; - table->dataFreeSimple =3D dataFreeSimple; } return data; } @@ -601,7 +587,7 @@ virHashRemoveEntry(virHashTablePtr table, const void *n= ame) for (entry =3D *nextptr; entry; entry =3D entry->next) { if (table->keyEqual(entry->name, name)) { if (table->dataFree) - table->dataFree(entry->payload, entry->name); + table->dataFree(entry->payload); if (table->keyFree) table->keyFree(entry->name); *nextptr =3D entry->next; @@ -689,7 +675,7 @@ virHashRemoveSet(virHashTablePtr table, } else { count++; if (table->dataFree) - table->dataFree(entry->payload, entry->name); + table->dataFree(entry->payload); if (table->keyFree) table->keyFree(entry->name); *nextptr =3D entry->next; diff --git a/src/util/virhash.h b/src/util/virhash.h index 8087965ee9..6318c0b3cd 100644 --- a/src/util/virhash.h +++ b/src/util/virhash.h @@ -25,19 +25,10 @@ typedef virHashAtomic *virHashAtomicPtr; /** * virHashDataFree: * @payload: the data in the hash - * @name: the name associated * * Callback to free data from a hash. */ -typedef void (*virHashDataFree) (void *payload, const void *name); -/** - * virHashDataFreeSimple: - * @payload: the data in the hash - * @name: the name associated - * - * Callback to free data from a hash. - */ -typedef void (*virHashDataFreeSimple) (void *payload); +typedef void (*virHashDataFree) (void *payload); =20 /** * virHashIterator: @@ -107,14 +98,13 @@ typedef void (*virHashKeyFree)(void *name); /* * Constructor and destructor. */ -virHashTablePtr virHashNew(virHashDataFreeSimple dataFree); +virHashTablePtr virHashNew(virHashDataFree dataFree); virHashTablePtr virHashCreate(ssize_t size, virHashDataFree dataFree); virHashAtomicPtr virHashAtomicNew(ssize_t size, virHashDataFree dataFree); virHashTablePtr virHashCreateFull(ssize_t size, virHashDataFree dataFree, - virHashDataFreeSimple dataFreeSimple, virHashKeyCode keyCode, virHashKeyEqual keyEqual, virHashKeyCopy keyCopy, @@ -203,6 +193,6 @@ void *virHashSearch(const virHashTable *table, virHashS= earcher iter, const void *data, void **name); =20 /* Convenience for when VIR_FREE(value) is sufficient as a data freer. */ -void virHashValueFree(void *value, const void *name); +void virHashValueFree(void *value); =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHashTable, virHashFree); diff --git a/src/util/virjson.c b/src/util/virjson.c index 76efb17e24..c57dc11f78 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -425,8 +425,7 @@ virJSONValueFree(virJSONValuePtr value) =20 =20 void -virJSONValueHashFree(void *opaque, - const void *name G_GNUC_UNUSED) +virJSONValueHashFree(void *opaque) { virJSONValueFree(opaque); } diff --git a/src/util/virjson.h b/src/util/virjson.h index fa8571c73b..7a6b063b17 100644 --- a/src/util/virjson.h +++ b/src/util/virjson.h @@ -42,7 +42,7 @@ typedef struct _virJSONValue virJSONValue; typedef virJSONValue *virJSONValuePtr; =20 void virJSONValueFree(virJSONValuePtr value); -void virJSONValueHashFree(void *opaque, const void *name); +void virJSONValueHashFree(void *opaque); =20 virJSONType virJSONValueGetType(const virJSONValue *value); =20 diff --git a/src/util/virkeyfile.c b/src/util/virkeyfile.c index c7e756d26a..dc7a558c6f 100644 --- a/src/util/virkeyfile.c +++ b/src/util/virkeyfile.c @@ -265,7 +265,7 @@ static int virKeyFileParse(virKeyFilePtr conf, } =20 =20 -static void virKeyFileEntryFree(void *payload, const void *name G_GNUC_UNU= SED) +static void virKeyFileEntryFree(void *payload) { virHashFree(payload); } diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c index b7e1b6cfda..59d47daae8 100644 --- a/src/util/virlockspace.c +++ b/src/util/virlockspace.c @@ -231,7 +231,7 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace, } =20 =20 -static void virLockSpaceResourceDataFree(void *opaque, const void *name G_= GNUC_UNUSED) +static void virLockSpaceResourceDataFree(void *opaque) { virLockSpaceResourcePtr res =3D opaque; virLockSpaceResourceFree(res); diff --git a/src/util/virobject.c b/src/util/virobject.c index 812b013e72..5af14234f2 100644 --- a/src/util/virobject.c +++ b/src/util/virobject.c @@ -589,8 +589,7 @@ void virObjectFreeCallback(void *opaque) * typedef. */ void -virObjectFreeHashData(void *opaque, - const void *name G_GNUC_UNUSED) +virObjectFreeHashData(void *opaque) { virObjectUnref(opaque); } diff --git a/src/util/virobject.h b/src/util/virobject.h index 7cb3457021..5c4bcf4dde 100644 --- a/src/util/virobject.h +++ b/src/util/virobject.h @@ -123,8 +123,7 @@ void virObjectFreeCallback(void *opaque); =20 void -virObjectFreeHashData(void *opaque, - const void *name); +virObjectFreeHashData(void *opaque); =20 void * virObjectLockableNew(virClassPtr klass) diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c index 1f9eddf70b..2acb54d41e 100644 --- a/src/util/virsystemd.c +++ b/src/util/virsystemd.c @@ -619,12 +619,12 @@ int virSystemdCanHybridSleep(bool *result) =20 =20 static void -virSystemdActivationEntryFree(void *data, const void *name) +virSystemdActivationEntryFree(void *data) { virSystemdActivationEntryPtr ent =3D data; size_t i; =20 - VIR_DEBUG("Closing activation FDs for %s", (const char *)name); + VIR_DEBUG("Closing activation FDs"); for (i =3D 0; i < ent->nfds; i++) { VIR_DEBUG("Closing activation FD %d", ent->fds[i]); VIR_FORCE_CLOSE(ent->fds[i]); @@ -647,7 +647,7 @@ virSystemdActivationAddFD(virSystemdActivationPtr act, return -1; =20 if (VIR_ALLOC_N(ent->fds, 1) < 0) { - virSystemdActivationEntryFree(ent, name); + virSystemdActivationEntryFree(ent); return -1; } =20 @@ -655,7 +655,7 @@ virSystemdActivationAddFD(virSystemdActivationPtr act, =20 VIR_DEBUG("Record first FD %d with name %s", fd, name); if (virHashAddEntry(act->fds, name, ent) < 0) { - virSystemdActivationEntryFree(ent, name); + virSystemdActivationEntryFree(ent); return -1; } =20 --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list