mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 19:02:25 +00:00
util: consolidate on one free callback for hash data
This previous commit introduced a simpler free callback for hash data with only 1 arg, the value to free: commit 49288fac965f0ee23db45d83ae4ef3a9a71dafd0 Author: Peter Krempa <pkrempa@redhat.com> 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. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
feef23e130
commit
bc7e72914a
@ -1037,14 +1037,14 @@ virDomainPCIAddressSetExtensionAlloc(virDomainPCIAddressSetPtr addrs,
|
||||
if (VIR_ALLOC(addrs->zpciIds) < 0)
|
||||
return -1;
|
||||
|
||||
if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL, NULL,
|
||||
if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL,
|
||||
virZPCIAddrKeyCode,
|
||||
virZPCIAddrKeyEqual,
|
||||
virZPCIAddrKeyCopy,
|
||||
virZPCIAddrKeyFree)))
|
||||
goto error;
|
||||
|
||||
if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL, NULL,
|
||||
if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL,
|
||||
virZPCIAddrKeyCode,
|
||||
virZPCIAddrKeyEqual,
|
||||
virZPCIAddrKeyCopy,
|
||||
|
@ -619,7 +619,7 @@ virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIterPtr ci,
|
||||
}
|
||||
|
||||
static void
|
||||
hashDataFree(void *payload, const void *name G_GNUC_UNUSED)
|
||||
hashDataFree(void *payload)
|
||||
{
|
||||
virNWFilterVarValueFree(payload);
|
||||
}
|
||||
|
@ -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_UNUSED)
|
||||
static void virChrdevHashEntryFree(void *data)
|
||||
{
|
||||
virChrdevHashEntry *ent = data;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
@ -262,8 +262,7 @@ virDomainMomentAssignDef(virDomainMomentObjListPtr moments,
|
||||
|
||||
|
||||
static void
|
||||
virDomainMomentObjListDataFree(void *payload,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
virDomainMomentObjListDataFree(void *payload)
|
||||
{
|
||||
virDomainMomentObjPtr obj = payload;
|
||||
|
||||
|
@ -94,7 +94,7 @@ virNetworkObjLoadAllPorts(virNetworkObjPtr net,
|
||||
|
||||
|
||||
static void
|
||||
virNetworkObjPortFree(void *val, const void *key G_GNUC_UNUSED)
|
||||
virNetworkObjPortFree(void *val)
|
||||
{
|
||||
virNetworkPortDefFree(val);
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ struct xentoollog_logger_libvirt {
|
||||
};
|
||||
|
||||
static void
|
||||
libxlLoggerFileFree(void *payload, const void *key G_GNUC_UNUSED)
|
||||
libxlLoggerFileFree(void *payload)
|
||||
{
|
||||
FILE *file = payload;
|
||||
VIR_FORCE_FCLOSE(file);
|
||||
|
@ -139,8 +139,7 @@ virLockDaemonUnlock(virLockDaemonPtr lockd)
|
||||
virMutexUnlock(&lockd->lock);
|
||||
}
|
||||
|
||||
static void virLockDaemonLockSpaceDataFree(void *data,
|
||||
const void *key G_GNUC_UNUSED)
|
||||
static void virLockDaemonLockSpaceDataFree(void *data)
|
||||
{
|
||||
virLockSpaceFree(data);
|
||||
}
|
||||
|
@ -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 = req0;
|
||||
|
||||
@ -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) != req) {
|
||||
virNWFilterSnoopReqRelease(req, NULL);
|
||||
virNWFilterSnoopReqRelease(req);
|
||||
} else if (!req->start || req->start->timeout < time(0)) {
|
||||
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.snoopReqs,
|
||||
req->ifkey));
|
||||
|
@ -307,7 +307,7 @@ virNWFilterHasLearnReq(int ifindex)
|
||||
|
||||
|
||||
static void
|
||||
freeLearnReqEntry(void *payload, const void *name G_GNUC_UNUSED)
|
||||
freeLearnReqEntry(void *payload)
|
||||
{
|
||||
virNWFilterIPAddrLearnReqFree(payload);
|
||||
}
|
||||
|
@ -93,8 +93,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuBlockNodeNameBackingChainData,
|
||||
|
||||
|
||||
static void
|
||||
qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
qemuBlockNodeNameBackingChainDataHashEntryFree(void *opaque)
|
||||
{
|
||||
qemuBlockNodeNameBackingChainDataFree(opaque);
|
||||
}
|
||||
|
@ -1516,7 +1516,7 @@ qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEntryPtr entry,
|
||||
}
|
||||
|
||||
void
|
||||
qemuSharedDeviceEntryFree(void *payload, const void *name G_GNUC_UNUSED)
|
||||
qemuSharedDeviceEntryFree(void *payload)
|
||||
{
|
||||
qemuSharedDeviceEntryPtr entry = payload;
|
||||
size_t i;
|
||||
@ -1566,7 +1566,7 @@ qemuSharedDeviceEntryInsert(virQEMUDriverPtr driver,
|
||||
return 0;
|
||||
|
||||
error:
|
||||
qemuSharedDeviceEntryFree(entry, NULL);
|
||||
qemuSharedDeviceEntryFree(entry);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -338,7 +338,7 @@ bool qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEntryPtr entry,
|
||||
char *qemuGetSharedDeviceKey(const char *disk_path)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
void qemuSharedDeviceEntryFree(void *payload, const void *name);
|
||||
void qemuSharedDeviceEntryFree(void *payload);
|
||||
|
||||
int qemuAddSharedDisk(virQEMUDriverPtr driver,
|
||||
virDomainDiskDefPtr disk,
|
||||
|
@ -2063,8 +2063,7 @@ qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
|
||||
|
||||
|
||||
static void
|
||||
dbusVMStateHashFree(void *opaque,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
dbusVMStateHashFree(void *opaque)
|
||||
{
|
||||
qemuDBusVMStateFree(opaque);
|
||||
}
|
||||
|
@ -5432,8 +5432,7 @@ qemuMigrationJobFinish(virQEMUDriverPtr driver, virDomainObjPtr vm)
|
||||
|
||||
|
||||
static void
|
||||
qemuMigrationDstErrorFree(void *data,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
qemuMigrationDstErrorFree(void *data)
|
||||
{
|
||||
virErrorPtr err = data;
|
||||
virFreeError(err);
|
||||
|
@ -2109,7 +2109,7 @@ qemuMonitorBlockIOStatusToError(const char *status)
|
||||
|
||||
|
||||
static void
|
||||
qemuDomainDiskInfoFree(void *value, const void *name G_GNUC_UNUSED)
|
||||
qemuDomainDiskInfoFree(void *value)
|
||||
{
|
||||
struct qemuDomainDiskInfo *info = value;
|
||||
|
||||
@ -2774,8 +2774,7 @@ qemuMonitorQueryRxFilter(qemuMonitorPtr mon, const char *alias,
|
||||
|
||||
|
||||
void
|
||||
qemuMonitorChardevInfoFree(void *data,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
qemuMonitorChardevInfoFree(void *data)
|
||||
{
|
||||
qemuMonitorChardevInfoPtr info = data;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -2925,7 +2925,7 @@ qemuMonitorJSONBlockGetNamedNodeData(qemuMonitorPtr mon)
|
||||
if (!(nodes = qemuMonitorJSONQueryNamedBlockNodes(mon)))
|
||||
return NULL;
|
||||
|
||||
if (!(ret = virHashNew((virHashDataFreeSimple) qemuMonitorJSONBlockNamedNodeDataFree)))
|
||||
if (!(ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree)))
|
||||
return NULL;
|
||||
|
||||
if (virJSONValueArrayForeachSteal(nodes,
|
||||
|
@ -2583,7 +2583,7 @@ virCgroupKillRecursive(virCgroupPtr group, int signum)
|
||||
bool backendAvailable = false;
|
||||
virCgroupBackendPtr *backends = virCgroupBackendGetAll();
|
||||
virHashTablePtr pids = virHashCreateFull(100,
|
||||
NULL, NULL,
|
||||
NULL,
|
||||
virCgroupPidCode,
|
||||
virCgroupPidEqual,
|
||||
virCgroupPidCopy,
|
||||
|
@ -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)
|
||||
|
||||
|
||||
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 = virRandomBits(32);
|
||||
table->size = size;
|
||||
table->nbElems = 0;
|
||||
if (dataFree)
|
||||
table->dataFree = dataFree;
|
||||
else
|
||||
table->dataFreeSimple = dataFreeSimple;
|
||||
table->dataFree = dataFree;
|
||||
table->keyCode = keyCode;
|
||||
table->keyEqual = keyEqual;
|
||||
table->keyCopy = 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, virHashDataFree dataFree)
|
||||
{
|
||||
return virHashCreateFull(size,
|
||||
dataFree,
|
||||
NULL,
|
||||
virHashStrCode,
|
||||
virHashStrEqual,
|
||||
virHashStrCopy,
|
||||
@ -324,9 +317,7 @@ virHashFree(virHashTablePtr table)
|
||||
virHashEntryPtr next = iter->next;
|
||||
|
||||
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 void *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 = userdata;
|
||||
return 0;
|
||||
} else {
|
||||
@ -518,12 +507,9 @@ void *virHashSteal(virHashTablePtr table, const void *name)
|
||||
void *data = virHashLookup(table, name);
|
||||
if (data) {
|
||||
virHashDataFree dataFree = table->dataFree;
|
||||
virHashDataFreeSimple dataFreeSimple = table->dataFreeSimple;
|
||||
table->dataFree = NULL;
|
||||
table->dataFreeSimple = NULL;
|
||||
virHashRemoveEntry(table, name);
|
||||
table->dataFree = dataFree;
|
||||
table->dataFreeSimple = dataFreeSimple;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
@ -601,7 +587,7 @@ virHashRemoveEntry(virHashTablePtr table, const void *name)
|
||||
for (entry = *nextptr; entry; entry = 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 = 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 = entry->next;
|
||||
|
@ -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);
|
||||
|
||||
/**
|
||||
* 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, virHashSearcher iter,
|
||||
const void *data, void **name);
|
||||
|
||||
/* Convenience for when VIR_FREE(value) is sufficient as a data freer. */
|
||||
void virHashValueFree(void *value, const void *name);
|
||||
void virHashValueFree(void *value);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHashTable, virHashFree);
|
||||
|
@ -425,8 +425,7 @@ virJSONValueFree(virJSONValuePtr value)
|
||||
|
||||
|
||||
void
|
||||
virJSONValueHashFree(void *opaque,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
virJSONValueHashFree(void *opaque)
|
||||
{
|
||||
virJSONValueFree(opaque);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ typedef struct _virJSONValue virJSONValue;
|
||||
typedef virJSONValue *virJSONValuePtr;
|
||||
|
||||
void virJSONValueFree(virJSONValuePtr value);
|
||||
void virJSONValueHashFree(void *opaque, const void *name);
|
||||
void virJSONValueHashFree(void *opaque);
|
||||
|
||||
virJSONType virJSONValueGetType(const virJSONValue *value);
|
||||
|
||||
|
@ -265,7 +265,7 @@ static int virKeyFileParse(virKeyFilePtr conf,
|
||||
}
|
||||
|
||||
|
||||
static void virKeyFileEntryFree(void *payload, const void *name G_GNUC_UNUSED)
|
||||
static void virKeyFileEntryFree(void *payload)
|
||||
{
|
||||
virHashFree(payload);
|
||||
}
|
||||
|
@ -231,7 +231,7 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace,
|
||||
}
|
||||
|
||||
|
||||
static void virLockSpaceResourceDataFree(void *opaque, const void *name G_GNUC_UNUSED)
|
||||
static void virLockSpaceResourceDataFree(void *opaque)
|
||||
{
|
||||
virLockSpaceResourcePtr res = opaque;
|
||||
virLockSpaceResourceFree(res);
|
||||
|
@ -589,8 +589,7 @@ void virObjectFreeCallback(void *opaque)
|
||||
* typedef.
|
||||
*/
|
||||
void
|
||||
virObjectFreeHashData(void *opaque,
|
||||
const void *name G_GNUC_UNUSED)
|
||||
virObjectFreeHashData(void *opaque)
|
||||
{
|
||||
virObjectUnref(opaque);
|
||||
}
|
||||
|
@ -123,8 +123,7 @@ void
|
||||
virObjectFreeCallback(void *opaque);
|
||||
|
||||
void
|
||||
virObjectFreeHashData(void *opaque,
|
||||
const void *name);
|
||||
virObjectFreeHashData(void *opaque);
|
||||
|
||||
void *
|
||||
virObjectLockableNew(virClassPtr klass)
|
||||
|
@ -619,12 +619,12 @@ int virSystemdCanHybridSleep(bool *result)
|
||||
|
||||
|
||||
static void
|
||||
virSystemdActivationEntryFree(void *data, const void *name)
|
||||
virSystemdActivationEntryFree(void *data)
|
||||
{
|
||||
virSystemdActivationEntryPtr ent = data;
|
||||
size_t i;
|
||||
|
||||
VIR_DEBUG("Closing activation FDs for %s", (const char *)name);
|
||||
VIR_DEBUG("Closing activation FDs");
|
||||
for (i = 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;
|
||||
|
||||
if (VIR_ALLOC_N(ent->fds, 1) < 0) {
|
||||
virSystemdActivationEntryFree(ent, name);
|
||||
virSystemdActivationEntryFree(ent);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -655,7 +655,7 @@ virSystemdActivationAddFD(virSystemdActivationPtr act,
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user