80e28a00ec
- unmodified_drivers: handle IRQF_SAMPLE_RANDOM, it was removed in 3.6-rc1 - bnc#778105 - first XEN-PV VM fails to spawn xend: Increase wait time for disk to appear in host bootloader Modified existing xen-domUloader.diff - Disable the snapshot patches. Snapshot only supported the qcow2 image format which was poorly implemented qemu 0.10.2. Snapshot support may be restored in the future when the newer upstream qemu is used by Xen. - bnc#776995 - attaching scsi control luns with pvscsi - xend/pvscsi: fix passing of SCSI control LUNs xen-bug776995-pvscsi-no-devname.patch - xend/pvscsi: fix usage of persistant device names for SCSI devices xen-bug776995-pvscsi-persistent-names.patch - xend/pvscsi: update sysfs parser for Linux 3.0 xen-bug776995-pvscsi-sysfs-parser.patch - Update to Xen 4.2.0 RC3+ c/s 25779 - Update to Xen 4.2.0 RC2+ c/s 25765 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=199
90 lines
2.9 KiB
Diff
90 lines
2.9 KiB
Diff
From 5ac882a6d7499e4a36103db071203bf4d1ddfe1f Mon Sep 17 00:00:00 2001
|
|
From: Kevin Wolf <kwolf@suse.de>
|
|
Date: Tue, 10 Mar 2009 16:26:45 +0100
|
|
Subject: [PATCH 2/6] ioemu: Use the image format sent by blktapctrl
|
|
|
|
Currently the blktap backend in ioemu lets qemu guess which format an
|
|
image is in. This was a security problem and the blktap backend
|
|
doesn't work any more since this was fixed in qemu.
|
|
|
|
This patch changes ioemu to respect the format it gets from blktapctrl.
|
|
|
|
Signed-off-by: Kevin Wolf <kwolf@suse.de>
|
|
---
|
|
hw/xen_blktap.c | 22 +++++++++++++++++++---
|
|
hw/xen_blktap.h | 14 ++++++++++++++
|
|
2 files changed, 33 insertions(+), 3 deletions(-)
|
|
|
|
Index: xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
|
|
===================================================================
|
|
--- xen-4.2.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
|
|
+++ xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
|
|
@@ -218,9 +218,10 @@ static int map_new_dev(struct td_state *
|
|
return -1;
|
|
}
|
|
|
|
-static int open_disk(struct td_state *s, char *path, int readonly)
|
|
+static int open_disk(struct td_state *s, char *path, int driver, int readonly)
|
|
{
|
|
BlockDriverState* bs;
|
|
+ BlockDriver* drv;
|
|
char* devname;
|
|
static int devnumber = 0;
|
|
int i;
|
|
@@ -230,7 +231,22 @@ static int open_disk(struct td_state *s,
|
|
bs = bdrv_new(devname);
|
|
free(devname);
|
|
|
|
- if (bdrv_open(bs, path, 0) != 0) {
|
|
+ /* Search for disk driver */
|
|
+ for (i = 0; blktap_drivers[i].idnum >= 0; i++) {
|
|
+ if (blktap_drivers[i].idnum == driver)
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (blktap_drivers[i].idnum < 0) {
|
|
+ fprintf(stderr, "Could not find image format id %d\n", driver);
|
|
+ return -ENOMEM;
|
|
+ }
|
|
+
|
|
+ drv = blktap_drivers[i].drv;
|
|
+ DPRINTF("%s driver specified\n", drv ? drv->format_name : "No");
|
|
+
|
|
+ /* Open the image */
|
|
+ if (bdrv_open2(bs, path, 0, drv) != 0) {
|
|
fprintf(stderr, "Could not open image file %s\n", path);
|
|
return -ENOMEM;
|
|
}
|
|
@@ -521,7 +537,7 @@ static void handle_blktap_ctrlmsg(void*
|
|
s = state_init();
|
|
|
|
/*Open file*/
|
|
- if (s == NULL || open_disk(s, path, msg->readonly)) {
|
|
+ if (s == NULL || open_disk(s, path, msg->drivertype, msg->readonly)) {
|
|
msglen = sizeof(msg_hdr_t);
|
|
msg->type = CTLMSG_IMG_FAIL;
|
|
msg->len = msglen;
|
|
Index: xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.h
|
|
===================================================================
|
|
--- xen-4.2.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.h
|
|
+++ xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.h
|
|
@@ -52,4 +52,18 @@ typedef struct fd_list_entry {
|
|
|
|
int init_blktap(void);
|
|
|
|
+typedef struct disk_info {
|
|
+ int idnum;
|
|
+ struct BlockDriver *drv;
|
|
+} disk_info_t;
|
|
+
|
|
+static disk_info_t blktap_drivers[] = {
|
|
+ { DISK_TYPE_AIO, &bdrv_raw },
|
|
+ { DISK_TYPE_SYNC, &bdrv_raw },
|
|
+ { DISK_TYPE_VMDK, &bdrv_vmdk },
|
|
+ { DISK_TYPE_QCOW, &bdrv_qcow },
|
|
+ { DISK_TYPE_QCOW2, &bdrv_qcow2 },
|
|
+ { -1, NULL }
|
|
+};
|
|
+
|
|
#endif /*XEN_BLKTAP_H_*/
|