Compare commits
4 Commits
libvirt-0_
...
F-9-split
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
481419ebb6 | ||
|
|
1e65165c3a | ||
|
|
bca27d9111 | ||
|
|
08b9144b41 |
@@ -3,3 +3,4 @@
|
|||||||
i686
|
i686
|
||||||
x86_64
|
x86_64
|
||||||
libvirt-*.tar.gz
|
libvirt-*.tar.gz
|
||||||
|
libvirt-0.4.2.tar.gz
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
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:
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
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;
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
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);
|
|
||||||
34
libvirt.spec
34
libvirt.spec
@@ -20,17 +20,11 @@
|
|||||||
|
|
||||||
Summary: Library providing a simple API virtualization
|
Summary: Library providing a simple API virtualization
|
||||||
Name: libvirt
|
Name: libvirt
|
||||||
Version: 0.4.1
|
Version: 0.4.2
|
||||||
Release: 4%{?dist}%{?extra_release}
|
Release: 1%{?dist}%{?extra_release}
|
||||||
License: LGPL
|
License: LGPL
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
Source: libvirt-%{version}.tar.gz
|
Source: libvirt-%{version}.tar.gz
|
||||||
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
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
||||||
URL: http://libvirt.org/
|
URL: http://libvirt.org/
|
||||||
BuildRequires: python python-devel
|
BuildRequires: python python-devel
|
||||||
@@ -142,12 +136,6 @@ of recent versions of Linux (and other OSes).
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# Xen is available only on i386 x86_64 ia64
|
# Xen is available only on i386 x86_64 ia64
|
||||||
@@ -291,6 +279,24 @@ fi
|
|||||||
%doc docs/examples/python
|
%doc docs/examples/python
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 8 2008 Daniel Veillard ,veillard@redhat.com> 0.4.2-1.fc9
|
||||||
|
- upstream release 0.4.2
|
||||||
|
- many bug fixes
|
||||||
|
- localization updates
|
||||||
|
|
||||||
|
* Thu Apr 4 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.1-7.fc9
|
||||||
|
- Don't run polkit-auth as root
|
||||||
|
- Don't request polkit auth if client is root
|
||||||
|
|
||||||
|
* Fri Mar 28 2008 Chris Lalancette <clalance@redhat.com> - 0.4.1-6.fc9
|
||||||
|
- When dumping XML for a storage pool, make the <source> directory tag
|
||||||
|
match the <dir> tag used for specifying the pool in the first place
|
||||||
|
|
||||||
|
* 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 Mar 13 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.1-4.fc9
|
* Thu Mar 13 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.1-4.fc9
|
||||||
- Fix QEMU tap device setup
|
- Fix QEMU tap device setup
|
||||||
- Fix Xen boot device XML processing
|
- Fix Xen boot device XML processing
|
||||||
|
|||||||
Reference in New Issue
Block a user