summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2022-08-29 16:59:44 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-01-06 15:30:09 +0100
commitaa47051bf44dee52a8cdedeefad38f8596cf5a70 (patch)
tree2ab34216b1c192469369eb2357a470666fa3f53f /src
parent38607ea891fbe5bd8bd05161e4a371a9890b8b4f (diff)
downloadlibvirt-aa47051bf44dee52a8cdedeefad38f8596cf5a70.tar.gz
virclosecallbacks: Remove old close callbacks code
Now that all code was refactored to use the new version we can remove the old code. For now the new close callbacks code has no error messages so syntax-check forced me to remove the POTFILES entry for virclosecallbacks.c Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/hypervisor/virclosecallbacks.c282
-rw-r--r--src/hypervisor/virclosecallbacks.h27
-rw-r--r--src/libvirt_private.syms5
3 files changed, 0 insertions, 314 deletions
diff --git a/src/hypervisor/virclosecallbacks.c b/src/hypervisor/virclosecallbacks.c
index fd6226304e..ab27be4d6f 100644
--- a/src/hypervisor/virclosecallbacks.c
+++ b/src/hypervisor/virclosecallbacks.c
@@ -29,288 +29,6 @@
VIR_LOG_INIT("util.closecallbacks");
-typedef struct _virDriverCloseDef virDriverCloseDef;
-struct _virDriverCloseDef {
- virConnectPtr conn;
- virCloseCallback cb;
-};
-
-struct _virCloseCallbacks {
- virObjectLockable parent;
-
- /* UUID string to qemuDriverCloseDef mapping */
- GHashTable *list;
-};
-
-
-static virClass *virCloseCallbacksClass;
-static void virCloseCallbacksDispose(void *obj);
-
-static int virCloseCallbacksOnceInit(void)
-{
- if (!VIR_CLASS_NEW(virCloseCallbacks, virClassForObjectLockable()))
- return -1;
-
- return 0;
-}
-
-VIR_ONCE_GLOBAL_INIT(virCloseCallbacks);
-
-
-virCloseCallbacks *
-virCloseCallbacksNew(void)
-{
- virCloseCallbacks *closeCallbacks;
-
- if (virCloseCallbacksInitialize() < 0)
- return NULL;
-
- if (!(closeCallbacks = virObjectLockableNew(virCloseCallbacksClass)))
- return NULL;
-
- closeCallbacks->list = virHashNew(g_free);
-
- return closeCallbacks;
-}
-
-static void
-virCloseCallbacksDispose(void *obj)
-{
- virCloseCallbacks *closeCallbacks = obj;
-
- g_clear_pointer(&closeCallbacks->list, g_hash_table_unref);
-}
-
-int
-virCloseCallbacksSet(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virConnectPtr conn,
- virCloseCallback cb)
-{
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virDriverCloseDef *closeDef;
- int ret = -1;
-
- virUUIDFormat(vm->def->uuid, uuidstr);
- VIR_DEBUG("vm=%s, uuid=%s, conn=%p, cb=%p",
- vm->def->name, uuidstr, conn, cb);
-
- virObjectLock(closeCallbacks);
-
- closeDef = virHashLookup(closeCallbacks->list, uuidstr);
- if (closeDef) {
- if (closeDef->conn != conn) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Close callback for domain %s already registered"
- " with another connection %p"),
- vm->def->name, closeDef->conn);
- goto cleanup;
- }
- if (closeDef->cb && closeDef->cb != cb) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Another close callback is already defined for"
- " domain %s"), vm->def->name);
- goto cleanup;
- }
-
- closeDef->cb = cb;
- } else {
- closeDef = g_new0(virDriverCloseDef, 1);
- closeDef->conn = conn;
- closeDef->cb = cb;
- if (virHashAddEntry(closeCallbacks->list, uuidstr, closeDef) < 0) {
- VIR_FREE(closeDef);
- goto cleanup;
- }
- virObjectRef(vm);
- }
-
- virObjectRef(closeCallbacks);
- ret = 0;
- cleanup:
- virObjectUnlock(closeCallbacks);
- return ret;
-}
-
-int
-virCloseCallbacksUnset(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virCloseCallback cb)
-{
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virDriverCloseDef *closeDef;
- int ret = -1;
-
- virUUIDFormat(vm->def->uuid, uuidstr);
- VIR_DEBUG("vm=%s, uuid=%s, cb=%p",
- vm->def->name, uuidstr, cb);
-
- virObjectLock(closeCallbacks);
-
- closeDef = virHashLookup(closeCallbacks->list, uuidstr);
- if (!closeDef)
- goto cleanup;
-
- if (closeDef->cb && closeDef->cb != cb) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Trying to remove mismatching close callback for"
- " domain %s"), vm->def->name);
- goto cleanup;
- }
-
- if (virHashRemoveEntry(closeCallbacks->list, uuidstr) < 0)
- goto cleanup;
-
- virObjectUnref(vm);
- ret = 0;
- cleanup:
- virObjectUnlock(closeCallbacks);
- if (!ret)
- virObjectUnref(closeCallbacks);
- return ret;
-}
-
-virCloseCallback
-virCloseCallbacksGet(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virConnectPtr conn)
-{
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virDriverCloseDef *closeDef;
- virCloseCallback cb = NULL;
-
- virUUIDFormat(vm->def->uuid, uuidstr);
- VIR_DEBUG("vm=%s, uuid=%s, conn=%p",
- vm->def->name, uuidstr, conn);
-
- virObjectLock(closeCallbacks);
-
- closeDef = virHashLookup(closeCallbacks->list, uuidstr);
- if (closeDef && (!conn || closeDef->conn == conn))
- cb = closeDef->cb;
-
- virObjectUnlock(closeCallbacks);
-
- VIR_DEBUG("cb=%p", cb);
- return cb;
-}
-
-typedef struct _virCloseCallbacksListEntry virCloseCallbacksListEntry;
-struct _virCloseCallbacksListEntry {
- unsigned char uuid[VIR_UUID_BUFLEN];
- virCloseCallback callback;
-};
-
-typedef struct _virCloseCallbacksList virCloseCallbacksList;
-struct _virCloseCallbacksList {
- size_t nentries;
- virCloseCallbacksListEntry *entries;
-};
-
-struct virCloseCallbacksData {
- virConnectPtr conn;
- virCloseCallbacksList *list;
-};
-
-static int
-virCloseCallbacksGetOne(void *payload,
- const char *key,
- void *opaque)
-{
- struct virCloseCallbacksData *data = opaque;
- virDriverCloseDef *closeDef = payload;
- const char *uuidstr = key;
- unsigned char uuid[VIR_UUID_BUFLEN];
-
- if (virUUIDParse(uuidstr, uuid) < 0)
- return 0;
-
- VIR_DEBUG("conn=%p, thisconn=%p, uuid=%s, cb=%p",
- closeDef->conn, data->conn, uuidstr, closeDef->cb);
-
- if (data->conn != closeDef->conn || !closeDef->cb)
- return 0;
-
- VIR_EXPAND_N(data->list->entries, data->list->nentries, 1);
-
- memcpy(data->list->entries[data->list->nentries - 1].uuid,
- uuid, VIR_UUID_BUFLEN);
- data->list->entries[data->list->nentries - 1].callback = closeDef->cb;
- return 0;
-}
-
-static virCloseCallbacksList *
-virCloseCallbacksGetForConn(virCloseCallbacks *closeCallbacks,
- virConnectPtr conn)
-{
- virCloseCallbacksList *list = NULL;
- struct virCloseCallbacksData data;
-
- list = g_new0(virCloseCallbacksList, 1);
-
- data.conn = conn;
- data.list = list;
-
- virHashForEach(closeCallbacks->list, virCloseCallbacksGetOne, &data);
-
- return list;
-}
-
-
-void
-virCloseCallbacksRun(virCloseCallbacks *closeCallbacks,
- virConnectPtr conn,
- virDomainObjList *domains)
-{
- virCloseCallbacksList *list;
- size_t i;
-
- VIR_DEBUG("conn=%p", conn);
-
- /* We must not hold the lock while running the callbacks,
- * so first we obtain the list of callbacks, then remove
- * them all from the hash. At that point we can release
- * the lock and run the callbacks safely. */
-
- virObjectLock(closeCallbacks);
- list = virCloseCallbacksGetForConn(closeCallbacks, conn);
- if (!list) {
- virObjectUnlock(closeCallbacks);
- return;
- }
-
- for (i = 0; i < list->nentries; i++) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(list->entries[i].uuid, uuidstr);
- virHashRemoveEntry(closeCallbacks->list, uuidstr);
- }
- virObjectUnlock(closeCallbacks);
-
- for (i = 0; i < list->nentries; i++) {
- virDomainObj *vm;
-
- /* Grab a ref and lock to the vm */
- if (!(vm = virDomainObjListFindByUUID(domains,
- list->entries[i].uuid))) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(list->entries[i].uuid, uuidstr);
- VIR_DEBUG("No domain object with UUID %s", uuidstr);
- continue;
- }
-
- /* Remove the ref taken out during virCloseCallbacksSet since
- * we're about to call the callback function and we have another
- * ref anyway (so it cannot be deleted).
- *
- * Call the callback function and end the API usage. */
- virObjectUnref(vm);
- list->entries[i].callback(vm, conn);
- virDomainObjEndAPI(&vm);
- }
- VIR_FREE(list->entries);
- VIR_FREE(list);
-}
-
struct _virCloseCallbacksDomainData {
virConnectPtr conn;
diff --git a/src/hypervisor/virclosecallbacks.h b/src/hypervisor/virclosecallbacks.h
index 0f4c08572c..cde93e8be5 100644
--- a/src/hypervisor/virclosecallbacks.h
+++ b/src/hypervisor/virclosecallbacks.h
@@ -22,36 +22,9 @@
#include "conf/virdomainobjlist.h"
-typedef struct _virCloseCallbacks virCloseCallbacks;
-
typedef void (*virCloseCallback)(virDomainObj *vm,
virConnectPtr conn);
-virCloseCallbacks *
-virCloseCallbacksNew(void);
-
-int
-virCloseCallbacksSet(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virConnectPtr conn,
- virCloseCallback cb);
-int
-virCloseCallbacksUnset(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virCloseCallback cb);
-
-virCloseCallback
-virCloseCallbacksGet(virCloseCallbacks *closeCallbacks,
- virDomainObj *vm,
- virConnectPtr conn);
-
-void
-virCloseCallbacksRun(virCloseCallbacks *closeCallbacks,
- virConnectPtr conn,
- virDomainObjList *domains);
-
-/* ---- */
-
virObject *
virCloseCallbacksDomainAlloc(void);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index b1fa23729a..b81c2cc7da 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1612,11 +1612,6 @@ virCloseCallbacksDomainAlloc;
virCloseCallbacksDomainIsRegistered;
virCloseCallbacksDomainRemove;
virCloseCallbacksDomainRunForConn;
-virCloseCallbacksGet;
-virCloseCallbacksNew;
-virCloseCallbacksRun;
-virCloseCallbacksSet;
-virCloseCallbacksUnset;
# hypervisor/virhostdev.h