diff --git a/.cvsignore b/.cvsignore index 084dc3d..db70509 100644 --- a/.cvsignore +++ b/.cvsignore @@ -5,3 +5,4 @@ x86_64 libvirt-*.tar.gz libvirt-0.6.0.tar.gz libvirt-0.6.1.tar.gz +libvirt-0.6.2.tar.gz diff --git a/libvirt-0.6.1-events-dispatch.patch b/libvirt-0.6.1-events-dispatch.patch deleted file mode 100644 index 49da108..0000000 --- a/libvirt-0.6.1-events-dispatch.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Daniel P. Berrange -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; diff --git a/libvirt-0.6.1-fd-leaks.patch b/libvirt-0.6.1-fd-leaks.patch deleted file mode 100644 index 07d3c4c..0000000 --- a/libvirt-0.6.1-fd-leaks.patch +++ /dev/null @@ -1,78 +0,0 @@ -From: Daniel Veillard -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; - } - diff --git a/libvirt-0.6.1-fd-leaks2.patch b/libvirt-0.6.1-fd-leaks2.patch deleted file mode 100644 index e2914aa..0000000 --- a/libvirt-0.6.1-fd-leaks2.patch +++ /dev/null @@ -1,40 +0,0 @@ -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); diff --git a/libvirt-0.6.1-getvcpus-remote.patch b/libvirt-0.6.1-getvcpus-remote.patch deleted file mode 100644 index 9b38d24..0000000 --- a/libvirt-0.6.1-getvcpus-remote.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Daniel P. Berrange -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, diff --git a/libvirt-0.6.1-pool-mode-parse.patch b/libvirt-0.6.1-pool-mode-parse.patch deleted file mode 100644 index 4c400b6..0000000 --- a/libvirt-0.6.1-pool-mode-parse.patch +++ /dev/null @@ -1,188 +0,0 @@ -From: Daniel Veillard -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 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; diff --git a/libvirt-0.6.1-storage-free.patch b/libvirt-0.6.1-storage-free.patch deleted file mode 100644 index bfda133..0000000 --- a/libvirt-0.6.1-storage-free.patch +++ /dev/null @@ -1,20 +0,0 @@ -From: Daniel P. Berrange -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; diff --git a/libvirt-0.6.1-svirt-shared-readonly.patch b/libvirt-0.6.1-svirt-shared-readonly.patch deleted file mode 100644 index 2c7b2ba..0000000 --- a/libvirt-0.6.1-svirt-shared-readonly.patch +++ /dev/null @@ -1,143 +0,0 @@ -diff -rup libvirt-0.6.1.orig/src/qemu_driver.c libvirt-0.6.1.new/src/qemu_driver.c ---- libvirt-0.6.1.orig/src/qemu_driver.c 2009-03-17 11:57:04.000000000 +0000 -+++ libvirt-0.6.1.new/src/qemu_driver.c 2009-03-17 11:57:12.000000000 +0000 -@@ -3765,7 +3765,7 @@ static int qemudDomainAttachDevice(virDo - goto cleanup; - } - if (driver->securityDriver) -- driver->securityDriver->domainSetSecurityImageLabel(dom->conn, vm, dev); -+ driver->securityDriver->domainSetSecurityImageLabel(dom->conn, vm, dev->data.disk); - break; - - default: -@@ -3901,7 +3901,7 @@ static int qemudDomainDetachDevice(virDo - dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO)) { - ret = qemudDomainDetachPciDiskDevice(dom->conn, vm, dev); - if (driver->securityDriver) -- driver->securityDriver->domainRestoreSecurityImageLabel(dom->conn, vm, dev); -+ driver->securityDriver->domainRestoreSecurityImageLabel(dom->conn, dev->data.disk); - } - else - qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT, -diff -rup libvirt-0.6.1.orig/src/security.h libvirt-0.6.1.new/src/security.h ---- libvirt-0.6.1.orig/src/security.h 2009-03-03 16:40:46.000000000 +0000 -+++ libvirt-0.6.1.new/src/security.h 2009-03-17 11:57:12.000000000 +0000 -@@ -32,11 +32,10 @@ typedef virSecurityDriverStatus (*virSec - typedef int (*virSecurityDriverOpen) (virConnectPtr conn, - virSecurityDriverPtr drv); - typedef int (*virSecurityDomainRestoreImageLabel) (virConnectPtr conn, -- virDomainObjPtr vm, -- virDomainDeviceDefPtr dev); -+ virDomainDiskDefPtr disk); - typedef int (*virSecurityDomainSetImageLabel) (virConnectPtr conn, - virDomainObjPtr vm, -- virDomainDeviceDefPtr dev); -+ virDomainDiskDefPtr disk); - typedef int (*virSecurityDomainGenLabel) (virConnectPtr conn, - virDomainObjPtr sec); - typedef int (*virSecurityDomainGetLabel) (virConnectPtr conn, -diff -rup libvirt-0.6.1.orig/src/security_selinux.c libvirt-0.6.1.new/src/security_selinux.c ---- libvirt-0.6.1.orig/src/security_selinux.c 2009-03-03 16:40:46.000000000 +0000 -+++ libvirt-0.6.1.new/src/security_selinux.c 2009-03-17 11:57:12.000000000 +0000 -@@ -269,7 +269,7 @@ SELinuxGetSecurityLabel(virConnectPtr co - } - - static int --SELinuxSetFilecon(virConnectPtr conn, char *path, char *tcon) -+SELinuxSetFilecon(virConnectPtr conn, const char *path, char *tcon) - { - char ebuf[1024]; - -@@ -288,28 +288,51 @@ SELinuxSetFilecon(virConnectPtr conn, ch - - static int - SELinuxRestoreSecurityImageLabel(virConnectPtr conn, -- virDomainObjPtr vm, -- virDomainDeviceDefPtr dev) -+ virDomainDiskDefPtr disk) - { -- const virSecurityLabelDefPtr secdef = &vm->def->seclabel; -+ struct stat buf; -+ security_context_t fcon = NULL; -+ int rc = -1; -+ char *newpath = NULL; -+ const char *path = disk->src; - -- if (secdef->imagelabel) { -- return SELinuxSetFilecon(conn, dev->data.disk->src, default_image_context); -+ if (disk->readonly || disk->shared) -+ return 0; -+ -+ if (lstat(path, &buf) != 0) -+ return -1; -+ -+ if (S_ISLNK(buf.st_mode)) { -+ if (VIR_ALLOC_N(newpath, buf.st_size + 1) < 0) -+ return -1; -+ -+ if (readlink(path, newpath, buf.st_size) < 0) -+ goto err; -+ path = newpath; -+ if (stat(path, &buf) != 0) -+ goto err; - } -- return 0; -+ -+ if (matchpathcon(path, buf.st_mode, &fcon) == 0) { -+ rc = SELinuxSetFilecon(conn, path, fcon); -+ } -+err: -+ VIR_FREE(fcon); -+ VIR_FREE(newpath); -+ return rc; - } - - static int - SELinuxSetSecurityImageLabel(virConnectPtr conn, - virDomainObjPtr vm, -- virDomainDeviceDefPtr dev) -+ virDomainDiskDefPtr disk) - - { - const virSecurityLabelDefPtr secdef = &vm->def->seclabel; - -- if (secdef->imagelabel) { -- return SELinuxSetFilecon(conn, dev->data.disk->src, secdef->imagelabel); -- } -+ if (secdef->imagelabel) -+ return SELinuxSetFilecon(conn, disk->src, secdef->imagelabel); -+ - return 0; - } - -@@ -322,7 +345,7 @@ SELinuxRestoreSecurityLabel(virConnectPt - int rc = 0; - if (secdef->imagelabel) { - for (i = 0 ; i < vm->def->ndisks ; i++) { -- if (SELinuxSetFilecon(conn, vm->def->disks[i]->src, default_image_context) < 0) -+ if (SELinuxRestoreSecurityImageLabel(conn, vm->def->disks[i]) < 0) - rc = -1; - } - VIR_FREE(secdef->model); -@@ -368,16 +391,11 @@ SELinuxSetSecurityLabel(virConnectPtr co - - if (secdef->imagelabel) { - for (i = 0 ; i < vm->def->ndisks ; i++) { -- if(setfilecon(vm->def->disks[i]->src, secdef->imagelabel) < 0) { -- virSecurityReportError(conn, VIR_ERR_ERROR, -- _("%s: unable to set security context " -- "'\%s\' on %s: %s."), __func__, -- secdef->imagelabel, -- vm->def->disks[i]->src, -- virStrerror(errno, ebuf, sizeof ebuf)); -- if (security_getenforce() == 1) -- return -1; -- } -+ if (vm->def->disks[i]->readonly || -+ vm->def->disks[i]->shared) continue; -+ -+ if (SELinuxSetSecurityImageLabel(conn, vm, vm->def->disks[i]) < 0) -+ return -1; - } - } - diff --git a/libvirt-0.6.1-svirt-sound.patch b/libvirt-0.6.1-svirt-sound.patch deleted file mode 100644 index d537b00..0000000 --- a/libvirt-0.6.1-svirt-sound.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff -rup libvirt-0.6.1.orig/src/qemu_conf.c libvirt-0.6.1.new/src/qemu_conf.c ---- libvirt-0.6.1.orig/src/qemu_conf.c 2009-03-17 11:57:04.000000000 +0000 -+++ libvirt-0.6.1.new/src/qemu_conf.c 2009-03-17 15:50:08.000000000 +0000 -@@ -757,6 +757,20 @@ int qemudBuildCommandLine(virConnectPtr - char uuid[VIR_UUID_STRING_BUFLEN]; - char domid[50]; - char *pidfile; -+ int skipSound = 0; -+ -+ if (driver->securityDriver && -+ driver->securityDriver->name && -+ STREQ(driver->securityDriver->name, "selinux") && -+ getuid() == 0) { -+ static int soundWarned = 0; -+ skipSound = 1; -+ if (vm->def->nsounds && -+ !soundWarned) { -+ soundWarned = 1; -+ VIR_WARN0("Sound cards for VMs are disabled while SELinux security model is active"); -+ } -+ } - - uname_normalize(&ut); - -@@ -1364,7 +1378,8 @@ int qemudBuildCommandLine(virConnectPtr - } - - /* Add sound hardware */ -- if (vm->def->nsounds) { -+ if (vm->def->nsounds && -+ !skipSound) { - int size = 100; - char *modstr; - if (VIR_ALLOC_N(modstr, size+1) < 0) -Only in libvirt-0.6.1.new/src: qemu_conf.c~ diff --git a/libvirt-0.6.1-vcpu-deadlock.patch b/libvirt-0.6.1-vcpu-deadlock.patch deleted file mode 100644 index f9df448..0000000 --- a/libvirt-0.6.1-vcpu-deadlock.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: Daniel P. Berrange -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; diff --git a/libvirt-0.6.1-vnc-sasl-auth.patch b/libvirt-0.6.1-vnc-sasl-auth.patch deleted file mode 100644 index 83203ad..0000000 --- a/libvirt-0.6.1-vnc-sasl-auth.patch +++ /dev/null @@ -1,277 +0,0 @@ -diff -r 961d4b1ca1d3 qemud/libvirtd_qemu.aug ---- a/qemud/libvirtd_qemu.aug Wed Mar 04 13:17:44 2009 +0000 -+++ b/qemud/libvirtd_qemu.aug Thu Mar 05 14:22:50 2009 +0000 -@@ -27,6 +27,8 @@ module Libvirtd_qemu = - | str_entry "vnc_tls_x509_cert_dir" - | bool_entry "vnc_tls_x509_verify" - | str_entry "vnc_password" -+ | bool_entry "vnc_sasl" -+ | str_entry "vnc_sasl_dir" - - (* Each enty in the config is one of the following three ... *) - let entry = vnc_entry -diff -r 961d4b1ca1d3 qemud/test_libvirtd_qemu.aug ---- a/qemud/test_libvirtd_qemu.aug Wed Mar 04 13:17:44 2009 +0000 -+++ b/qemud/test_libvirtd_qemu.aug Thu Mar 05 14:22:50 2009 +0000 -@@ -60,6 +60,25 @@ vnc_tls_x509_verify = 1 - # example here before you set this - # - vnc_password = \"XYZ12345\" -+ -+ -+# Enable use of SASL encryption on the VNC server. This requires -+# a VNC client which supports the SASL protocol extension. -+# Examples include vinagre, virt-viewer and virt-manager -+# itself. UltraVNC, RealVNC, TightVNC do not support this -+# -+# It is necessary to configure /etc/sasl2/qemu.conf to choose -+# the desired SASL plugin (eg, GSSPI for Kerberos) -+# -+vnc_sasl = 1 -+ -+ -+# The default SASL configuration file is located in /etc/sasl2/ -+# When running libvirtd unprivileged, it may be desirable to -+# override the configs in this location. Set this parameter to -+# point to the directory, and create a qemu.conf in that location -+# -+vnc_sasl_dir = \"/some/directory/sasl2\" - " - - test Libvirtd_qemu.lns get conf = -@@ -123,3 +142,22 @@ vnc_password = \"XYZ12345\" - { "#comment" = "example here before you set this" } - { "#comment" = "" } - { "vnc_password" = "XYZ12345" } -+{ "#empty" } -+{ "#empty" } -+{ "#comment" = "Enable use of SASL encryption on the VNC server. This requires" } -+{ "#comment" = "a VNC client which supports the SASL protocol extension." } -+{ "#comment" = "Examples include vinagre, virt-viewer and virt-manager" } -+{ "#comment" = "itself. UltraVNC, RealVNC, TightVNC do not support this" } -+{ "#comment" = "" } -+{ "#comment" = "It is necessary to configure /etc/sasl2/qemu.conf to choose" } -+{ "#comment" = "the desired SASL plugin (eg, GSSPI for Kerberos)" } -+{ "#comment" = "" } -+{ "vnc_sasl" = "1" } -+{ "#empty" } -+{ "#empty" } -+{ "#comment" = "The default SASL configuration file is located in /etc/sasl2/" } -+{ "#comment" = "When running libvirtd unprivileged, it may be desirable to" } -+{ "#comment" = "override the configs in this location. Set this parameter to" } -+{ "#comment" = "point to the directory, and create a qemu.conf in that location" } -+{ "#comment" = "" } -+{ "vnc_sasl_dir" = "/some/directory/sasl2" } -diff -r 961d4b1ca1d3 src/qemu.conf ---- a/src/qemu.conf Wed Mar 04 13:17:44 2009 +0000 -+++ b/src/qemu.conf Thu Mar 05 14:22:50 2009 +0000 -@@ -60,6 +60,27 @@ - # vnc_password = "XYZ12345" - - -+# Enable use of SASL encryption on the VNC server. This requires -+# a VNC client which supports the SASL protocol extension. -+# Examples include vinagre, virt-viewer and virt-manager -+# itself. UltraVNC, RealVNC, TightVNC do not support this -+# -+# It is necessary to configure /etc/sasl2/qemu.conf to choose -+# the desired SASL plugin (eg, GSSPI for Kerberos) -+# -+# vnc_sasl = 1 -+ -+ -+# The default SASL configuration file is located in /etc/sasl2/ -+# When running libvirtd unprivileged, it may be desirable to -+# override the configs in this location. Set this parameter to -+# point to the directory, and create a qemu.conf in that location -+# -+# vnc_sasl_dir = "/some/directory/sasl2" -+ -+ -+ -+ - # The default security driver is SELinux. If SELinux is disabled - # on the host, then the security driver will automatically disable - # itself. If you wish to disable QEMU SELinux security driver while -diff -r 961d4b1ca1d3 src/qemu_conf.c ---- a/src/qemu_conf.c Wed Mar 04 13:17:44 2009 +0000 -+++ b/src/qemu_conf.c Thu Mar 05 14:22:50 2009 +0000 -@@ -161,6 +161,21 @@ int qemudLoadDriverConfig(struct qemud_d - } - } - -+ p = virConfGetValue (conf, "vnc_sasl"); -+ CHECK_TYPE ("vnc_sasl", VIR_CONF_LONG); -+ if (p) driver->vncSASL = p->l; -+ -+ p = virConfGetValue (conf, "vnc_sasl_dir"); -+ CHECK_TYPE ("vnc_sasl_dir", VIR_CONF_STRING); -+ if (p && p->str) { -+ VIR_FREE(driver->vncSASLdir); -+ if (!(driver->vncSASLdir = strdup(p->str))) { -+ virReportOOMError(NULL); -+ virConfFree(conf); -+ return -1; -+ } -+ } -+ - virConfFree (conf); - return 0; - } -@@ -838,15 +853,20 @@ int qemudBuildCommandLine(virConnectPtr - goto no_memory; \ - } while (0) - -+#define ADD_ENV_PAIR(envname, val) \ -+ do { \ -+ char *envval; \ -+ ADD_ENV_SPACE; \ -+ if (virAsprintf(&envval, "%s=%s", envname, val) < 0) \ -+ goto no_memory; \ -+ qenv[qenvc++] = envval; \ -+ } while (0) -+ - #define ADD_ENV_COPY(envname) \ - do { \ - char *val = getenv(envname); \ -- char *envval; \ -- ADD_ENV_SPACE; \ - if (val != NULL) { \ -- if (virAsprintf(&envval, "%s=%s", envname, val) < 0) \ -- goto no_memory; \ -- qenv[qenvc++] = envval; \ -+ ADD_ENV_PAIR(envname, val); \ - } \ - } while (0) - -@@ -1295,6 +1315,15 @@ int qemudBuildCommandLine(virConnectPtr - driver->vncTLSx509certdir); - } - } -+ -+ if (driver->vncSASL) { -+ virBufferAddLit(&opt, ",sasl"); -+ -+ if (driver->vncSASLdir) -+ ADD_ENV_PAIR("SASL_CONF_DIR", driver->vncSASLdir); -+ -+ /* TODO: Support ACLs later */ -+ } - } else { - virBufferVSprintf(&opt, "%d", - vm->def->graphics->data.vnc.port - 5900); -diff -r 961d4b1ca1d3 src/qemu_conf.h ---- a/src/qemu_conf.h Wed Mar 04 13:17:44 2009 +0000 -+++ b/src/qemu_conf.h Thu Mar 05 14:22:50 2009 +0000 -@@ -73,9 +73,11 @@ struct qemud_driver { - char *stateDir; - unsigned int vncTLS : 1; - unsigned int vncTLSx509verify : 1; -+ unsigned int vncSASL : 1; - char *vncTLSx509certdir; - char *vncListen; - char *vncPassword; -+ char *vncSASLdir; - - virCapsPtr caps; - -diff -r 961d4b1ca1d3 src/qemu_driver.c ---- a/src/qemu_driver.c Wed Mar 04 13:17:44 2009 +0000 -+++ b/src/qemu_driver.c Thu Mar 05 14:22:50 2009 +0000 -@@ -620,6 +620,7 @@ qemudShutdown(void) { - VIR_FREE(qemu_driver->vncTLSx509certdir); - VIR_FREE(qemu_driver->vncListen); - VIR_FREE(qemu_driver->vncPassword); -+ VIR_FREE(qemu_driver->vncSASLdir); - - /* Free domain callback list */ - virDomainEventCallbackListFree(qemu_driver->domainEventCallbacks); -diff -r 961d4b1ca1d3 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.args ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.args Thu Mar 05 14:22:50 2009 +0000 -@@ -0,0 +1,1 @@ -+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test SASL_CONF_DIR=/root/.sasl2 /usr/bin/qemu -S -M pc -m 214 -smp 1 -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -vnc 127.0.0.1:3,sasl -diff -r 961d4b1ca1d3 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.xml Thu Mar 05 14:22:50 2009 +0000 -@@ -0,0 +1,24 @@ -+ -+ QEMUGuest1 -+ c7a5fdbd-edaf-9455-926a-d65c16db1809 -+ 219200 -+ 219200 -+ 1 -+ -+ hvm -+ -+ -+ -+ destroy -+ restart -+ destroy -+ -+ /usr/bin/qemu -+ -+ -+ -+ -+ -+ -+ -+ -diff -r 961d4b1ca1d3 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-tls.args ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-tls.args Thu Mar 05 14:22:50 2009 +0000 -@@ -0,0 +1,1 @@ -+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test SASL_CONF_DIR=/root/.sasl2 /usr/bin/qemu -S -M pc -m 214 -smp 1 -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -vnc 127.0.0.1:3,tls,x509verify=/etc/pki/tls/qemu,sasl -diff -r 961d4b1ca1d3 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-tls.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-tls.xml Thu Mar 05 14:22:50 2009 +0000 -@@ -0,0 +1,24 @@ -+ -+ QEMUGuest1 -+ c7a5fdbd-edaf-9455-926a-d65c16db1809 -+ 219200 -+ 219200 -+ 1 -+ -+ hvm -+ -+ -+ -+ destroy -+ restart -+ destroy -+ -+ /usr/bin/qemu -+ -+ -+ -+ -+ -+ -+ -+ -diff -r 961d4b1ca1d3 tests/qemuxml2argvtest.c ---- a/tests/qemuxml2argvtest.c Wed Mar 04 13:17:44 2009 +0000 -+++ b/tests/qemuxml2argvtest.c Thu Mar 05 14:22:50 2009 +0000 -@@ -213,6 +213,19 @@ mymain(int argc, char **argv) - QEMUD_CMD_FLAG_DRIVE_CACHE_V2); - DO_TEST("disk-usb", 0); - DO_TEST("graphics-vnc", 0); -+ -+ driver.vncSASL = 1; -+ driver.vncSASLdir = strdup("/root/.sasl2"); -+ DO_TEST("graphics-vnc-sasl", 0); -+ driver.vncTLS = 1; -+ driver.vncTLSx509verify = 1; -+ driver.vncTLSx509certdir = strdup("/etc/pki/tls/qemu"); -+ DO_TEST("graphics-vnc-tls", 0); -+ driver.vncSASL = driver.vncTLSx509verify = driver.vncTLS = 0; -+ free(driver.vncSASLdir); -+ free(driver.vncTLSx509certdir); -+ driver.vncSASLdir = driver.vncTLSx509certdir = NULL; -+ - DO_TEST("graphics-sdl", 0); - DO_TEST("graphics-sdl-fullscreen", 0); - DO_TEST("input-usbmouse", 0); diff --git a/libvirt-0.6.1-xen-events.patch b/libvirt-0.6.1-xen-events.patch deleted file mode 100644 index dd80746..0000000 --- a/libvirt-0.6.1-xen-events.patch +++ /dev/null @@ -1,29 +0,0 @@ -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) diff --git a/libvirt-0.6.1-xenblock-detach.patch b/libvirt-0.6.1-xenblock-detach.patch deleted file mode 100644 index 204f5d9..0000000 --- a/libvirt-0.6.1-xenblock-detach.patch +++ /dev/null @@ -1,26 +0,0 @@ -From: Daniel P. Berrange -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); diff --git a/libvirt-0.6.1-xend-lookup.patch b/libvirt-0.6.1-xend-lookup.patch deleted file mode 100644 index ea9a175..0000000 --- a/libvirt-0.6.1-xend-lookup.patch +++ /dev/null @@ -1,24 +0,0 @@ -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; diff --git a/libvirt-0.6.2-svirt-sound.patch b/libvirt-0.6.2-svirt-sound.patch new file mode 100644 index 0000000..0b1796e --- /dev/null +++ b/libvirt-0.6.2-svirt-sound.patch @@ -0,0 +1,33 @@ +--- src/qemu_conf.c.orig 2009-04-02 11:50:10.000000000 +0200 ++++ src/qemu_conf.c 2009-04-03 17:46:59.000000000 +0200 +@@ -779,6 +779,20 @@ int qemudBuildCommandLine(virConnectPtr + char domid[50]; + char *pidfile; + const char *cpu = NULL; ++ int skipSound = 0; ++ ++ if (driver->securityDriver && ++ driver->securityDriver->name && ++ STREQ(driver->securityDriver->name, "selinux") && ++ getuid() == 0) { ++ static int soundWarned = 0; ++ skipSound = 1; ++ if (vm->def->nsounds && ++ !soundWarned) { ++ soundWarned = 1; ++ VIR_WARN0("Sound cards for VMs are disabled while SELinux security model is active"); ++ } ++ } + + uname_normalize(&ut); + +@@ -1425,7 +1439,8 @@ int qemudBuildCommandLine(virConnectPtr + } + + /* Add sound hardware */ +- if (vm->def->nsounds) { ++ if (vm->def->nsounds && ++ !skipSound) { + int size = 100; + char *modstr; + if (VIR_ALLOC_N(modstr, size+1) < 0) diff --git a/libvirt.spec b/libvirt.spec index e22c09f..e644d33 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -13,6 +13,25 @@ %define with_uml 0%{!?_without_uml:1} %define with_network 0%{!?_without_network:1} +%define with_xen 0%{!?_without_xen:1} +%define with_xen_proxy 0%{!?_without_xen_proxy:1} +%define with_qemu 0%{!?_without_qemu:1} +%define with_openvz 0%{!?_without_openvz:1} +%define with_lxc 0%{!?_without_lxc:1} +%define with_sasl 0%{!?_without_sasl:1} +%define with_avahi 0%{!?_without_avahi:1} +%define with_polkit 0%{!?_without_polkit:0} +%define with_python 0%{!?_without_python:1} +%define with_libvirtd 0%{!?_without_libvirtd:1} +%define with_uml 0%{!?_without_uml:1} +%define with_network 0%{!?_without_network:1} +%define with_storage_fs 0%{!?_without_storage_fs:1} +%define with_storage_lvm 0%{!?_without_storage_lvm:1} +%define with_storage_iscsi 0%{!?_without_storage_iscsi:1} +%define with_storage_disk 0%{!?_without_storage_disk:1} +%define with_numactl 0%{!?_without_numactl:1} + + # Xen is available only on i386 x86_64 ia64 %ifnarch i386 i586 i686 x86_64 ia64 %define with_xen 0 @@ -46,29 +65,15 @@ Summary: Library providing a simple API virtualization Name: libvirt -Version: 0.6.1 -Release: 6%{?dist}%{?extra_release} +Version: 0.6.2 +Release: 1%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries Source: libvirt-%{version}.tar.gz -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 -Patch11: libvirt-0.6.1-svirt-shared-readonly.patch - -# Not upstream yet - pending QEMU merge -Patch100: libvirt-0.6.1-vnc-sasl-auth.patch # Not for upstream. Temporary hack till PulseAudio autostart # problems are sorted out when SELinux enforcing -Patch200: libvirt-0.6.1-svirt-sound.patch +Patch200: libvirt-0.6.2-svirt-sound.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root URL: http://libvirt.org/ @@ -92,11 +97,13 @@ Requires: cyrus-sasl-md5 %if %{with_polkit} Requires: PolicyKit >= 0.6 %endif +%if %{with_storage_fs} # For mount/umount in FS driver BuildRequires: util-linux # For showmount in FS driver (netfs discovery) BuildRequires: nfs-utils Requires: nfs-utils +%endif %if %{with_qemu} # From QEMU RPMs Requires: /usr/bin/qemu-img @@ -106,12 +113,18 @@ Requires: /usr/bin/qemu-img Requires: /usr/sbin/qcow-create %endif %endif +%if %{with_storage_lvm} # For LVM drivers Requires: lvm2 +%endif +%if %{with_storage_iscsi} # For ISCSI driver Requires: iscsi-initiator-utils +%endif +%if %{with_storage_disk} # For disk driver Requires: parted +%endif # For svirt support Requires: libselinux %if %{with_xen} @@ -139,8 +152,10 @@ BuildRequires: cyrus-sasl-devel %if %{with_polkit} BuildRequires: PolicyKit-devel >= 0.6 %endif +%if %{with_storage_fs} # For mount/umount in FS driver BuildRequires: util-linux +%endif %if %{with_qemu} # From QEMU RPMs BuildRequires: /usr/bin/qemu-img @@ -150,14 +165,22 @@ BuildRequires: /usr/bin/qemu-img BuildRequires: /usr/sbin/qcow-create %endif %endif +%if %{with_storage_lvm} # For LVM drivers BuildRequires: lvm2 +%endif +%if %{with_storage_iscsi} # For ISCSI driver BuildRequires: iscsi-initiator-utils +%endif +%if %{with_storage_disk} # For disk driver BuildRequires: parted-devel +%endif +%if %{with_numactl} # For QEMU/LXC numa info BuildRequires: numactl-devel +%endif Obsoletes: libvir <= 0.2 Provides: libvir = %{version}-%{release} @@ -200,20 +223,8 @@ of recent versions of Linux (and other OSes). %prep %setup -q -%patch1 -p0 -%patch2 -p0 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p0 -%patch11 -p1 - -%patch100 -p1 -%patch200 -p1 + +%patch200 -p0 mv NEWS NEWS.old iconv -f ISO-8859-1 -t UTF-8 < NEWS.old > NEWS @@ -267,6 +278,26 @@ iconv -f ISO-8859-1 -t UTF-8 < NEWS.old > NEWS %define _without_network --without-network %endif +%if ! %{with_storage_fs} +%define _without_storage_fs --without-storage-fs +%endif + +%if ! %{with_storage_lvm} +%define _without_storage_lvm --without-storage-lvm +%endif + +%if ! %{with_storage_iscsi} +%define _without_storage_iscsi --without-storage-iscsi +%endif + +%if ! %{with_storage_disk} +%define _without_storage_disk --without-storage-disk +%endif + +%if ! %{with_numactl} +%define _without_numactl --without-numactl +%endif + %configure %{?_without_xen} \ %{?_without_qemu} \ %{?_without_openvz} \ @@ -279,6 +310,11 @@ iconv -f ISO-8859-1 -t UTF-8 < NEWS.old > NEWS %{?_without_uml} \ %{?_without_network} \ %{?_with_rhel5_api} \ + %{?_without_storage_fs} \ + %{?_without_storage_lvm} \ + %{?_without_storage_iscsi} \ + %{?_without_storage_disk} \ + %{?_without_numactl} \ --with-init-script=redhat \ --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \ --with-remote-file=%{_localstatedir}/run/libvirtd.pid @@ -506,6 +542,14 @@ fi %endif %changelog +* Fri Apr 3 2009 Daniel Veillard - 0.6.2-1.fc11 +- release of 0.6.2 +- memory ballooning in QEMU +- SCSI HBA storage pool support +- support SASL auth for VNC server +- PCI passthrough in Xen driver +- assorted bug fixes + * Fri Apr 3 2009 Daniel P. Berrange - 0.6.1-6.fc11 - Fix typo in previous patch diff --git a/sources b/sources index 12fd240..d9e6628 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -3154ea9d4a0778497dfdf58cb98127c0 libvirt-0.6.1.tar.gz +3035b484861516a1cd425acef1e760e3 libvirt-0.6.2.tar.gz