]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Revert "Asynchronous event for BlockPull completion"
authorEric Blake <eblake@redhat.com>
Thu, 23 Jun 2011 17:54:19 +0000 (11:54 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 24 Jun 2011 14:41:24 +0000 (08:41 -0600)
This reverts commit 12cd77a0c58a80179182f7d09e8e73f9f66b4677.

Conflicts:

python/libvirt-override-virConnect.py
python/libvirt-override.c
src/remote/remote_protocol.x

14 files changed:
daemon/remote.c
include/libvirt/libvirt.h.in
python/libvirt-override-virConnect.py
python/libvirt-override.c
src/conf/domain_event.c
src/conf/domain_event.h
src/libvirt_private.syms
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_process.c
src/remote/remote_driver.c
src/remote/remote_protocol.x
src/remote_protocol-structs

index 37fbed0ad19544950f37f43e4bd77192de9b574f..5e584275501df2826c78c6a13d1be9ff3a468948 100644 (file)
@@ -396,37 +396,6 @@ static int remoteRelayDomainEventGraphics(virConnectPtr conn ATTRIBUTE_UNUSED,
     return 0;
 }
 
-static int remoteRelayDomainEventBlockPull(virConnectPtr conn ATTRIBUTE_UNUSED,
-                                           virDomainPtr dom,
-                                           const char *path,
-                                           int status,
-                                           void *opaque)
-{
-    struct qemud_client *client = opaque;
-    remote_domain_event_block_pull_msg data;
-
-    if (!client)
-        return -1;
-
-    VIR_DEBUG("Relaying domain block pull event %s %d %s %i", dom->name, dom->id, path, status);
-
-    virMutexLock(&client->lock);
-
-    /* build return data */
-    memset(&data, 0, sizeof data);
-    make_nonnull_domain(&data.dom, dom);
-    data.path = (char*)path;
-    data.status = status;
-
-    remoteDispatchDomainEventSend(client,
-                                  REMOTE_PROC_DOMAIN_EVENT_BLOCK_PULL,
-                                  (xdrproc_t)xdr_remote_domain_event_block_pull_msg, &data);
-
-    virMutexUnlock(&client->lock);
-
-    return 0;
-}
-
 
 static int remoteRelayDomainEventControlError(virConnectPtr conn ATTRIBUTE_UNUSED,
                                               virDomainPtr dom,
@@ -465,7 +434,6 @@ static virConnectDomainEventGenericCallback domainEventCallbacks[] = {
     VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventGraphics),
     VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventIOErrorReason),
     VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventControlError),
-    VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventBlockPull),
 };
 
 verify(ARRAY_CARDINALITY(domainEventCallbacks) == VIR_DOMAIN_EVENT_ID_LAST);
index edf876ef48a23c8cabd6a4dc64a5274460266b90..f7c16fb7afd0883fd0be051ffcbe22d11a3c9da9 100644 (file)
@@ -2728,32 +2728,6 @@ typedef void (*virConnectDomainEventGraphicsCallback)(virConnectPtr conn,
                                                       virDomainEventGraphicsSubjectPtr subject,
                                                       void *opaque);
 
-/**
- * virConnectDomainEventBlockPullStatus:
- *
- * The final status of a virDomainBlockPullAll() operation
- */
-typedef enum {
-    VIR_DOMAIN_BLOCK_PULL_COMPLETED = 0,
-    VIR_DOMAIN_BLOCK_PULL_FAILED = 1,
-} virConnectDomainEventBlockPullStatus;
-
-/**
- * virConnectDomainEventBlockPullCallback:
- * @conn: connection object
- * @dom: domain on which the event occurred
- * @path: fully-qualified filename of the affected disk
- * @status: final status of the operation (virConnectDomainEventBlockPullStatus)
- *
- * The callback signature to use when registering for an event of type
- * VIR_DOMAIN_EVENT_ID_BLOCK_PULL with virConnectDomainEventRegisterAny()
- */
-typedef void (*virConnectDomainEventBlockPullCallback)(virConnectPtr conn,
-                                                       virDomainPtr dom,
-                                                       const char *path,
-                                                       int status,
-                                                       void *opaque);
-
 /**
  * VIR_DOMAIN_EVENT_CALLBACK:
  *
@@ -2772,7 +2746,6 @@ typedef enum {
     VIR_DOMAIN_EVENT_ID_GRAPHICS = 5,        /* virConnectDomainEventGraphicsCallback */
     VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON = 6, /* virConnectDomainEventIOErrorReasonCallback */
     VIR_DOMAIN_EVENT_ID_CONTROL_ERROR = 7,   /* virConnectDomainEventGenericCallback */
-    VIR_DOMAIN_EVENT_ID_BLOCK_PULL = 8,      /* virConnectDomainEventBlockPullCallback */
 
     /*
      * NB: this enum value will increase over time as new events are
index 5be965938f874aed77f9cb28c3362f200ef4edb0..eeeedf9a167ccaea275ba17c256ed1b0280c83dd 100644 (file)
            authScheme, subject, opaque)
         return 0
 
-    def _dispatchDomainEventBlockPullCallback(self, dom, path, status, cbData):
-        """Dispatches events to python user domain blockPull event callbacks
-        """
-        cb = cbData["cb"]
-        opaque = cbData["opaque"]
-
-        cb(self, virDomain(self, _obj=dom), path, status, opaque)
-        return 0
-
     def domainEventDeregisterAny(self, callbackID):
         """Removes a Domain Event Callback. De-registering for a
            domain callback will disable delivery of this event type """
index e7426a5ffa7778211bcc57df2d766ae31ac19bd5..837c9a6f523876d368447180f6ace96d67050e9f 100644 (file)
@@ -3597,54 +3597,6 @@ libvirt_virConnectDomainEventGraphicsCallback(virConnectPtr conn ATTRIBUTE_UNUSE
     return ret;
 }
 
-static int
-libvirt_virConnectDomainEventBlockPullCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
-                                               virDomainPtr dom,
-                                               const char *path,
-                                               int status,
-                                               void *opaque)
-{
-    PyObject *pyobj_cbData = (PyObject*)opaque;
-    PyObject *pyobj_dom;
-    PyObject *pyobj_ret;
-    PyObject *pyobj_conn;
-    PyObject *dictKey;
-    int ret = -1;
-
-    LIBVIRT_ENSURE_THREAD_STATE;
-
-    /* Create a python instance of this virDomainPtr */
-    virDomainRef(dom);
-    pyobj_dom = libvirt_virDomainPtrWrap(dom);
-    Py_INCREF(pyobj_cbData);
-
-    dictKey = libvirt_constcharPtrWrap("conn");
-    pyobj_conn = PyDict_GetItem(pyobj_cbData, dictKey);
-    Py_DECREF(dictKey);
-
-    /* Call the Callback Dispatcher */
-    pyobj_ret = PyObject_CallMethod(pyobj_conn,
-                                    (char*)"_dispatchDomainEventBlockPullCallback",
-                                    (char*)"OsiO",
-                                    pyobj_dom, path, status, pyobj_cbData);
-
-    Py_DECREF(pyobj_cbData);
-    Py_DECREF(pyobj_dom);
-
-    if(!pyobj_ret) {
-#if DEBUG_ERROR
-        printf("%s - ret:%p\n", __FUNCTION__, pyobj_ret);
-#endif
-        PyErr_Print();
-    } else {
-        Py_DECREF(pyobj_ret);
-        ret = 0;
-    }
-
-    LIBVIRT_RELEASE_THREAD_STATE;
-    return ret;
-}
-
 static PyObject *
 libvirt_virConnectDomainEventRegisterAny(ATTRIBUTE_UNUSED PyObject * self,
                                          PyObject * args)
@@ -3699,9 +3651,6 @@ libvirt_virConnectDomainEventRegisterAny(ATTRIBUTE_UNUSED PyObject * self,
     case VIR_DOMAIN_EVENT_ID_CONTROL_ERROR:
         cb = VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGenericCallback);
         break;
-    case VIR_DOMAIN_EVENT_ID_BLOCK_PULL:
-        cb = VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBlockPullCallback);
-        break;
     }
 
     if (!cb) {
index 785e9e4c862fa5d31f625e1b5927d0139f9a5a1f..c435484a20a5468f7841839d100c72069e313220 100644 (file)
@@ -83,10 +83,6 @@ struct _virDomainEvent {
             char *authScheme;
             virDomainEventGraphicsSubjectPtr subject;
         } graphics;
-        struct {
-            char *path;
-            int status;
-        } blockPull;
     } data;
 };
 
@@ -503,11 +499,6 @@ void virDomainEventFree(virDomainEventPtr event)
             }
             VIR_FREE(event->data.graphics.subject);
         }
-        break;
-
-    case VIR_DOMAIN_EVENT_ID_BLOCK_PULL:
-        VIR_FREE(event->data.blockPull.path);
-        break;
     }
 
     VIR_FREE(event->dom.name);
@@ -883,41 +874,6 @@ virDomainEventPtr virDomainEventGraphicsNewFromObj(virDomainObjPtr obj,
     return ev;
 }
 
-static virDomainEventPtr
-virDomainEventBlockPullNew(int id, const char *name, unsigned char *uuid,
-                           const char *path, int status)
-{
-    virDomainEventPtr ev =
-        virDomainEventNewInternal(VIR_DOMAIN_EVENT_ID_BLOCK_PULL,
-                                  id, name, uuid);
-
-    if (ev) {
-        if (!(ev->data.blockPull.path = strdup(path))) {
-            virReportOOMError();
-            virDomainEventFree(ev);
-            return NULL;
-        }
-        ev->data.blockPull.status = status;
-    }
-
-    return ev;
-}
-
-virDomainEventPtr virDomainEventBlockPullNewFromObj(virDomainObjPtr obj,
-                                                    const char *path,
-                                                    int status)
-{
-    return virDomainEventBlockPullNew(obj->def->id, obj->def->name,
-                                                 obj->def->uuid, path, status);
-}
-
-virDomainEventPtr virDomainEventBlockPullNewFromDom(virDomainPtr dom,
-                                                    const char *path,
-                                                    int status)
-{
-    return virDomainEventBlockPullNew(dom->id, dom->name, dom->uuid,
-                                                 path, status);
-}
 
 virDomainEventPtr virDomainEventControlErrorNewFromDom(virDomainPtr dom)
 {
@@ -1071,13 +1027,6 @@ void virDomainEventDispatchDefaultFunc(virConnectPtr conn,
              cbopaque);
         break;
 
-    case VIR_DOMAIN_EVENT_ID_BLOCK_PULL:
-        ((virConnectDomainEventBlockPullCallback)cb)(conn, dom,
-                                                     event->data.blockPull.path,
-                                                     event->data.blockPull.status,
-                                                     cbopaque);
-        break;
-
     default:
         VIR_WARN("Unexpected event ID %d", event->eventID);
         break;
index ea481b3a0d6ad4a31f7ede05c2ca93bd46226724..f56408f615a7eb456a927628ba12306faf725e0f 100644 (file)
@@ -169,12 +169,7 @@ virDomainEventPtr virDomainEventGraphicsNewFromObj(virDomainObjPtr obj,
 virDomainEventPtr virDomainEventControlErrorNewFromDom(virDomainPtr dom);
 virDomainEventPtr virDomainEventControlErrorNewFromObj(virDomainObjPtr obj);
 
-virDomainEventPtr virDomainEventBlockPullNewFromObj(virDomainObjPtr obj,
-                                                    const char *path,
-                                                    int status);
-virDomainEventPtr virDomainEventBlockPullNewFromDom(virDomainPtr dom,
-                                                    const char *path,
-                                                    int status);
+
 
 int virDomainEventQueuePush(virDomainEventQueuePtr evtQueue,
                             virDomainEventPtr event);
index d9d391364a8fd4e998de1c7cb013af280d58fa8b..b7f8a8c09fd65046726bb5b973c8626b42376d3a 100644 (file)
@@ -382,8 +382,6 @@ virDomainWatchdogModelTypeToString;
 
 
 # domain_event.h
-virDomainEventBlockPullNewFromObj;
-virDomainEventBlockPullNewFromDom;
 virDomainEventCallbackListAdd;
 virDomainEventCallbackListAddID;
 virDomainEventCallbackListCount;
index 2aa5c9a97763433b4ae93a40cab7dea02b147afd..5e55d5173efd50ae6599f5fbc1f8fadb4a7f16a8 100644 (file)
@@ -956,18 +956,6 @@ int qemuMonitorEmitGraphics(qemuMonitorPtr mon,
     return ret;
 }
 
-int qemuMonitorEmitBlockPull(qemuMonitorPtr mon,
-                             const char *diskAlias,
-                             int status)
-{
-    int ret = -1;
-    VIR_DEBUG("mon=%p", mon);
-
-    QEMU_MONITOR_CALLBACK(mon, ret, domainBlockPull, mon->vm,
-                          diskAlias, status);
-    return ret;
-}
-
 
 
 int qemuMonitorSetCapabilities(qemuMonitorPtr mon)
index ae74a3ceb663b9eb747c4ce839d286915bd64f0b..b172e20e399d677c689981dbd543c4a03da011c6 100644 (file)
@@ -117,10 +117,6 @@ struct _qemuMonitorCallbacks {
                           const char *authScheme,
                           const char *x509dname,
                           const char *saslUsername);
-    int (*domainBlockPull)(qemuMonitorPtr mon,
-                           virDomainObjPtr vm,
-                           const char *diskAlias,
-                           int status);
 };
 
 
@@ -183,10 +179,6 @@ int qemuMonitorEmitGraphics(qemuMonitorPtr mon,
                             const char *authScheme,
                             const char *x509dname,
                             const char *saslUsername);
-int qemuMonitorEmitBlockPull(qemuMonitorPtr mon,
-                             const char *diskAlias,
-                             int status);
-
 
 
 int qemuMonitorStartCPUs(qemuMonitorPtr mon,
index 6cc6ea786106920b8fd9ca92a26ebf43707b5602..320a41f6b928bead1d8757d9c6f52789919b92c4 100644 (file)
@@ -56,7 +56,6 @@ static void qemuMonitorJSONHandleIOError(qemuMonitorPtr mon, virJSONValuePtr dat
 static void qemuMonitorJSONHandleVNCConnect(qemuMonitorPtr mon, virJSONValuePtr data);
 static void qemuMonitorJSONHandleVNCInitialize(qemuMonitorPtr mon, virJSONValuePtr data);
 static void qemuMonitorJSONHandleVNCDisconnect(qemuMonitorPtr mon, virJSONValuePtr data);
-static void qemuMonitorJSONHandleBlockPull(qemuMonitorPtr mon, virJSONValuePtr data);
 
 struct {
     const char *type;
@@ -72,7 +71,6 @@ struct {
     { "VNC_CONNECTED", qemuMonitorJSONHandleVNCConnect, },
     { "VNC_INITIALIZED", qemuMonitorJSONHandleVNCInitialize, },
     { "VNC_DISCONNECTED", qemuMonitorJSONHandleVNCDisconnect, },
-    { "BLOCK_STREAM_COMPLETED", qemuMonitorJSONHandleBlockPull, },
 };
 
 
@@ -681,34 +679,6 @@ static void qemuMonitorJSONHandleVNCDisconnect(qemuMonitorPtr mon, virJSONValueP
     qemuMonitorJSONHandleVNC(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_DISCONNECT);
 }
 
-static void qemuMonitorJSONHandleBlockPull(qemuMonitorPtr mon, virJSONValuePtr data)
-{
-    const char *device;
-    unsigned long long offset, len;
-    int status = VIR_DOMAIN_BLOCK_PULL_FAILED;
-
-    if ((device = virJSONValueObjectGetString(data, "device")) == NULL) {
-        VIR_WARN("missing device in disk io error event");
-        goto out;
-    }
-
-    if (virJSONValueObjectGetNumberUlong(data, "offset", &offset) < 0) {
-        VIR_WARN("missing offset in block pull event");
-        goto out;
-    }
-
-    if (virJSONValueObjectGetNumberUlong(data, "len", &len) < 0) {
-        VIR_WARN("missing len in block pull event");
-        goto out;
-    }
-
-    if (offset != 0 && offset == len)
-        status = VIR_DOMAIN_BLOCK_PULL_COMPLETED;
-
-out:
-    qemuMonitorEmitBlockPull(mon, device, status);
-}
-
 
 int
 qemuMonitorJSONHumanCommandWithFd(qemuMonitorPtr mon,
index 6d19e9e59c6c2871494136f90a61d1285c639941..bb83be0a86ee6846b2c7344ef981218c990a19c6 100644 (file)
@@ -658,35 +658,6 @@ qemuProcessHandleIOError(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
     return 0;
 }
 
-static int
-qemuProcessHandleBlockPull(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
-                           virDomainObjPtr vm,
-                           const char *diskAlias,
-                           int status)
-{
-    struct qemud_driver *driver = qemu_driver;
-    virDomainEventPtr event = NULL;
-    const char *path;
-    virDomainDiskDefPtr disk;
-
-    virDomainObjLock(vm);
-    disk = qemuProcessFindDomainDiskByAlias(vm, diskAlias);
-
-    if (disk) {
-        path = disk->src;
-        event = virDomainEventBlockPullNewFromObj(vm, path, status);
-    }
-
-    virDomainObjUnlock(vm);
-
-    if (event) {
-        qemuDriverLock(driver);
-        qemuDomainEventQueue(driver, event);
-        qemuDriverUnlock(driver);
-    }
-
-    return 0;
-}
 
 static int
 qemuProcessHandleGraphics(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
@@ -804,7 +775,6 @@ static qemuMonitorCallbacks monitorCallbacks = {
     .domainWatchdog = qemuProcessHandleWatchdog,
     .domainIOError = qemuProcessHandleIOError,
     .domainGraphics = qemuProcessHandleGraphics,
-    .domainBlockPull = qemuProcessHandleBlockPull,
 };
 
 static int
index d7ce76e31be5a7917fa841c960c3d6e6cb333718..fdbcc369790d91844ab4917120bc251897bfe4a9 100644 (file)
@@ -3824,32 +3824,6 @@ remoteDomainReadEventIOErrorReason(virConnectPtr conn, XDR *xdr)
     return event;
 }
 
-static virDomainEventPtr
-remoteDomainReadEventBlockPull(virConnectPtr conn, XDR *xdr)
-{
-    remote_domain_event_block_pull_msg msg;
-    virDomainPtr dom;
-    virDomainEventPtr event = NULL;
-    memset (&msg, 0, sizeof msg);
-
-    /* unmarshall parameters, and process it*/
-    if (! xdr_remote_domain_event_block_pull_msg(xdr, &msg) ) {
-        remoteError(VIR_ERR_RPC, "%s",
-                    _("unable to demarshall block_pull event"));
-        return NULL;
-    }
-
-    dom = get_nonnull_domain(conn,msg.dom);
-    if (!dom)
-        return NULL;
-
-    event = virDomainEventBlockPullNewFromDom(dom, msg.path, msg.status);
-    xdr_free ((xdrproc_t) &xdr_remote_domain_event_block_pull_msg, (char *) &msg);
-
-    virDomainFree(dom);
-    return event;
-}
-
 
 static virDomainEventPtr
 remoteDomainReadEventGraphics(virConnectPtr conn, XDR *xdr)
@@ -5574,10 +5548,6 @@ processCallDispatchMessage(virConnectPtr conn, struct private_data *priv,
         event = remoteDomainReadEventControlError(conn, xdr);
         break;
 
-    case REMOTE_PROC_DOMAIN_EVENT_BLOCK_PULL:
-        event = remoteDomainReadEventBlockPull(conn, xdr);
-        break;
-
     default:
         VIR_DEBUG("Unexpected event proc %d", hdr->proc);
         break;
index 3f8f006f83fc901fcc33e0dc248be7e18833ca54..a3ea2870bb424d35efb2f574a3bca75f0a4cd810 100644 (file)
@@ -1931,12 +1931,6 @@ struct remote_domain_event_graphics_msg {
     remote_domain_event_graphics_identity subject<REMOTE_DOMAIN_EVENT_GRAPHICS_IDENTITY_MAX>;
 };
 
-struct remote_domain_event_block_pull_msg {
-    remote_nonnull_domain dom;
-    remote_nonnull_string path;
-    int status;
-};
-
 struct remote_domain_managed_save_args {
     remote_nonnull_domain dom;
     unsigned int flags;
@@ -2424,8 +2418,7 @@ enum remote_procedure {
 
     REMOTE_PROC_DOMAIN_BLOCK_PULL_ABORT = 231, /* autogen autogen */
     REMOTE_PROC_DOMAIN_GET_BLOCK_PULL_INFO = 232, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_BLOCK_PULL = 233, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_GET_CONTROL_INFO = 234 /* autogen autogen */
+    REMOTE_PROC_DOMAIN_GET_CONTROL_INFO = 233 /* autogen autogen */
 
     /*
      * Notice how the entries are grouped in sets of 10 ?
index 12dd78dfeb866e8e21d43e15b031bd32c98401f1..99792e8902a6892c26c5aba1db6a5eb77df8bb34 100644 (file)
@@ -1421,11 +1421,6 @@ struct remote_domain_event_graphics_msg {
                 remote_domain_event_graphics_identity * subject_val;
         } subject;
 };
-struct remote_domain_event_block_pull_msg {
-        remote_nonnull_domain      dom;
-        remote_nonnull_string      path;
-        int                        status;
-};
 struct remote_domain_managed_save_args {
         remote_nonnull_domain      dom;
         u_int                      flags;