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 9062564d79cb45029403cc998b48410e42ead924 Mon Sep 17 00:00:00 2001
|
|
From: Kevin Wolf <kwolf@suse.de>
|
|
Date: Tue, 10 Mar 2009 16:45:44 +0100
|
|
Subject: [PATCH 6/6] tapdisk-ioemu: Fix shutdown condition
|
|
|
|
Even when opening the only image a tapdisk-ioemu instance is
|
|
responsible for fails, it can't immediately shut down. blktapctrl
|
|
still wants to communicate with tapdisk-ioemu and close the disk.
|
|
|
|
This patch changes tapdisk-ioemu to count the connections to
|
|
blktapctrl rather than the number of opened disk images.
|
|
|
|
Signed-off-by: Kevin Wolf <kwolf@suse.de>
|
|
---
|
|
hw/xen_blktap.c | 5 ++++-
|
|
tapdisk-ioemu.c | 13 ++++++++++---
|
|
2 files changed, 14 insertions(+), 4 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
|
|
@@ -65,6 +65,7 @@ int read_fd;
|
|
int write_fd;
|
|
|
|
static pid_t process;
|
|
+int connected_disks = 0;
|
|
fd_list_entry_t *fd_start = NULL;
|
|
|
|
static void handle_blktap_iomsg(void* private);
|
|
@@ -541,6 +542,7 @@ static void handle_blktap_ctrlmsg(void*
|
|
|
|
/* Allocate the disk structs */
|
|
s = state_init();
|
|
+ connected_disks++;
|
|
|
|
/*Open file*/
|
|
if (s == NULL || open_disk(s, path, msg->drivertype, msg->readonly)) {
|
|
@@ -591,7 +593,8 @@ static void handle_blktap_ctrlmsg(void*
|
|
case CTLMSG_CLOSE:
|
|
s = get_state(msg->cookie);
|
|
if (s) unmap_disk(s);
|
|
- break;
|
|
+ connected_disks--;
|
|
+ break;
|
|
|
|
case CTLMSG_PID:
|
|
memset(buf, 0x00, MSG_SIZE);
|
|
Index: xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/tapdisk-ioemu.c
|
|
===================================================================
|
|
--- xen-4.2.0-testing.orig/tools/qemu-xen-traditional-dir-remote/tapdisk-ioemu.c
|
|
+++ xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/tapdisk-ioemu.c
|
|
@@ -14,6 +14,7 @@ extern void qemu_aio_init(void);
|
|
extern void qemu_aio_poll(void);
|
|
|
|
extern void *fd_start;
|
|
+extern int connected_disks;
|
|
|
|
int domid = 0;
|
|
FILE* logfile;
|
|
@@ -76,7 +77,7 @@ int main(void)
|
|
int max_fd;
|
|
fd_set rfds;
|
|
struct timeval tv;
|
|
- void *old_fd_start = NULL;
|
|
+ int old_connected_disks = 0;
|
|
|
|
/* Daemonize */
|
|
if (fork() != 0)
|
|
@@ -128,11 +129,17 @@ int main(void)
|
|
pioh = &ioh->next;
|
|
}
|
|
|
|
+ if (old_connected_disks != connected_disks)
|
|
+ fprintf(stderr, "connected disks: %d => %d\n",
|
|
+ old_connected_disks, connected_disks);
|
|
+
|
|
/* Exit when the last image has been closed */
|
|
- if (old_fd_start != NULL && fd_start == NULL)
|
|
+ if (old_connected_disks != 0 && connected_disks == 0) {
|
|
+ fprintf(stderr, "Last image is closed, exiting.\n");
|
|
exit(0);
|
|
+ }
|
|
|
|
- old_fd_start = fd_start;
|
|
+ old_connected_disks = connected_disks;
|
|
}
|
|
return 0;
|
|
}
|