Compare commits

...

25 Commits

Author SHA1 Message Date
Chris Lalancette
08b9144b41 Add a couple of iscsi patches to the storage backend; without these two
patches, iscsi storage support is incomplete (and won't work properly).
2008-03-27 19:18:59 +00:00
Daniel P. Berrange
2063007248 Fix QEMU media change, QEMU tap device setup, Xen boot device XML. Added default images directory 2008-03-13 15:31:57 +00:00
Daniel P. Berrange
81e46cb6da Fix daemon startup to avoid destroying networking 2008-03-10 21:36:01 +00:00
Daniel Veillard
263e2f2021 2 bugs found just after the release, Daniel 2008-03-03 16:55:24 +00:00
Daniel Veillard
2b9efc3de2 More crazyness around ppc64, Daniel 2008-03-03 16:03:24 +00:00
Daniel Veillard
69f6239766 Trying to work around ppc64 lacking any virtualization, Daniel 2008-03-03 15:43:06 +00:00
Daniel Veillard
bf744f9872 Release of 0.4.1, removal of old patches, spec file cleanup, Daniel 2008-03-03 15:14:14 +00:00
Jesse Keating
45b0b2bfa6 * Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 0.4.0-5
- Autorebuild for GCC 4.3
2008-02-20 06:45:43 +00:00
Daniel P. Berrange
f29ea218b7 Fix SSH tunnelling and XenD nodeinfo compat 2008-01-19 02:20:46 +00:00
Daniel P. Berrange
7d193b7810 Fix crash when no auth callback 2008-01-14 04:04:32 +00:00
Daniel P. Berrange
3182a4df5a Fixed auth callback crash and config file reading 2008-01-02 21:43:05 +00:00
Daniel Veillard
4f667910e9 Release of 0.4.0, the previous patches are not needed anymore.
Daniel
2007-12-18 10:44:34 +00:00
Bill Nottingham
b395a39f7b makefile update to properly grab makefile.common 2007-10-15 19:05:00 +00:00
Daniel P. Berrange
fdd7e87fe3 Added backport of patch for qemu driver config file 2007-10-15 18:23:02 +00:00
Daniel P. Berrange
f06c387ab5 Add i686 to arch list for Xen builds allowing 'make local' to do the right thing 2007-10-10 16:46:18 +00:00
Daniel Veillard
5ad8bc8190 Upstream release 0.3.3 2007-09-30 21:18:47 +00:00
Daniel Veillard
31802de821 Stupididy on the namagement of buildroots, daniel 2007-08-24 15:34:27 +00:00
Daniel Veillard
cc39758e17 Compile on arches without Xen, Daniel 2007-08-24 15:10:05 +00:00
Daniel Veillard
55fabd69c0 Release of 0.3.2, remove the old patch, Daniel 2007-08-21 15:14:54 +00:00
Daniel Veillard
b2a1a0e9ba Fixing missing Requires in libvirt-devel, Daniel 2007-08-16 15:16:44 +00:00
Daniel Veillard
cbe377ed29 Fix for bug #249594, Daniel 2007-07-26 15:35:55 +00:00
Jesse Keating
06a21e388f * Wed Jul 25 2007 Jesse Keating <jkeating@redhat.com> - 0.3.1-2
- Rebuild for RH #249435
2007-07-25 17:47:38 +00:00
Daniel Veillard
d1a886ab31 Upstream release 0.3.1, Daniel 2007-07-24 15:45:36 +00:00
Daniel Veillard
c70baa5133 Upstream release of 0.3.0 , removed old patches, Daniel 2007-07-09 12:40:55 +00:00
Daniel Veillard
52b4d91272 bvirt-0.2.3 upstream release, Daniel 2007-06-08 15:07:30 +00:00
18 changed files with 739 additions and 332 deletions

View File

@@ -1,19 +1,5 @@
libvirt-0.0.3.tar.gz
libvirt-0.0.4.tar.gz
libvirt-0.0.5.tar.gz
libvirt-0.0.6.tar.gz
libvirt-0.1.0.tar.gz
libvirt-0.1.2.tar.gz
libvirt-0.1.1.tar.gz
libvirt-0.1.3.tar.gz
libvirt-0.1.4.tar.gz
libvirt-0.1.5.tar.gz
libvirt-0.1.6.tar.gz
libvirt-0.1.7.tar.gz
libvirt-0.1.8.tar.gz
libvirt-0.1.9.tar.gz
libvirt-0.1.10.tar.gz
libvirt-0.1.11.tar.gz
libvirt-0.2.0.tar.gz
libvirt-0.2.1.tar.gz
libvirt-0.2.2.tar.gz
.build*.log
*.rpm
i686
x86_64
libvirt-*.tar.gz

View File

@@ -3,4 +3,19 @@
NAME := libvirt
SPECFILE = $(firstword $(wildcard *.spec))
include ../common/Makefile.common
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@@ -1,17 +0,0 @@
diff -rup libvirt-0.2.2/qemud/conf.c libvirt-0.2.2.new/qemud/conf.c
--- libvirt-0.2.2/qemud/conf.c 2007-05-14 10:38:52.000000000 -0400
+++ libvirt-0.2.2.new/qemud/conf.c 2007-05-14 10:38:34.000000000 -0400
@@ -1151,6 +1151,12 @@ qemudNetworkIfaceConnect(struct qemud_se
goto error;
}
+ if (!server->brctl && (err = brInit(&server->brctl))) {
+ qemudReportError(server, VIR_ERR_INTERNAL_ERROR,
+ "cannot initialize bridge support: %s", strerror(err));
+ goto error;
+ }
+
if ((err = brAddTap(server->brctl, brname,
ifname, BR_IFNAME_MAXLEN, &tapfd))) {
qemudReportError(server, VIR_ERR_INTERNAL_ERROR,
Only in libvirt-0.2.2.new/qemud: conf.c.orig

View File

@@ -1,15 +0,0 @@
diff -rup libvirt-0.2.2/src/xen_unified.c libvirt-0.2.2.new/src/xen_unified.c
--- libvirt-0.2.2/src/xen_unified.c 2007-04-17 04:38:52.000000000 -0400
+++ libvirt-0.2.2.new/src/xen_unified.c 2007-05-01 16:49:54.000000000 -0400
@@ -112,6 +112,11 @@ xenUnifiedOpen (virConnectPtr conn, cons
for (i = 0; i < nb_drivers; ++i) {
int failed_to_open = 1;
+ /* Only use XM driver for Xen <= 3.0.3 (ie xendConfigVersion <= 2) */
+ if (drivers[i] == &xenXMDriver &&
+ priv->xendConfigVersion > 2)
+ continue;
+
/* Ignore proxy for root */
if (i == proxy_offset && getuid() == 0)
continue;

View File

@@ -1,23 +0,0 @@
diff -rup libvirt-0.2.2/qemud/qemud.c libvirt-0.2.2.new/qemud/qemud.c
--- libvirt-0.2.2/qemud/qemud.c 2007-04-11 10:13:36.000000000 -0400
+++ libvirt-0.2.2.new/qemud/qemud.c 2007-05-01 16:51:15.000000000 -0400
@@ -1110,6 +1110,7 @@ qemudBuildDnsmasqArgv(struct qemud_serve
len =
1 + /* dnsmasq */
1 + /* --keep-in-foreground */
+ 1 + /* --strict-order */
1 + /* --bind-interfaces */
2 + /* --pid-file "" */
2 + /* --conf-file "" */
@@ -1133,6 +1134,11 @@ qemudBuildDnsmasqArgv(struct qemud_serve
APPEND_ARG(*argv, i++, "dnsmasq");
APPEND_ARG(*argv, i++, "--keep-in-foreground");
+ /*
+ * Needed to ensure dnsmasq uses same algorithm for processing
+ * multiple nameserver entries in /etc/resolv.conf as GLibC.
+ */
+ APPEND_ARG(*argv, i++, "--strict-order");
APPEND_ARG(*argv, i++, "--bind-interfaces");
APPEND_ARG(*argv, i++, "--pid-file");

View File

@@ -1,70 +0,0 @@
diff -rup libvirt-0.2.2.new/src/xend_internal.c libvirt-0.2.2/src/xend_internal.c
--- libvirt-0.2.2.new/src/xend_internal.c 2007-04-15 16:09:10.000000000 -0400
+++ libvirt-0.2.2/src/xend_internal.c 2007-05-03 14:52:42.000000000 -0400
@@ -1676,35 +1676,38 @@ xend_parse_sexp_desc(virConnectPtr conn,
}
}
- /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.4) vnc config */
- tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux");
- if (tmp != NULL) {
- if (tmp[0] == '1') {
- int port = xenStoreDomainGetVNCPort(conn, domid);
- const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux");
- const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux");
- /* For Xen >= 3.0.3, don't generate a fixed port mapping
- * because it will almost certainly be wrong ! Just leave
- * it as -1 which lets caller see that the VNC server isn't
- * present yet. Subsquent dumps of the XML will eventually
- * find the port in XenStore once VNC server has started
- */
- if (port == -1 && xendConfigVersion < 2)
- port = 5900 + domid;
- virBufferVSprintf(&buf, " <graphics type='vnc' port='%d'", port);
- if (listenAddr)
- virBufferVSprintf(&buf, " listen='%s'", listenAddr);
- if (keymap)
- virBufferVSprintf(&buf, " keymap='%s'", keymap);
- virBufferAdd(&buf, "/>\n", 3);
+ /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.3) vnc config */
+ if ((hvm && xendConfigVersion < 4) ||
+ (!hvm && xendConfigVersion < 3)) {
+ tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux");
+ if (tmp != NULL) {
+ if (tmp[0] == '1') {
+ int port = xenStoreDomainGetVNCPort(conn, domid);
+ const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux");
+ const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux");
+ /* For Xen >= 3.0.3, don't generate a fixed port mapping
+ * because it will almost certainly be wrong ! Just leave
+ * it as -1 which lets caller see that the VNC server isn't
+ * present yet. Subsquent dumps of the XML will eventually
+ * find the port in XenStore once VNC server has started
+ */
+ if (port == -1 && xendConfigVersion < 2)
+ port = 5900 + domid;
+ virBufferVSprintf(&buf, " <graphics type='vnc' port='%d'", port);
+ if (listenAddr)
+ virBufferVSprintf(&buf, " listen='%s'", listenAddr);
+ if (keymap)
+ virBufferVSprintf(&buf, " keymap='%s'", keymap);
+ virBufferAdd(&buf, "/>\n", 3);
+ }
}
- }
- /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
- tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux");
- if (tmp != NULL) {
- if (tmp[0] == '1')
- virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27 );
+ /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
+ tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux");
+ if (tmp != NULL) {
+ if (tmp[0] == '1')
+ virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27 );
+ }
}
tty = xenStoreDomainGetConsolePath(conn, domid);
Only in libvirt-0.2.2/src: xend_internal.c.orig

View File

@@ -1,128 +0,0 @@
diff -rup libvirt-0.2.2/qemud/conf.c libvirt-0.2.2.new/qemud/conf.c
--- libvirt-0.2.2/qemud/conf.c 2007-04-17 04:34:42.000000000 -0400
+++ libvirt-0.2.2.new/qemud/conf.c 2007-05-14 10:36:12.000000000 -0400
@@ -245,21 +245,25 @@ static int qemudExtractVersionInfo(const
cleanup1:
_exit(-1); /* Just in case */
} else { /* Parent */
- char help[4096]; /* Ought to be enough to hold QEMU help screen */
- int got, ret = -1;
+ char help[8192]; /* Ought to be enough to hold QEMU help screen */
+ int got = 0, ret = -1;
int major, minor, micro;
if (close(newstdout[1]) < 0)
goto cleanup2;
- reread:
- if ((got = read(newstdout[0], help, sizeof(help)-1)) < 0) {
- if (errno == EINTR)
- goto reread;
- goto cleanup2;
+ while (got < (sizeof(help)-1)) {
+ int len;
+ if ((len = read(newstdout[0], help+got, sizeof(help)-got-1)) <= 0) {
+ if (!len)
+ break;
+ if (errno == EINTR)
+ continue;
+ goto cleanup2;
+ }
+ got += len;
}
help[got] = '\0';
-
if (sscanf(help, "QEMU PC emulator version %d.%d.%d", &major,&minor, &micro) != 3) {
goto cleanup2;
}
@@ -267,6 +271,8 @@ static int qemudExtractVersionInfo(const
*version = (major * 1000 * 1000) + (minor * 1000) + micro;
if (strstr(help, "-no-kqemu"))
*flags |= QEMUD_CMD_FLAG_KQEMU;
+ if (strstr(help, "-no-reboot"))
+ *flags |= QEMUD_CMD_FLAG_NO_REBOOT;
if (*version >= 9000)
*flags |= QEMUD_CMD_FLAG_VNC_COLON;
ret = 0;
@@ -858,6 +864,22 @@ static struct qemud_vm_def *qemudParseXM
}
xmlXPathFreeObject(obj);
+
+ /* See if we disable reboots */
+ obj = xmlXPathEval(BAD_CAST "string(/domain/on_reboot)", ctxt);
+ if ((obj == NULL) || (obj->type != XPATH_STRING) ||
+ (obj->stringval == NULL) || (obj->stringval[0] == 0)) {
+ def->noReboot = 0;
+ } else {
+ if (!strcmp((char*)obj->stringval, "destroy"))
+ def->noReboot = 1;
+ else
+ def->noReboot = 0;
+ }
+ if (obj)
+ xmlXPathFreeObject(obj);
+
+
/* Extract OS type info */
obj = xmlXPathEval(BAD_CAST "string(/domain/os/type[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
@@ -1220,6 +1242,8 @@ int qemudBuildCommandLine(struct qemud_s
2 + /* cpus */
2 + /* boot device */
2 + /* monitor */
+ (server->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
+ vm->def->noReboot ? 1 : 0) + /* no-reboot */
(vm->def->features & QEMUD_FEATURE_ACPI ? 0 : 1) + /* acpi */
(vm->def->os.kernel[0] ? 2 : 0) + /* kernel */
(vm->def->os.initrd[0] ? 2 : 0) + /* initrd */
@@ -1255,6 +1279,11 @@ int qemudBuildCommandLine(struct qemud_s
goto no_memory;
if (!((*argv)[++n] = strdup("pty")))
goto no_memory;
+ if (server->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
+ vm->def->noReboot) {
+ if (!((*argv)[++n] = strdup("-no-reboot")))
+ goto no_memory;
+ }
if (!(vm->def->features & QEMUD_FEATURE_ACPI)) {
if (!((*argv)[++n] = strdup("-no-acpi")))
@@ -2517,6 +2546,17 @@ char *qemudGenerateXML(struct qemud_serv
goto no_memory;
}
+ if (bufferAdd(buf, " <on_poweroff>destroy</on_poweroff>\n", -1) < 0)
+ goto no_memory;
+ if (def->noReboot) {
+ if (bufferAdd(buf, " <on_reboot>destroy</on_reboot>\n", -1) < 0)
+ goto no_memory;
+ } else {
+ if (bufferAdd(buf, " <on_reboot>restart</on_reboot>\n", -1) < 0)
+ goto no_memory;
+ }
+ if (bufferAdd(buf, " <on_crash>destroy</on_crash>\n", -1) < 0)
+ goto no_memory;
if (bufferAdd(buf, " <devices>\n", -1) < 0)
goto no_memory;
diff -rup libvirt-0.2.2/qemud/internal.h libvirt-0.2.2.new/qemud/internal.h
--- libvirt-0.2.2/qemud/internal.h 2007-04-11 10:13:36.000000000 -0400
+++ libvirt-0.2.2.new/qemud/internal.h 2007-05-14 10:36:02.000000000 -0400
@@ -161,6 +161,7 @@ enum qemud_vm_grapics_type {
enum qemud_cmd_flags {
QEMUD_CMD_FLAG_KQEMU = 1,
QEMUD_CMD_FLAG_VNC_COLON = 2,
+ QEMUD_CMD_FLAG_NO_REBOOT = 4,
};
@@ -191,6 +192,8 @@ struct qemud_vm_def {
int maxmem;
int vcpus;
+ int noReboot;
+
struct qemud_vm_os_def os;
int features;

View File

@@ -1,19 +0,0 @@
--- libvirt-0.2.2/ChangeLog.sync-restart 2007-05-02 13:07:21.719425000 -0400
+++ libvirt-0.2.2/ChangeLog 2007-05-02 13:08:23.204879000 -0400
@@ -0,0 +1,5 @@
+Wed May 2 17:55:12 IST 2007 Mark McLoughlin <markmc@redhat.com>
+
+ * qemud/libvirtd.in: synchronously restart the daemon in
+ order to avoid https://bugzilla.redhat.com/238492
+
--- libvirt-0.2.2/qemud/libvirtd.in.sync-restart 2007-02-23 07:50:58.000000000 -0500
+++ libvirt-0.2.2/qemud/libvirtd.in 2007-05-02 13:08:23.209868000 -0400
@@ -34,7 +34,7 @@
stop() {
echo -n $"Stopping $SERVICE daemon: "
- killproc $PROCESS -TERM
+ killproc $PROCESS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then

View File

@@ -0,0 +1,48 @@
diff -rup libvirt-0.4.1.orig/qemud/qemud.c libvirt-0.4.1.new/qemud/qemud.c
--- libvirt-0.4.1.orig/qemud/qemud.c 2008-03-10 17:31:09.000000000 -0400
+++ libvirt-0.4.1.new/qemud/qemud.c 2008-03-10 17:31:36.000000000 -0400
@@ -393,7 +393,7 @@ static int qemudGoDaemon(void) {
case -1:
return -1;
default:
- return nextpid;
+ _exit(0);
}
cleanup:
@@ -418,8 +418,7 @@ static int qemudGoDaemon(void) {
status != 0) {
return -1;
}
-
- return pid;
+ _exit(0);
}
}
}
@@ -2116,16 +2115,12 @@ int main(int argc, char **argv) {
goto error1;
if (godaemon) {
- int pid;
openlog("libvirtd", 0, 0);
- pid = qemudGoDaemon();
- if (pid < 0) {
+ if (qemudGoDaemon() < 0) {
qemudLog(QEMUD_ERR, _("Failed to fork as daemon: %s"),
strerror(errno));
goto error1;
}
- if (pid > 0)
- goto out;
/* Choose the name of the PID file. */
if (!pid_file) {
@@ -2172,7 +2167,6 @@ int main(int argc, char **argv) {
if (godaemon)
closelog();
- out:
ret = 0;
error2:

View File

@@ -0,0 +1,128 @@
commit 570fd656d1b67e5d02f52e107946930257e811a7
Author: Daniel Veillard <veillard@redhat.com>
Date: Thu Mar 13 09:17:45 2008 +0000
* src/qemu_conf.c src/qemu_driver.c: patch from Cole Robinson
fixing CD Rom change on live QEmu/KVM domains.
Daniel
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
index e54da5b..ebbd251 100644
--- a/src/qemu_conf.c
+++ b/src/qemu_conf.c
@@ -594,9 +594,16 @@ static int qemudParseDiskXML(virConnectPtr conn,
}
if (source == NULL) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_NO_SOURCE, target ? "%s" : NULL, target);
- goto error;
+ /* There is a case without the source
+ * to the CD-ROM device
+ */
+ if (!device || STRNEQ((const char *) device, "cdrom")) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_SOURCE,
+ target ? "%s" : NULL, target);
+ goto error;
+ }
}
+
if (target == NULL) {
qemudReportError(conn, NULL, NULL, VIR_ERR_NO_TARGET, source ? "%s" : NULL, source);
goto error;
@@ -630,7 +637,7 @@ static int qemudParseDiskXML(virConnectPtr conn,
goto error;
}
- strncpy(disk->src, (const char *)source, NAME_MAX-1);
+ strncpy(disk->src, (source ? (const char *) source : "\0"), NAME_MAX-1);
disk->src[NAME_MAX-1] = '\0';
strncpy(disk->dst, (const char *)target, NAME_MAX-1);
@@ -1747,9 +1754,15 @@ int qemudBuildCommandLine(virConnectPtr conn,
char dev[NAME_MAX];
char file[PATH_MAX];
if (!strcmp(disk->dst, "hdc") &&
- disk->device == QEMUD_DISK_CDROM)
- snprintf(dev, NAME_MAX, "-%s", "cdrom");
- else
+ disk->device == QEMUD_DISK_CDROM) {
+ if (disk->src[0])
+ snprintf(dev, NAME_MAX, "-%s", "cdrom");
+ else {
+ /* Don't put anything on the cmdline for an empty cdrom*/
+ disk = disk->next;
+ continue;
+ }
+ } else
snprintf(dev, NAME_MAX, "-%s", disk->dst);
snprintf(file, PATH_MAX, "%s", disk->src);
@@ -2906,8 +2919,10 @@ char *qemudGenerateXML(virConnectPtr conn,
types[disk->type], devices[disk->device]) < 0)
goto no_memory;
- if (virBufferVSprintf(buf, " <source %s='%s'/>\n", typeAttrs[disk->type], disk->src) < 0)
- goto no_memory;
+ if (disk->src[0])
+ if (virBufferVSprintf(buf, " <source %s='%s'/>\n",
+ typeAttrs[disk->type], disk->src) < 0)
+ goto no_memory;
if (virBufferVSprintf(buf, " <target dev='%s'/>\n", disk->dst) < 0)
goto no_memory;
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 21f0fed..2b4c2a6 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -2223,23 +2223,29 @@ static int qemudDomainChangeCDROM(virDomainPtr dom,
struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;
char *cmd, *reply, *safe_path;
- /* Migrate to file */
- safe_path = qemudEscapeMonitorArg(newdisk->src);
- if (!safe_path) {
- qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
- "out of memory");
- return -1;
- }
- if (asprintf (&cmd, "change %s \"%s\"",
- /* XXX qemu may support multiple CDROM in future */
- /* olddisk->dst */ "cdrom",
- safe_path) == -1) {
+ if (newdisk->src[0]) {
+ safe_path = qemudEscapeMonitorArg(newdisk->src);
+ if (!safe_path) {
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
+ "out of memory");
+ return -1;
+ }
+ if (asprintf (&cmd, "change %s \"%s\"",
+ /* XXX qemu may support multiple CDROM in future */
+ /* olddisk->dst */ "cdrom",
+ safe_path) == -1) {
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
+ "out of memory");
+ free(safe_path);
+ return -1;
+ }
+ free(safe_path);
+
+ } else if (asprintf(&cmd, "eject cdrom") == -1) {
qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
"out of memory");
- free(safe_path);
return -1;
}
- free(safe_path);
if (qemudMonitorCommand(driver, vm, cmd, &reply) < 0) {
qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED, "cannot change cdrom media");
@@ -2248,7 +2254,7 @@ static int qemudDomainChangeCDROM(virDomainPtr dom,
}
free(reply);
free(cmd);
- strcpy(olddisk->dst, newdisk->dst);
+ strcpy(olddisk->src, newdisk->src);
olddisk->type = newdisk->type;
return 0;
}

View File

@@ -0,0 +1,38 @@
Avoid segfault upon early libvirtd failure.
* qemud/qemud.c (main): Don't call qemudCleanup on an
uninitialized pointer.
By the way, even though this evoked a warning from gcc,
"make distcheck" passes. Obviously, that means the distcheck
rule is inadequate. I'll fix it so that it turns on -Werror
for the final build.
Signed-off-by: Jim Meyering <meyering@redhat.com>
---
qemud/qemud.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/qemud/qemud.c b/qemud/qemud.c
index 96fdf32..b6b82ed 100644
--- a/qemud/qemud.c
+++ b/qemud/qemud.c
@@ -2025,7 +2025,7 @@ libvirt management daemon:\n\
#define MAX_LISTEN 5
int main(int argc, char **argv) {
- struct qemud_server *server;
+ struct qemud_server *server = NULL;
struct sigaction sig_action;
int sigpipe[2];
const char *pid_file = NULL;
@@ -2180,7 +2180,8 @@ int main(int argc, char **argv) {
unlink (pid_file);
error1:
- qemudCleanup(server);
+ if (server)
+ qemudCleanup(server);
return ret;
}

View File

@@ -0,0 +1,23 @@
Don't use first byte of string as a pointer.
* src/qemu_conf.c (qemudReportError): Use the pointer, errorMessage,
not its first byte, errorMessage[0].
Signed-off-by: Jim Meyering <meyering@redhat.com>
---
src/qemu_conf.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
index eead0bc..e54da5b 100644
--- a/src/qemu_conf.c
+++ b/src/qemu_conf.c
@@ -68,7 +68,7 @@ void qemudReportError(virConnectPtr conn,
errorMessage[0] = '\0';
}
- virerr = __virErrorMsg(code, (errorMessage[0] ? errorMessage[0] : NULL));
+ virerr = __virErrorMsg(code, (errorMessage[0] ? errorMessage : NULL));
__virRaiseError(conn, dom, net, VIR_FROM_QEMU, code, VIR_ERR_ERROR,
virerr, errorMessage, NULL, -1, -1, virerr, errorMessage);
}

View File

@@ -0,0 +1,63 @@
diff -rupN libvirt-0.4.1.orig/src/bridge.c libvirt-0.4.1.new/src/bridge.c
--- libvirt-0.4.1.orig/src/bridge.c 2008-02-28 06:16:21.000000000 -0500
+++ libvirt-0.4.1.new/src/bridge.c 2008-03-13 11:25:12.000000000 -0400
@@ -313,7 +313,6 @@ brDeleteInterface(brControl *ctl ATTRIBU
int
brAddTap(brControl *ctl,
const char *bridge,
- unsigned char *macaddr,
char *ifname,
int maxlen,
int *tapfd)
@@ -357,18 +356,6 @@ brAddTap(brControl *ctl,
}
if (ioctl(fd, TUNSETIFF, &try) == 0) {
- struct ifreq addr;
- memset(&addr, 0, sizeof(addr));
- memcpy(addr.ifr_hwaddr.sa_data, macaddr, 6);
- addr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
-
- /* Device actually starts in 'UP' state, but it
- * needs to be down to set the MAC addr
- */
- if ((errno = brSetInterfaceUp(ctl, try.ifr_name, 0)))
- goto error;
- if (ioctl(fd, SIOCSIFHWADDR, &addr) != 0)
- goto error;
if ((errno = brAddInterface(ctl, bridge, try.ifr_name)))
goto error;
if ((errno = brSetInterfaceUp(ctl, try.ifr_name, 1)))
diff -rupN libvirt-0.4.1.orig/src/bridge.h libvirt-0.4.1.new/src/bridge.h
--- libvirt-0.4.1.orig/src/bridge.h 2008-02-28 06:16:21.000000000 -0500
+++ libvirt-0.4.1.new/src/bridge.h 2008-03-13 11:25:12.000000000 -0400
@@ -62,7 +62,6 @@ int brDeleteInterface (brContr
int brAddTap (brControl *ctl,
const char *bridge,
- unsigned char *mac,
char *ifname,
int maxlen,
int *tapfd);
diff -rupN libvirt-0.4.1.orig/src/qemu_conf.c libvirt-0.4.1.new/src/qemu_conf.c
--- libvirt-0.4.1.orig/src/qemu_conf.c 2008-03-13 11:24:39.000000000 -0400
+++ libvirt-0.4.1.new/src/qemu_conf.c 2008-03-13 11:25:12.000000000 -0400
@@ -1540,7 +1540,6 @@ qemudNetworkIfaceConnect(virConnectPtr c
}
if ((err = brAddTap(driver->brctl, brname,
- net->mac,
ifname, BR_IFNAME_MAXLEN, &tapfd))) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
"Failed to add tap interface '%s' to bridge '%s' : %s",
@@ -1548,7 +1547,9 @@ qemudNetworkIfaceConnect(virConnectPtr c
goto error;
}
- snprintf(tapfdstr, sizeof(tapfdstr), "tap,fd=%d,script=,vlan=%d", tapfd, vlan);
+ snprintf(tapfdstr, sizeof(tapfdstr),
+ "tap,fd=%d,script=,vlan=%d,ifname=%s",
+ tapfd, vlan, ifname);
if (!(retval = strdup(tapfdstr)))
goto no_memory;

View File

@@ -0,0 +1,21 @@
commit 2bcf35336cd649e58c08d7cf3452a8d4353bcf85
Author: Daniel Veillard <veillard@redhat.com>
Date: Fri Mar 7 09:23:30 2008 +0000
* src/xend_internal.c: applied patch from Cole Robinson to not
loose the boot tag when defining a fully virtualized xen domain
Daniel
diff --git a/src/xend_internal.c b/src/xend_internal.c
index 8bbc28f..fef54f8 100644
--- a/src/xend_internal.c
+++ b/src/xend_internal.c
@@ -1323,7 +1323,7 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf
if (hvm)
virBufferVSprintf(buf, " <loader>%s</loader>\n", loader);
- if (kernel) {
+ if ((kernel) && ((!loader) || (STRNEQ(kernel, loader)))) {
virBufferVSprintf(buf, " <kernel>%s</kernel>\n", kernel);
if (initrd && initrd[0])
virBufferVSprintf(buf, " <initrd>%s</initrd>\n", initrd);

146
libvirt-iscsi-sysfs4.patch Normal file
View File

@@ -0,0 +1,146 @@
--- a/src/storage_backend_iscsi.c 4 Mar 2008 20:02:34 -0000 1.3
+++ b/src/storage_backend_iscsi.c 26 Mar 2008 22:07:05 -0000
@@ -170,20 +170,91 @@
virStorageBackendISCSIMakeLUN(virConnectPtr conn,
virStoragePoolObjPtr pool,
char **const groups,
- void *data ATTRIBUTE_UNUSED)
+ void *data)
{
virStorageVolDefPtr vol;
int fd = -1;
+ unsigned int target, channel, id, lun;
char lunid[100];
- char *dev = groups[4];
int opentries = 0;
char *devpath = NULL;
+ char *session = data;
+ char sysfs_path[PATH_MAX];
+ char *dev = NULL;
+ DIR *sysdir;
+ struct dirent *block_dirent;
+ struct stat sbuf;
+ int len;
+
+ if ((virStrToLong_ui(groups[0], NULL, 10, &target) < 0) ||
+ (virStrToLong_ui(groups[1], NULL, 10, &channel) < 0) ||
+ (virStrToLong_ui(groups[2], NULL, 10, &id) < 0) ||
+ (virStrToLong_ui(groups[3], NULL, 10, &lun) < 0)) {
+ virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Failed parsing iscsiadm commands"));
+ return -1;
+ }
+
+ if (lun == 0) {
+ /* the 0'th LUN isn't a real LUN, it's just a control LUN; skip it */
+ return 0;
+ }
+
+ snprintf(sysfs_path, PATH_MAX,
+ "/sys/class/iscsi_session/session%s/device/"
+ "target%d:%d:%d/%d:%d:%d:%d/block",
+ session, target, channel, id, target, channel, id, lun);
+
+ if (stat(sysfs_path, &sbuf) < 0) {
+ /* block path in subdir didn't exist; this is unexpected, so fail */
+ virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Failed to find the sysfs path for %d:%d:%d:%d: %s"),
+ target, channel, id, lun, strerror(errno));
+ return -1;
+ }
+
+ sysdir = opendir(sysfs_path);
+ if (sysdir == NULL) {
+ /* we failed for some reason; return an error */
+ virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Failed to opendir sysfs path %s: %s"),
+ sysfs_path, strerror(errno));
+ return -1;
+ }
+
+ while ((block_dirent = readdir(sysdir)) != NULL) {
+ len = strlen(block_dirent->d_name);
+ if ((len == 1 && block_dirent->d_name[0] == '.') ||
+ (len == 2 && block_dirent->d_name[0] == '.' && block_dirent->d_name[1] == '.')) {
+ /* the . and .. directories; just skip them */
+ continue;
+ }
+
+ /* OK, not . or ..; let's see if it is a SCSI device */
+ if (len > 2 &&
+ block_dirent->d_name[0] == 's' &&
+ block_dirent->d_name[1] == 'd') {
+ /* looks like a scsi device, smells like scsi device; it must be
+ a scsi device */
+ dev = strdup(block_dirent->d_name);
+ break;
+ }
+ }
+ closedir(sysdir);
+
+ if (dev == NULL) {
+ /* we didn't find the sd? device we were looking for; fail */
+ virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Failed to find SCSI device for %d:%d:%d:%d: %s"),
+ target, channel, id, lun, strerror(errno));
+ return -1;
+ }
snprintf(lunid, sizeof(lunid)-1, "lun-%s", groups[3]);
if ((vol = calloc(1, sizeof(virStorageVolDef))) == NULL) {
virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
- return -1;
+ goto cleanup;
}
if ((vol->name = strdup(lunid)) == NULL) {
@@ -197,6 +268,8 @@
}
strcpy(devpath, "/dev/");
strcat(devpath, dev);
+ free(dev);
+ dev = NULL;
/* It can take a little while between logging into the ISCSI
* server and udev creating the /dev nodes, so if we get ENOENT
* we must retry a few times - they should eventually appear.
@@ -258,6 +331,7 @@
if (fd != -1) close(fd);
free(devpath);
virStorageVolDefFree(vol);
+ free(dev);
return -1;
}
@@ -281,14 +355,13 @@
* scsi1 Channel 00 Id 0 Lun: 5
* Attached scsi disk sdg State: running
*
- * Need 2 regex to match alternating lines
+ * Need a regex to match the Channel:Id:Lun lines
*/
const char *regexes[] = {
- "^\\s*scsi(\\S+)\\s+Channel\\s+(\\S+)\\s+Id\\s+(\\S+)\\s+Lun:\\s+(\\S+)\\s*$",
- "^\\s*Attached\\s+scsi\\s+disk\\s+(\\S+)\\s+State:\\s+running\\s*$"
+ "^\\s*scsi(\\S+)\\s+Channel\\s+(\\S+)\\s+Id\\s+(\\S+)\\s+Lun:\\s+(\\S+)\\s*$"
};
int vars[] = {
- 4, 1
+ 4
};
const char *prog[] = {
ISCSIADM, "--mode", "session", "-r", session, "-P", "3", NULL,
@@ -296,11 +369,11 @@
return virStorageBackendRunProgRegex(conn, pool,
prog,
- 2,
+ 1,
regexes,
vars,
virStorageBackendISCSIMakeLUN,
- NULL);
+ (void *)session);
}

View File

@@ -0,0 +1,17 @@
--- /home/boston/clalance/devel/libvirt--devel/src/storage_backend_iscsi.c 2008-02-13 13:48:32.497466000 -0500
+++ libvirt-0.4.0/src/storage_backend_iscsi.c 2008-02-11 17:19:35.000000000 -0500
@@ -143,6 +143,14 @@ static int virStorageBackendISCSIConnect
"--targetname", pool->def->source.devices[0].path, action, NULL
};
+ const char *cmdsendtarget[] = {
+ ISCSIADM, "--mode", "discovery", "--type", "sendtargets",
+ "--portal", portal, NULL
+ };
+
+ if (virRun(conn, (char **)cmdsendtarget, NULL) < 0)
+ return -1;
+
if (virRun(conn, (char **)cmdargv, NULL) < 0)
return -1;

View File

@@ -1,24 +1,38 @@
# -*- rpm-spec -*-
# This macro is used for the continuous automated builds. It just
# allows an extra fragment based on the timestamp to be appended
# to the release. This distinguishes automated builds, from formal
# Fedora RPM builds
%define _extra_release %{?dist:%{dist}}%{!?dist:%{?extra_release:%{extra_release}}}
%if "%{fedora}" >= "8"
%define with_polkit 1
%define with_proxy no
%else
%define with_polkit 0
%define with_proxy yes
%endif
%if "%{fedora}"
%ifarch ppc64
%define with_qemu 0
%else
%define with_qemu 1
%endif
%else
%define with_qemu 0
%endif
Summary: Library providing a simple API virtualization
Name: libvirt
Version: 0.2.2
Release: 4%{?_extra_release}
Version: 0.4.1
Release: 5%{?dist}%{?extra_release}
License: LGPL
Group: Development/Libraries
Source: libvirt-%{version}.tar.gz
Patch1: libvirt-0.2.2-disable-xm.patch
Patch2: libvirt-0.2.2-dnsmasq-order.patch
Patch3: libvirt-0.2.2-qemu-noreboot.patch
Patch4: libvirt-0.2.2-sync-daemon-restart.patch
Patch5: libvirt-0.2.2-graphics-hvm.patch
Patch6: libvirt-0.2.2-bridge-init.patch
Patch0: libvirt-0.4.1-qemud1.patch
Patch1: libvirt-0.4.1-qemud2.patch
Patch2: %{name}-%{version}-daemon-startup.patch
Patch3: %{name}-%{version}-qemu-media-change.patch
Patch4: %{name}-%{version}-xen-boot-device.patch
Patch5: %{name}-%{version}-tap-ifname.patch
Patch6: libvirt-storage-api-iscsi-sendtarget.patch
Patch7: libvirt-iscsi-sysfs4.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root
URL: http://libvirt.org/
BuildRequires: python python-devel
@@ -26,18 +40,80 @@ Requires: libxml2
Requires: readline
Requires: ncurses
Requires: dnsmasq
Requires: bridge-utils
Requires: iptables
# So remote clients can access libvirt over SSH tunnel
# (client invokes 'nc' against the UNIX socket on the server)
Requires: nc
Requires: cyrus-sasl
# Not technically required, but makes 'out-of-box' config
# work correctly & doesn't have onerous dependencies
Requires: cyrus-sasl-md5
%if %{with_polkit}
Requires: PolicyKit >= 0.6
%endif
# For mount/umount in FS driver
BuildRequires: util-linux
# PPC64 has no Xen nor QEmu, try to build anyway
%ifnarch ppc64
%if %{with_qemu}
# From QEMU RPMs
Requires: /usr/bin/qemu-img
%else
# From Xen RPMs
Requires: /usr/sbin/qcow-create
%endif
%endif
# For LVM drivers
Requires: lvm2
# For ISCSI driver
Requires: iscsi-initiator-utils
# For disk driver
Requires: parted
%ifarch i386 x86_64 ia64
BuildRequires: xen-devel
%endif
BuildRequires: libxml2-devel
BuildRequires: readline-devel
BuildRequires: ncurses-devel
BuildRequires: gettext
BuildRequires: libsysfs-devel
BuildRequires: /sbin/iptables
BuildRequires: gnutls-devel
BuildRequires: avahi-devel
BuildRequires: libselinux-devel
BuildRequires: dnsmasq
BuildRequires: bridge-utils
%if %{with_qemu}
BuildRequires: qemu
%endif
BuildRequires: cyrus-sasl-devel
%if %{with_polkit}
BuildRequires: PolicyKit-devel >= 0.6
%endif
# For mount/umount in FS driver
BuildRequires: util-linux
# PPC64 has no Xen nor QEmu, try to build anyway
%ifnarch ppc64
%if %{with_qemu}
# From QEMU RPMs
BuildRequires: /usr/bin/qemu-img
%else
# From Xen RPMs
BuildRequires: /usr/sbin/qcow-create
%endif
%endif
# For LVM drivers
BuildRequires: lvm2
# For ISCSI driver
BuildRequires: iscsi-initiator-utils
# For disk driver
BuildRequires: parted-devel
Obsoletes: libvir
ExclusiveArch: i386 x86_64 ia64
# Fedora build root suckage
BuildRequires: gawk
%description
Libvirt is a C toolkit to interract with the virtualization capabilities
Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes).
%package devel
@@ -45,6 +121,9 @@ Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries
Requires: libvirt = %{version}
Requires: pkgconfig
%ifarch i386 x86_64 ia64
Requires: xen-devel
%endif
Obsoletes: libvir-devel
%description devel
@@ -60,32 +139,57 @@ Obsoletes: libvir-python
%description python
The libvirt-python package contains a module that permits applications
written in the Python programming language to use the interface
supplied by the libvirt library to use the the virtualization capabilities
supplied by the libvirt library to use the virtualization capabilities
of recent versions of Linux (and other OSes).
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%build
%configure --with-init-script=redhat --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid
# Xen is available only on i386 x86_64 ia64
%ifarch i386 i686 x86_64 ia64
%configure --with-init-script=redhat \
--with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \
--with-remote-file=%{_localstatedir}/run/libvirtd.pid \
--with-xen-proxy=%{with_proxy}
%else
%ifnarch ppc64
%configure --without-xen \
--with-init-script=redhat \
--with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \
--with-remote-file=%{_localstatedir}/run/libvirtd.pid
%else
%configure --without-xen \
--without-qemu \
--with-init-script=redhat \
--with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \
--with-remote-file=%{_localstatedir}/run/libvirtd.pid
%endif
%endif
make
%install
rm -fr %{buildroot}
%makeinstall
(cd docs/examples ; make clean ; rm -rf .deps)
(cd docs/examples ; make clean ; rm -rf .deps Makefile Makefile.in)
(cd docs/examples/python ; rm -f Makefile Makefile.in)
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
install -d -m 0755 $RPM_BUILD_ROOT%{_localstatedir}/run/libvirt/
# Default dir for disk images defined in SELinux policy
install -d -m 0755 $RPM_BUILD_ROOT%{_localstatedir}/lib/libvirt/images/
# We don't want to install /etc/libvirt/qemu/networks in the main %files list
# because if the admin wants to delete the default network completely, we don't
@@ -141,18 +245,27 @@ fi
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart
%{_sysconfdir}/rc.d/init.d/libvirtd
%dir %{_sysconfdir}/libvirt
%dir %{_sysconfdir}/libvirt/qemu
%dir %{_sysconfdir}/libvirt/qemu/networks
%dir %{_sysconfdir}/libvirt/qemu/networks/autostart
%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%dir %{_datadir}/libvirt/
%dir %{_datadir}/libvirt/networks/
%{_datadir}/libvirt/networks/default.xml
%dir %{_localstatedir}/run/libvirt/
%dir %{_localstatedir}/lib/libvirt/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/images/
%if %{with_polkit}
%{_datadir}/PolicyKit/policy/libvirtd.policy
%endif
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
%if %{with_proxy} == "yes"
%attr(4755, root, root) %{_libexecdir}/libvirt_proxy
%attr(0755, root, root) %{_sbindir}/libvirt_qemud
%doc docs/libvirt.rng
%endif
%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
%attr(0755, root, root) %{_sbindir}/libvirtd
%doc docs/*.rng
%doc docs/*.xml
%files devel
%defattr(-, root, root)
@@ -182,21 +295,102 @@ fi
%doc docs/examples/python
%changelog
* Mon May 14 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-4.fc7
- Fixed uninitialized value causing stack overflow
- Fixed bridged networking when no virtual network is defined (bz 239273)
* Thu Mar 27 2008 Chris Lalancette <clalance@redhat.com> - 0.4.1-5.fc9
- Do iscsiadm sendtarget before trying to do login
- Do sysfs scanning for iSCSI LUNs instead of trying to parse them from
iscsiadm session output
* Thu May 3 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-3.fc7
- Fixed init script restart race
- Remove duplicate <graphics> tag for HVM
- Support -no-reboot in qemu for installs
- Disable xm config file driver for 3.0.5
- Force dnsmasq ordering for resolv.conf
* Thu Mar 13 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.1-4.fc9
- Fix QEMU tap device setup
- Fix Xen boot device XML processing
- Fixed QEMU cdrom media change
* Fri Apr 21 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-2.fc7
- Added Requires on dnsmasq for virtual networking
* Mon Mar 10 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.1-3.fc9
- Fixed daemon startup when run with --daemon flag
* Tue Apr 17 2007 Daniel Veillard <veillard@redhat.com> - 0.2.2-1.fc7
* Mon Mar 3 2008 Daniel Veillard <veillard@redhat.com> - 0.4.1-2.fc9
- 2 patches found just after the release
* Mon Mar 3 2008 Daniel Veillard <veillard@redhat.com> - 0.4.1-1.fc9
- Release of 0.4.1
- Storage APIs
- xenner support
- lots of assorted improvements, bugfixes and cleanups
- documentation and localization improvements
* Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 0.4.0-5
- Autorebuild for GCC 4.3
* Fri Jan 18 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.0-4.fc9
- Fix SSH tunnelling (rhbz #428743)
- Fix back-compat for nodeinfo call changes.
* Sun Jan 13 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.0-3.fc9
- Fix crash when no auth callback
* Wed Jan 2 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.0-2.fc9
- Fix reading large config files (rhbz #426425)
- Fix crash when connecting to a PolicyKit enabled server with not auth callback (rhbz #427107)
* Tue Dec 18 2007 Daniel Veillard <veillard@redhat.com> - 0.4.0-1.fc8
- Release of 0.4.0
- SASL based authentication
- PolicyKit authentication
- improved NUMA and statistics support
- lots of assorted improvements, bugfixes and cleanups
- documentation and localization improvements
* Mon Oct 15 2007 Daniel P. Berrange <berrange@redhat.com> - 0.3.3-2.fc8
- Added QEMU driver config file support
- Added example config files
* Sun Sep 30 2007 Daniel Veillard <veillard@redhat.com> - 0.3.3-1
- Release of 0.3.3
- Avahi support
- NUMA support
- lots of assorted improvements, bugfixes and cleanups
- documentation and localization improvements
* Fri Aug 24 2007 Daniel Veillard <veillard@redhat.com> - 0.3.2-2.fc8
- also build on arches where Xen is not available
* Tue Aug 21 2007 Daniel Veillard <veillard@redhat.com> - 0.3.2-1.fc8
- Release of 0.3.2
- API for domains migration
- APIs for collecting statistics on disks and interfaces
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Thu Aug 16 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-4.fc8
- Fixes missing Requires for libvirt-devel
* Thu Jul 26 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-3.fc8
- adds fix for bug #249594
* Wed Jul 25 2007 Jesse Keating <jkeating@redhat.com> - 0.3.1-2
- Rebuild for RH #249435
* Tue Jul 24 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-1.fc8
- Release of 0.3.1
- localtime clock support
- PS/2 and USB input devices
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Mon Jul 9 2007 Daniel Veillard <veillard@redhat.com> - 0.3.0-1.fc8
- Release of 0.3.0
- Secure remote access support
- unification of daemons
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Fri Jun 8 2007 Daniel Veillard <veillard@redhat.com> - 0.2.3-1.fc8
- Release of 0.2.3
- lot of assorted bugfixes and cleanups
- support for Xen-3.1
- new scheduler API
* Tue Apr 17 2007 Daniel Veillard <veillard@redhat.com> - 0.2.2-1
- Release of 0.2.2
- lot of assorted bugfixes and cleanups
- preparing for Xen-3.0.5
@@ -206,7 +400,7 @@ fi
- fix scriptlet error (need to own more directories)
- update description text
* Fri Mar 16 2007 Daniel Veillard <veillard@redhat.com> - 0.2.1-1.fc7
* Fri Mar 16 2007 Daniel Veillard <veillard@redhat.com> - 0.2.1-1
- Release of 0.2.1
- lot of bug and portability fixes
- Add support for network autostart and init scripts

View File

@@ -1 +1 @@
5abe4b1fd6b57948ce259036afdc9194 libvirt-0.2.2.tar.gz
4dfe45869f082393cfd09f4690454c12 libvirt-0.4.1.tar.gz