diff --git a/libvirt-0.6.0-autostart-timeout.patch b/libvirt-0.6.0-autostart-timeout.patch deleted file mode 100644 index bceb928..0000000 --- a/libvirt-0.6.0-autostart-timeout.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -rup libvirt-0.6.0.orig/src/remote_internal.c libvirt-0.6.0.new/src/remote_internal.c ---- libvirt-0.6.0.orig/src/remote_internal.c 2009-02-18 10:56:34.000000000 +0000 -+++ libvirt-0.6.0.new/src/remote_internal.c 2009-02-18 13:35:26.000000000 +0000 -@@ -654,12 +654,13 @@ doRemoteOpen (virConnectPtr conn, - */ - if (errno == ECONNREFUSED && - flags & VIR_DRV_OPEN_REMOTE_AUTOSTART && -- trials < 5) { -+ trials < 20) { - close(priv->sock); - priv->sock = -1; -- if (remoteForkDaemon(conn) == 0) { -+ if (trials > 0 || -+ remoteForkDaemon(conn) == 0) { - trials++; -- usleep(5000 * trials * trials); -+ usleep(1000 * 100 * trials); - goto autostart_retry; - } - } -Only in libvirt-0.6.0.new/src: remote_internal.c~ diff --git a/libvirt-0.6.0-dbus-threads.patch b/libvirt-0.6.0-dbus-threads.patch deleted file mode 100644 index 1001ae1..0000000 --- a/libvirt-0.6.0-dbus-threads.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -rup libvirt-0.6.0.orig/qemud/qemud.c libvirt-0.6.0.new/qemud/qemud.c ---- libvirt-0.6.0.orig/qemud/qemud.c 2009-02-18 10:56:34.000000000 +0000 -+++ libvirt-0.6.0.new/qemud/qemud.c 2009-02-18 12:52:18.000000000 +0000 -@@ -860,6 +860,10 @@ static struct qemud_server *qemudNetwork - if (auth_unix_rw == REMOTE_AUTH_POLKIT || - auth_unix_ro == REMOTE_AUTH_POLKIT) { - DBusError derr; -+ -+ dbus_connection_set_change_sigpipe(FALSE); -+ dbus_threads_init_default(); -+ - dbus_error_init(&derr); - server->sysbus = dbus_bus_get(DBUS_BUS_SYSTEM, &derr); - if (!(server->sysbus)) { -@@ -868,6 +872,7 @@ static struct qemud_server *qemudNetwork - dbus_error_free(&derr); - goto cleanup; - } -+ dbus_connection_set_exit_on_disconnect(server->sysbus, FALSE); - } - #endif - -diff -rup libvirt-0.6.0.orig/src/node_device_hal.c libvirt-0.6.0.new/src/node_device_hal.c ---- libvirt-0.6.0.orig/src/node_device_hal.c 2009-01-16 12:44:22.000000000 +0000 -+++ libvirt-0.6.0.new/src/node_device_hal.c 2009-02-18 12:52:48.000000000 +0000 -@@ -685,6 +685,9 @@ static int halDeviceMonitorStartup(void) - nodeDeviceLock(driverState); - - /* Allocate and initialize a new HAL context */ -+ dbus_connection_set_change_sigpipe(FALSE); -+ dbus_threads_init_default(); -+ - dbus_error_init(&err); - hal_ctx = libhal_ctx_new(); - if (hal_ctx == NULL) { -@@ -696,6 +699,8 @@ static int halDeviceMonitorStartup(void) - fprintf(stderr, "%s: dbus_bus_get failed\n", __FUNCTION__); - goto failure; - } -+ dbus_connection_set_exit_on_disconnect(dbus_conn, FALSE); -+ - if (!libhal_ctx_set_dbus_connection(hal_ctx, dbus_conn)) { - fprintf(stderr, "%s: libhal_ctx_set_dbus_connection failed\n", - __FUNCTION__); diff --git a/libvirt-0.6.0-qemu-startup.patch b/libvirt-0.6.0-qemu-startup.patch deleted file mode 100644 index b424e50..0000000 --- a/libvirt-0.6.0-qemu-startup.patch +++ /dev/null @@ -1,109 +0,0 @@ -diff -rup libvirt-0.6.0.orig/src/qemu_driver.c libvirt-0.6.0.new/src/qemu_driver.c ---- libvirt-0.6.0.orig/src/qemu_driver.c 2009-01-31 09:04:18.000000000 +0000 -+++ libvirt-0.6.0.new/src/qemu_driver.c 2009-02-18 11:15:37.000000000 +0000 -@@ -633,6 +633,7 @@ qemudReadMonitorOutput(virConnectPtr con - { - int got = 0; - buf[0] = '\0'; -+ timeout *= 1000; /* poll wants milli seconds */ - - /* Consume & discard the initial greeting */ - while (got < (buflen-1)) { -@@ -694,6 +695,56 @@ qemudReadMonitorOutput(virConnectPtr con - - } - -+ -+/* -+ * Returns -1 for error, 0 on success -+ */ -+static int -+qemudReadLogOutput(virConnectPtr conn, -+ virDomainObjPtr vm, -+ int fd, -+ char *buf, -+ int buflen, -+ qemudHandlerMonitorOutput func, -+ const char *what, -+ int timeout) -+{ -+ int got = 0; -+ int ret; -+ int retries = timeout*10; -+ buf[0] = '\0'; -+ -+ while (retries) { -+ while((ret = read(fd, buf+got, buflen-got-1)) > 0) { -+ got += ret; -+ buf[got] = '\0'; -+ if ((buflen-got-1) == 0) { -+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, -+ _("Out of space while reading %s log output"), what); -+ return -1; -+ } -+ } -+ -+ if (ret < 0 && errno != EINTR) { -+ virReportSystemError(conn, errno, -+ _("Failure while reading %s log output"), -+ what); -+ return -1; -+ } -+ -+ ret = func(conn, vm, buf, fd); -+ if (ret <= 0) -+ return ret; -+ -+ usleep(100*1000); -+ retries--; -+ } -+ if (retries == 0) -+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, -+ _("Timed out while reading %s log output"), what); -+ return -1; -+} -+ - static int - qemudCheckMonitorPrompt(virConnectPtr conn ATTRIBUTE_UNUSED, - virDomainObjPtr vm, -@@ -738,7 +789,7 @@ static int qemudOpenMonitor(virConnectPt - vm, monfd, - buf, sizeof(buf), - qemudCheckMonitorPrompt, -- "monitor", 10000) <= 0) -+ "monitor", 10) <= 0) - ret = -1; - else - ret = 0; -@@ -770,6 +821,7 @@ static int qemudOpenMonitor(virConnectPt - return ret; - } - -+/* Returns -1 for error, 0 success, 1 continue reading */ - static int qemudExtractMonitorPath(virConnectPtr conn, - const char *haystack, - size_t *offset, -@@ -873,19 +925,16 @@ static int qemudWaitForMonitor(virConnec - < 0) - return -1; - -- ret = qemudReadMonitorOutput(conn, vm, logfd, buf, sizeof(buf), -- qemudFindCharDevicePTYs, -- "console", 3000); -+ ret = qemudReadLogOutput(conn, vm, logfd, buf, sizeof(buf), -+ qemudFindCharDevicePTYs, -+ "console", 3); - if (close(logfd) < 0) - qemudLog(QEMUD_WARN, _("Unable to close logfile: %s\n"), - strerror(errno)); - -- if (ret == 1) /* Success */ -+ if (ret == 0) /* success */ - return 0; - -- if (ret == -1) -- return -1; -- - /* Unexpected end of file - inform user of QEMU log data */ - qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, - _("unable to start guest: %s"), buf); diff --git a/libvirt-0.6.0-rpccall.patch b/libvirt-0.6.0-rpccall.patch deleted file mode 100644 index 75b9240..0000000 --- a/libvirt-0.6.0-rpccall.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff -rup libvirt-0.6.0.orig/qemud/event.c libvirt-0.6.0.new/qemud/event.c ---- libvirt-0.6.0.orig/qemud/event.c 2009-02-06 19:30:58.000000000 +0000 -+++ libvirt-0.6.0.new/qemud/event.c 2009-02-06 19:30:00.000000000 +0000 -@@ -657,6 +657,8 @@ virPollEventToEventHandleType(int events - ret |= VIR_EVENT_HANDLE_WRITABLE; - if(events & POLLERR) - ret |= VIR_EVENT_HANDLE_ERROR; -+ if(events & POLLNVAL) /* Treat NVAL as error, since libvirt doesn't distinguish */ -+ ret |= VIR_EVENT_HANDLE_ERROR; - if(events & POLLHUP) - ret |= VIR_EVENT_HANDLE_HANGUP; - return ret; -diff -rup libvirt-0.6.0.orig/src/domain_conf.c libvirt-0.6.0.new/src/domain_conf.c ---- libvirt-0.6.0.orig/src/domain_conf.c 2009-01-31 09:04:17.000000000 +0000 -+++ libvirt-0.6.0.new/src/domain_conf.c 2009-02-06 19:30:00.000000000 +0000 -@@ -504,6 +504,7 @@ virDomainObjPtr virDomainAssignDef(virCo - domain->state = VIR_DOMAIN_SHUTOFF; - domain->def = def; - domain->monitor_watch = -1; -+ domain->monitor = -1; - - if (VIR_REALLOC_N(doms->objs, doms->count + 1) < 0) { - virReportOOMError(conn); -diff -rup libvirt-0.6.0.orig/src/remote_internal.c libvirt-0.6.0.new/src/remote_internal.c ---- libvirt-0.6.0.orig/src/remote_internal.c 2009-01-31 09:04:18.000000000 +0000 -+++ libvirt-0.6.0.new/src/remote_internal.c 2009-02-06 19:30:00.000000000 +0000 -@@ -6198,17 +6198,17 @@ processCalls(virConnectPtr conn, - continue; - virReportSystemError(in_open ? NULL : conn, errno, - "%s", _("poll on socket failed")); -- return -1; -+ goto error; - } - - if (fds[0].revents & POLLOUT) { - if (processCallSend(conn, priv, in_open) < 0) -- return -1; -+ goto error; - } - - if (fds[0].revents & POLLIN) { - if (processCallRecv(conn, priv, in_open) < 0) -- return -1; -+ goto error; - } - - /* Iterate through waiting threads and if -@@ -6259,9 +6259,21 @@ processCalls(virConnectPtr conn, - if (fds[0].revents & (POLLHUP | POLLERR)) { - errorf(in_open ? NULL : conn, VIR_ERR_INTERNAL_ERROR, - "%s", _("received hangup / error event on socket")); -- return -1; -+ goto error; - } - } -+ -+ -+error: -+ priv->waitDispatch = thiscall->next; -+ DEBUG("Giving up the buck due to I/O error %d %p %p", thiscall->proc_nr, thiscall, priv->waitDispatch); -+ /* See if someone else is still waiting -+ * and if so, then pass the buck ! */ -+ if (priv->waitDispatch) { -+ DEBUG("Passing the buck to %d %p", priv->waitDispatch->proc_nr, priv->waitDispatch); -+ virCondSignal(&priv->waitDispatch->cond); -+ } -+ return -1; - } - - /* diff --git a/libvirt-0.6.0-timeout.patch b/libvirt-0.6.0-timeout.patch deleted file mode 100644 index 02dcc53..0000000 --- a/libvirt-0.6.0-timeout.patch +++ /dev/null @@ -1,124 +0,0 @@ -diff -rup libvirt-0.6.0.orig/qemud/event.c libvirt-0.6.0.new/qemud/event.c ---- libvirt-0.6.0.orig/qemud/event.c 2008-12-22 13:02:54.000000000 +0000 -+++ libvirt-0.6.0.new/qemud/event.c 2009-02-06 19:29:28.000000000 +0000 -@@ -68,6 +68,7 @@ struct virEventTimeout { - /* State for the main event loop */ - struct virEventLoop { - pthread_mutex_t lock; -+ int running; - pthread_t leader; - int wakeupfd[2]; - int handlesCount; -@@ -521,6 +522,7 @@ int virEventRunOnce(void) { - int ret, timeout, nfds; - - virEventLock(); -+ eventLoop.running = 1; - eventLoop.leader = pthread_self(); - if ((nfds = virEventMakePollFDs(&fds)) < 0) { - virEventUnlock(); -@@ -572,7 +574,7 @@ int virEventRunOnce(void) { - return -1; - } - -- eventLoop.leader = 0; -+ eventLoop.running = 0; - virEventUnlock(); - return 0; - } -@@ -611,7 +613,9 @@ int virEventInit(void) - static int virEventInterruptLocked(void) - { - char c = '\0'; -- if (pthread_self() == eventLoop.leader) -+ -+ if (!eventLoop.running || -+ pthread_self() == eventLoop.leader) - return 0; - - if (safewrite(eventLoop.wakeupfd[1], &c, sizeof(c)) != sizeof(c)) -diff -rup libvirt-0.6.0.orig/qemud/qemud.c libvirt-0.6.0.new/qemud/qemud.c ---- libvirt-0.6.0.orig/qemud/qemud.c 2009-01-31 09:04:17.000000000 +0000 -+++ libvirt-0.6.0.new/qemud/qemud.c 2009-02-06 19:29:28.000000000 +0000 -@@ -2013,11 +2013,15 @@ static int qemudOneLoop(void) { - return 0; - } - --static void qemudInactiveTimer(int timer ATTRIBUTE_UNUSED, void *data) { -+static void qemudInactiveTimer(int timerid, void *data) { - struct qemud_server *server = (struct qemud_server *)data; -- DEBUG0("Got inactive timer expiry"); -- if (!virStateActive()) { -- DEBUG0("No state active, shutting down"); -+ -+ if (virStateActive() || -+ server->clients) { -+ DEBUG0("Timer expired but still active, not shutting down"); -+ virEventUpdateTimeoutImpl(timerid, -1); -+ } else { -+ DEBUG0("Timer expired and inactive, shutting down"); - server->shutdown = 1; - } - } -@@ -2048,9 +2052,18 @@ static void qemudFreeClient(struct qemud - static int qemudRunLoop(struct qemud_server *server) { - int timerid = -1; - int ret = -1, i; -+ int timerActive = 0; - - virMutexLock(&server->lock); - -+ if (timeout > 0 && -+ (timerid = virEventAddTimeoutImpl(-1, -+ qemudInactiveTimer, -+ server, NULL)) < 0) { -+ VIR_ERROR0(_("Failed to register shutdown timeout")); -+ return -1; -+ } -+ - if (min_workers > max_workers) - max_workers = min_workers; - -@@ -2071,11 +2084,21 @@ static int qemudRunLoop(struct qemud_ser - * if any drivers have active state, if not - * shutdown after timeout seconds - */ -- if (timeout > 0 && !virStateActive() && !server->clients) { -- timerid = virEventAddTimeoutImpl(timeout*1000, -- qemudInactiveTimer, -- server, NULL); -- DEBUG("Scheduling shutdown timer %d", timerid); -+ if (timeout > 0) { -+ if (timerActive) { -+ if (server->clients) { -+ DEBUG("Deactivating shutdown timer %d", timerid); -+ virEventUpdateTimeoutImpl(timerid, -1); -+ timerActive = 0; -+ } -+ } else { -+ if (!virStateActive() && -+ !server->clients) { -+ DEBUG("Activating shutdown timer %d", timerid); -+ virEventUpdateTimeoutImpl(timerid, timeout * 1000); -+ timerActive = 1; -+ } -+ } - } - - virMutexUnlock(&server->lock); -@@ -2129,15 +2152,6 @@ static int qemudRunLoop(struct qemud_ser - } - } - -- /* Unregister any timeout that's active, since we -- * just had an event processed -- */ -- if (timerid != -1) { -- DEBUG("Removing shutdown timer %d", timerid); -- virEventRemoveTimeoutImpl(timerid); -- timerid = -1; -- } -- - if (server->shutdown) { - ret = 0; - break;