rpms/libvirt/devel libvirt-0.6.1-events-dispatch.patch, NONE, 1.1 libvirt-0.6.1-fd-leaks.patch, NONE, 1.1 libvirt-0.6.1-fd-leaks2.patch, NONE, 1.1 libvirt-0.6.1-getvcpus-remote.patch, NONE, 1.1 libvirt-0.6.1-pool-mode-parse.patch, NONE, 1.1 libvirt-0.6.1-storage-free.patch, NONE, 1.1 libvirt-0.6.1-vcpu-deadlock.patch, NONE, 1.1 libvirt-0.6.1-xen-events.patch, NONE, 1.1 libvirt-0.6.1-xenblock-detach.patch, NONE, 1.1 libvirt-0.6.1-xend-lookup.patch, NONE, 1.1 libvirt.spec, 1.118, 1.119 libvirt-0.6.1-storage-delete-fail.patch, 1.1, NONE

Daniel P. Berrange berrange at fedoraproject.org
Tue Mar 17 10:29:43 UTC 2009


Author: berrange

Update of /cvs/pkgs/rpms/libvirt/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24545

Modified Files:
	libvirt.spec 
Added Files:
	libvirt-0.6.1-events-dispatch.patch 
	libvirt-0.6.1-fd-leaks.patch libvirt-0.6.1-fd-leaks2.patch 
	libvirt-0.6.1-getvcpus-remote.patch 
	libvirt-0.6.1-pool-mode-parse.patch 
	libvirt-0.6.1-storage-free.patch 
	libvirt-0.6.1-vcpu-deadlock.patch 
	libvirt-0.6.1-xen-events.patch 
	libvirt-0.6.1-xenblock-detach.patch 
	libvirt-0.6.1-xend-lookup.patch 
Removed Files:
	libvirt-0.6.1-storage-delete-fail.patch 
Log Message:
- Fix memory allocation for xend lookup
- Avoid crash if storage volume deletion fails
- Fix multiple FD leaks
- Fix bug in dispatch FD events when a callback is marked deleted
- Fix parsing of storage volume owner/group/mode
- Fix memory allocation for virDomainGetVcpus RPC handler
- Avoid deadlock in setting vCPU count
- Use correct driver name in Xen block detach

libvirt-0.6.1-events-dispatch.patch:

--- NEW FILE libvirt-0.6.1-events-dispatch.patch ---
From: Daniel P. Berrange <berrange at redhat.com>
Date: Mon, 16 Mar 2009 10:35:21 +0000 (+0000)
Subject: Fix dispatch of FD events when one or more handles are marked deleted
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=10baf3deb8588f5902b6f2eb362fb408707e3d95

Fix dispatch of FD events when one or more handles are marked deleted
---

diff --git a/qemud/event.c b/qemud/event.c
index c9ea563..0887008 100644
--- a/qemud/event.c
+++ b/qemud/event.c
@@ -409,25 +409,26 @@ static int virEventDispatchTimeouts(void) {
  * Returns 0 upon success, -1 if an error occurred
  */
 static int virEventDispatchHandles(int nfds, struct pollfd *fds) {
-    int i;
+    int i, n;
 
-    for (i = 0 ; i < nfds ; i++) {
+    for (i = 0, n = 0 ; i < eventLoop.handlesCount && n < nfds ; i++) {
         if (eventLoop.handles[i].deleted) {
             EVENT_DEBUG("Skip deleted %d", eventLoop.handles[i].fd);
             continue;
         }
 
-        if (fds[i].revents) {
+        if (fds[n].revents) {
             virEventHandleCallback cb = eventLoop.handles[i].cb;
             void *opaque = eventLoop.handles[i].opaque;
-            int hEvents = virPollEventToEventHandleType(fds[i].revents);
-            EVENT_DEBUG("Dispatch %d %d %p", fds[i].fd,
-                        fds[i].revents, eventLoop.handles[i].opaque);
+            int hEvents = virPollEventToEventHandleType(fds[n].revents);
+            EVENT_DEBUG("Dispatch %d %d %p", fds[n].fd,
+                        fds[n].revents, eventLoop.handles[i].opaque);
             virEventUnlock();
             (cb)(eventLoop.handles[i].watch,
-                 fds[i].fd, hEvents, opaque);
+                 fds[n].fd, hEvents, opaque);
             virEventLock();
         }
+        n++;
     }
 
     return 0;

libvirt-0.6.1-fd-leaks.patch:

--- NEW FILE libvirt-0.6.1-fd-leaks.patch ---
From: Daniel Veillard <veillard at redhat.com>
Date: Mon, 16 Mar 2009 10:41:37 +0000 (+0000)
Subject: Avoid some potential FILE * leaks
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=39429bab2d55807698d9aed0112200ae532799b8

Avoid some potential FILE * leaks
* qemud/qemud.c src/cgroup.c src/uml_driver.c src/util.c: close
  some potential FILE * leaks
Daniel
---

diff --git a/qemud/qemud.c b/qemud/qemud.c
index fd315fc..4f04355 100644
--- a/qemud/qemud.c
+++ b/qemud/qemud.c
@@ -488,7 +488,7 @@ static int qemudWritePidFile(const char *pidFile) {
     if (fprintf(fh, "%lu\n", (unsigned long)getpid()) < 0) {
         VIR_ERROR(_("Failed to write to pid file '%s' : %s"),
                   pidFile, virStrerror(errno, ebuf, sizeof ebuf));
-        close(fd);
+        fclose(fh);
         return -1;
     }
 
diff --git a/src/cgroup.c b/src/cgroup.c
index 5af44bd..d1d44a2 100644
--- a/src/cgroup.c
+++ b/src/cgroup.c
@@ -57,7 +57,7 @@ void virCgroupFree(virCgroupPtr *group)
 
 static virCgroupPtr virCgroupGetMount(const char *controller)
 {
-    FILE *mounts;
+    FILE *mounts = NULL;
     struct mntent entry;
     char buf[CGROUP_MAX_VAL];
     virCgroupPtr root = NULL;
@@ -90,6 +90,8 @@ static virCgroupPtr virCgroupGetMount(const char *controller)
 
     return root;
 err:
+    if (mounts != NULL)
+        fclose(mounts);
     virCgroupFree(&root);
 
     return NULL;
diff --git a/src/uml_driver.c b/src/uml_driver.c
index 1dc7ccd..f7400f9 100644
--- a/src/uml_driver.c
+++ b/src/uml_driver.c
@@ -547,6 +547,7 @@ reopen:
 
     if (fscanf(file, "%d", &vm->pid) != 1) {
         errno = EINVAL;
+        fclose(file);
         goto cleanup;
     }
 
@@ -1040,6 +1041,7 @@ static int umlGetProcessInfo(unsigned long long *cpuTime, int pid) {
 
     if (fscanf(pidinfo, "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %llu %llu", &usertime, &systime) != 2) {
         umlDebug("not enough arg");
+        fclose(pidinfo);
         return -1;
     }
 
diff --git a/src/util.c b/src/util.c
index 9b74757..66ad9a4 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1058,6 +1058,7 @@ int virFileReadPid(const char *dir,
 
     if (fscanf(file, "%d", pid) != 1) {
         rc = EINVAL;
+        fclose(file);
         goto cleanup;
     }
 

libvirt-0.6.1-fd-leaks2.patch:

--- NEW FILE libvirt-0.6.1-fd-leaks2.patch ---
Index: src/remote_internal.c
===================================================================
RCS file: /data/cvs/libxen/src/remote_internal.c,v
retrieving revision 1.141
diff -u -u -p -r1.141 remote_internal.c
--- src/remote_internal.c	3 Mar 2009 19:33:34 -0000	1.141
+++ src/remote_internal.c	16 Mar 2009 16:57:17 -0000
@@ -332,7 +332,7 @@ doRemoteOpen (virConnectPtr conn,
               virConnectAuthPtr auth ATTRIBUTE_UNUSED,
               int flags)
 {
-    int wakeupFD[2];
+    int wakeupFD[2] = { -1, -1 };
     char *transport_str = NULL;
 
     if (conn->uri) {
@@ -885,6 +885,11 @@ doRemoteOpen (virConnectPtr conn,
 #endif
     }
 
+    if (wakeupFD[0] >= 0) {
+        close(wakeupFD[0]);
+	close(wakeupFD[1]);
+    }
+
     VIR_FREE(priv->hostname);
     goto cleanup;
 }
@@ -1350,6 +1355,11 @@ doRemoteClose (virConnectPtr conn, struc
         } while (reap != -1 && reap != priv->pid);
     }
 #endif
+    if (priv->wakeupReadFD >= 0) {
+        close(priv->wakeupReadFD);
+	close(priv->wakeupSendFD);
+    }
+
 
     /* Free hostname copy */
     free (priv->hostname);

libvirt-0.6.1-getvcpus-remote.patch:

--- NEW FILE libvirt-0.6.1-getvcpus-remote.patch ---
From: Daniel P. Berrange <berrange at redhat.com>
Date: Mon, 16 Mar 2009 10:33:01 +0000 (+0000)
Subject: Fix handling of cpumaps arg to virDomainGetVcpus RPC dispatcher
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=2d75d954f52a740470f85ceece4eb995d79968ca

Fix handling of cpumaps arg to virDomainGetVcpus RPC dispatcher
---

diff --git a/qemud/remote.c b/qemud/remote.c
index 8eaa7d6..44a274a 100644
--- a/qemud/remote.c
+++ b/qemud/remote.c
@@ -1475,7 +1475,8 @@ remoteDispatchDomainGetVcpus (struct qemud_server *server ATTRIBUTE_UNUSED,
     /* Allocate buffers to take the results. */
     if (VIR_ALLOC_N(info, args->maxinfo) < 0)
         goto oom;
-    if (VIR_ALLOC_N(cpumaps, args->maxinfo) < 0)
+    if (args->maplen > 0 &&
+        VIR_ALLOC_N(cpumaps, args->maxinfo * args->maplen) < 0)
         goto oom;
 
     info_len = virDomainGetVcpus (dom,

libvirt-0.6.1-pool-mode-parse.patch:

--- NEW FILE libvirt-0.6.1-pool-mode-parse.patch ---
From: Daniel Veillard <veillard at redhat.com>
Date: Thu, 12 Mar 2009 20:15:32 +0000 (+0000)
Subject: * src/storage_conf.c: fix storage pool mode parsing, and refactoring
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=bc962f5d7c6e2c2cfc233ea6deea95dba2b7c6eb

* src/storage_conf.c: fix storage pool mode parsing, and refactoring
  patch by Ryota Ozaki
Daniel
---

diff --git a/src/storage_conf.c b/src/storage_conf.c
index 9c13e07..1c9a4e5 100644
--- a/src/storage_conf.c
+++ b/src/storage_conf.c
@@ -371,15 +371,33 @@ virStoragePoolDefParseAuthChap(virConnectPtr conn,
 
 
 static int
-virStoragePoolDefParsePerms(virConnectPtr conn,
-                            xmlXPathContextPtr ctxt,
-                            virStoragePermsPtr perms) {
+virStorageDefParsePerms(virConnectPtr conn,
+                        xmlXPathContextPtr ctxt,
+                        virStoragePermsPtr perms,
+                        const char *permxpath,
+                        int defaultmode) {
     char *mode;
     long v;
+    int ret = -1;
+    xmlNodePtr relnode;
+    xmlNodePtr node;
 
-    mode = virXPathString(conn, "string(/pool/permissions/mode)", ctxt);
+    node = virXPathNode(conn, permxpath, ctxt);
+    if (node == NULL) {
+        /* Set default values if there is not <permissions> element */
+        perms->mode = defaultmode;
+        perms->uid = getuid();
+        perms->gid = getgid();
+        perms->label = NULL;
+        return 0;
+    }
+
+    relnode = ctxt->node;
+    ctxt->node = node;
+
+    mode = virXPathString(conn, "string(./mode)", ctxt);
     if (!mode) {
-        perms->mode = 0700;
+        perms->mode = defaultmode;
     } else {
         char *end = NULL;
         perms->mode = strtol(mode, &end, 8);
@@ -387,36 +405,39 @@ virStoragePoolDefParsePerms(virConnectPtr conn,
         if (*end || perms->mode < 0 || perms->mode > 0777) {
             virStorageReportError(conn, VIR_ERR_XML_ERROR,
                                   "%s", _("malformed octal mode"));
-            return -1;
+            goto error;
         }
     }
 
-    if (virXPathNode(conn, "/pool/permissions/owner", ctxt) == NULL) {
+    if (virXPathNode(conn, "./owner", ctxt) == NULL) {
         perms->uid = getuid();
     } else {
-        if (virXPathLong(conn, "number(/pool/permissions/owner)", ctxt, &v) < 0) {
+        if (virXPathLong(conn, "number(./owner)", ctxt, &v) < 0) {
             virStorageReportError(conn, VIR_ERR_XML_ERROR,
                                   "%s", _("malformed owner element"));
-            return -1;
+            goto error;
         }
         perms->uid = (int)v;
     }
 
-    if (virXPathNode(conn, "/pool/permissions/group", ctxt) == NULL) {
+    if (virXPathNode(conn, "./group", ctxt) == NULL) {
         perms->gid = getgid();
     } else {
-        if (virXPathLong(conn, "number(/pool/permissions/group)", ctxt, &v) < 0) {
+        if (virXPathLong(conn, "number(./group)", ctxt, &v) < 0) {
             virStorageReportError(conn, VIR_ERR_XML_ERROR,
                                   "%s", _("malformed group element"));
-            return -1;
+            goto error;
         }
         perms->gid = (int)v;
     }
 
     /* NB, we're ignoring missing labels here - they'll simply inherit */
-    perms->label = virXPathString(conn, "string(/pool/permissions/label)", ctxt);
+    perms->label = virXPathString(conn, "string(./label)", ctxt);
 
-    return 0;
+    ret = 0;
+error:
+    ctxt->node = relnode;
+    return ret;
 }
 
 
@@ -579,7 +600,8 @@ virStoragePoolDefParseDoc(virConnectPtr conn,
         goto cleanup;
     }
 
-    if (virStoragePoolDefParsePerms(conn, ctxt, &ret->target.perms) < 0)
+    if (virStorageDefParsePerms(conn, ctxt, &ret->target.perms,
+                                "/pool/target/permissions", 0700) < 0)
         goto cleanup;
 
     return ret;
@@ -801,55 +823,6 @@ virStoragePoolDefFormat(virConnectPtr conn,
 
 
 static int
-virStorageVolDefParsePerms(virConnectPtr conn,
-                           xmlXPathContextPtr ctxt,
-                           virStoragePermsPtr perms) {
-    char *mode;
-    long v;
-
-    mode = virXPathString(conn, "string(/volume/permissions/mode)", ctxt);
-    if (!mode) {
-        perms->mode = 0600;
-    } else {
-        char *end = NULL;
-        perms->mode = strtol(mode, &end, 8);
-        VIR_FREE(mode);
-        if (*end || perms->mode < 0 || perms->mode > 0777) {
-            virStorageReportError(conn, VIR_ERR_XML_ERROR,
-                                  "%s", _("malformed octal mode"));
-            return -1;
-        }
-    }
-
-    if (virXPathNode(conn, "/volume/permissions/owner", ctxt) == NULL) {
-        perms->uid = getuid();
-    } else {
-        if (virXPathLong(conn, "number(/volume/permissions/owner)", ctxt, &v) < 0) {
-            virStorageReportError(conn, VIR_ERR_XML_ERROR,
-                                  "%s", _("missing owner element"));
-            return -1;
-        }
-        perms->uid = (int)v;
-    }
-    if (virXPathNode(conn, "/volume/permissions/group", ctxt) == NULL) {
-        perms->gid = getgid();
-    } else {
-        if (virXPathLong(conn, "number(/volume/permissions/group)", ctxt, &v) < 0) {
-            virStorageReportError(conn, VIR_ERR_XML_ERROR,
-                                  "%s", _("missing group element"));
-            return -1;
-        }
-        perms->gid = (int)v;
-    }
-
-    /* NB, we're ignoring missing labels here - they'll simply inherit */
-    perms->label = virXPathString(conn, "string(/volume/permissions/label)", ctxt);
-
-    return 0;
-}
-
-
-static int
 virStorageSize(virConnectPtr conn,
                const char *unit,
                const char *val,
@@ -997,7 +970,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
         VIR_FREE(format);
     }
 
-    if (virStorageVolDefParsePerms(conn, ctxt, &ret->target.perms) < 0)
+    if (virStorageDefParsePerms(conn, ctxt, &ret->target.perms,
+                                "/volume/target/permissions", 0600) < 0)
         goto cleanup;
 
 
@@ -1019,7 +993,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
         VIR_FREE(format);
     }
 
-    if (virStorageVolDefParsePerms(conn, ctxt, &ret->backingStore.perms) < 0)
+    if (virStorageDefParsePerms(conn, ctxt, &ret->backingStore.perms,
+                                "/volume/backingStore/permissions", 0600) < 0)
         goto cleanup;
 
     return ret;

libvirt-0.6.1-storage-free.patch:

--- NEW FILE libvirt-0.6.1-storage-free.patch ---
From: Daniel P. Berrange <berrange at redhat.com>
Date: Mon, 16 Mar 2009 10:31:38 +0000 (+0000)
Subject: Don't free storage volume in cleanup path, since it may still be referenced
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=d8f08ca049b6d3bc7a5124a3957e967539ad080d

Don't free storage volume in cleanup path, since it may still be referenced
---

diff --git a/src/storage_driver.c b/src/storage_driver.c
index f1320c5..b261843 100644
--- a/src/storage_driver.c
+++ b/src/storage_driver.c
@@ -1296,7 +1296,6 @@ storageVolumeDelete(virStorageVolPtr obj,
     ret = 0;
 
 cleanup:
-    virStorageVolDefFree(vol);
     if (pool)
         virStoragePoolObjUnlock(pool);
     return ret;

libvirt-0.6.1-vcpu-deadlock.patch:

--- NEW FILE libvirt-0.6.1-vcpu-deadlock.patch ---
From: Daniel P. Berrange <berrange at redhat.com>
Date: Mon, 16 Mar 2009 11:44:46 +0000 (+0000)
Subject: Avoid deadlock setting vcpus in QEMU driver
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=4d7ecd146ce4de847256ae0887963719f214f62f

Avoid deadlock setting vcpus in QEMU driver
---

diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index dad7098..51442d6 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -2725,6 +2725,7 @@ static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
     virDomainObjPtr vm;
     int max;
     int ret = -1;
+    const char *type;
 
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -2745,7 +2746,14 @@ static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
         goto cleanup;
     }
 
-    if ((max = qemudDomainGetMaxVcpus(dom)) < 0) {
+    if (!(type = virDomainVirtTypeToString(vm->def->virtType))) {
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
+                         _("unknown virt type in domain definition '%d'"),
+                         vm->def->virtType);
+        goto cleanup;
+    }
+
+    if ((max = qemudGetMaxVCPUs(dom->conn, type)) < 0) {
         qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR, "%s",
                          _("could not determine max vcpus for the domain"));
         goto cleanup;

libvirt-0.6.1-xen-events.patch:

--- NEW FILE libvirt-0.6.1-xen-events.patch ---
Index: src/xs_internal.c
===================================================================
RCS file: /data/cvs/libxen/src/xs_internal.c,v
retrieving revision 1.88
diff -u -u -r1.88 xs_internal.c
--- src/xs_internal.c	5 Feb 2009 18:14:00 -0000	1.88
+++ src/xs_internal.c	11 Mar 2009 13:23:17 -0000
@@ -1215,7 +1215,7 @@
 static void
 xenStoreWatchEvent(int watch ATTRIBUTE_UNUSED,
                    int fd ATTRIBUTE_UNUSED,
-                   int events ATTRIBUTE_UNUSED,
+                   int events,
                    void *data)
 {
     char		 **event;
@@ -1226,8 +1226,12 @@
 
     virConnectPtr        conn = data;
     xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+
     if(!priv) return;
 
+    /* only set a watch on read and write events */
+    if (events & (VIR_EVENT_HANDLE_ERROR | VIR_EVENT_HANDLE_HANGUP)) return;
+
     xenUnifiedLock(priv);
 
     if(!priv->xshandle)

libvirt-0.6.1-xenblock-detach.patch:

--- NEW FILE libvirt-0.6.1-xenblock-detach.patch ---
From: Daniel P. Berrange <berrange at redhat.com>
Date: Tue, 10 Mar 2009 10:32:24 +0000 (+0000)
Subject: Fix Xen block detach with newer Xend (Cole RobinSon / Tomohiro Takahashi)
X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=33813a932d58c17441203d0e581eba91369a71e0

Fix Xen block detach with newer Xend (Cole RobinSon / Tomohiro Takahashi)
---

diff --git a/src/xend_internal.c b/src/xend_internal.c
index f9f2cb3..772f3f4 100644
--- a/src/xend_internal.c
+++ b/src/xend_internal.c
@@ -5566,7 +5566,12 @@ virDomainXMLDevID(virDomainPtr domain,
     char *xref;
 
     if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
-        strcpy(class, "vbd");
+        if (dev->data.disk->driverName &&
+            STREQ(dev->data.disk->driverName, "tap"))
+            strcpy(class, "tap");
+        else
+            strcpy(class, "vbd");
+
         if (dev->data.disk->dst == NULL)
             return -1;
         xenUnifiedLock(priv);

libvirt-0.6.1-xend-lookup.patch:

--- NEW FILE libvirt-0.6.1-xend-lookup.patch ---
Index: src/xend_internal.c
===================================================================
RCS file: /data/cvs/libxen/src/xend_internal.c,v
retrieving revision 1.251
diff -u -r1.251 xend_internal.c
--- src/xend_internal.c	13 Feb 2009 18:23:23 -0000	1.251
+++ src/xend_internal.c	10 Mar 2009 10:00:28 -0000
@@ -904,7 +904,15 @@
         count++;
     }
 
-    if (VIR_ALLOC_N(ptr, count + 1 + extra) < 0)
+    /*
+     * We can'tuse the normal allocation routines as we are mixing
+     * an array of char * at the beginning followed by an array of char
+     * ret points to the NULL terminated array of char *
+     * ptr points to the current string after that array but in the same
+     * allocated block
+     */
+    if (virAlloc((void *)&ptr,
+                 (count + 1) * sizeof(char *) + extra * sizeof(char)) < 0)
         goto error;
 
     ret = (char **) ptr;


Index: libvirt.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libvirt/devel/libvirt.spec,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -r1.118 -r1.119
--- libvirt.spec	10 Mar 2009 02:28:38 -0000	1.118
+++ libvirt.spec	17 Mar 2009 10:29:43 -0000	1.119
@@ -47,14 +47,24 @@
 Summary: Library providing a simple API virtualization
 Name: libvirt
 Version: 0.6.1
-Release: 3%{?dist}%{?extra_release}
+Release: 4%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: libvirt-%{version}.tar.gz
-Patch1: libvirt-%{version}-storage-delete-fail.patch
+Patch1: libvirt-0.6.1-xend-lookup.patch
+Patch2: libvirt-0.6.1-xen-events.patch
+Patch3: libvirt-0.6.1-events-dispatch.patch
+Patch4: libvirt-0.6.1-fd-leaks.patch
+Patch5: libvirt-0.6.1-getvcpus-remote.patch
+Patch6: libvirt-0.6.1-pool-mode-parse.patch
+Patch7: libvirt-0.6.1-storage-free.patch
+Patch8: libvirt-0.6.1-vcpu-deadlock.patch
+Patch9: libvirt-0.6.1-xenblock-detach.patch
+Patch10: libvirt-0.6.1-fd-leaks2.patch
 
 # Not upstream yet - pending QEMU merge
-Patch100: libvirt-%{version}-vnc-sasl-auth.patch
+Patch100: libvirt-0.6.1-vnc-sasl-auth.patch
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 URL: http://libvirt.org/
 BuildRequires: python python-devel
@@ -185,7 +195,16 @@
 
 %prep
 %setup -q
-%patch1 -p1
+%patch1 -p0
+%patch2 -p0
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p0
 
 %patch100 -p1
 
@@ -480,6 +499,16 @@
 %endif
 
 %changelog
+* Tue Mar 17 2009 Daniel P. Berrange <berrange at redhat.com> - 0.6.1-4.fc11
+- Fix memory allocation for xend lookup
+- Avoid crash if storage volume deletion fails
+- Fix multiple FD leaks
+- Fix bug in dispatch FD events when a callback is marked deleted
+- Fix parsing of storage volume owner/group/mode
+- Fix memory allocation for virDomainGetVcpus RPC handler
+- Avoid deadlock in setting vCPU count
+- Use correct driver name in Xen block detach
+
 * Mon Mar  9 2009 Cole Robinson <crobinso at redhat.com> - 0.6.1-3.fc11
 - Add Requires: libselinux
 


--- libvirt-0.6.1-storage-delete-fail.patch DELETED ---




More information about the fedora-extras-commits mailing list