Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h =================================================================== --- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h +++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h @@ -1,6 +1,8 @@ #ifndef QEMU_XEN_H #define QEMU_XEN_H +#include "hw/boards.h" + /* vl.c */ extern int restore; extern int vga_ram_size; @@ -75,7 +77,7 @@ void handle_buffered_pio(void); /* xenstore.c */ void xenstore_init(void); uint32_t xenstore_read_target(void); -void xenstore_parse_domain_config(int domid); +void xenstore_parse_domain_config(int domid, QEMUMachine *machine); int xenstore_parse_disable_pf_config(void); int xenstore_fd(void); void xenstore_process_event(void *opaque); Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c =================================================================== --- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vl.c +++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c @@ -5830,9 +5830,9 @@ int main(int argc, char **argv, char **e if ((msg = xenbus_read(XBT_NIL, "domid", &domid_s))) fprintf(stderr,"Can not read our own domid: %s\n", msg); else - xenstore_parse_domain_config(atoi(domid_s)); + xenstore_parse_domain_config(atoi(domid_s), machine); #else - xenstore_parse_domain_config(domid); + xenstore_parse_domain_config(domid, machine); #endif /* CONFIG_STUBDOM */ } Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c =================================================================== --- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c +++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c @@ -447,7 +447,7 @@ void xenstore_init(void) } } -void xenstore_parse_domain_config(int hvm_domid) +void xenstore_parse_domain_config(int hvm_domid, QEMUMachine *machine) { char **e_danger = NULL; char *buf = NULL; @@ -760,15 +760,19 @@ void xenstore_parse_domain_config(int hv #endif - drives_table[nb_drives].bdrv = bs; - drives_table[nb_drives].used = 1; + if (machine == &xenfv_machine) { + drives_table[nb_drives].bdrv = bs; + drives_table[nb_drives].used = 1; #ifdef CONFIG_STUBDOM - media_filename[nb_drives] = strdup(danger_buf); + media_filename[nb_drives] = strdup(danger_buf); #else - media_filename[nb_drives] = strdup(bs->filename); + media_filename[nb_drives] = strdup(bs->filename); #endif - nb_drives++; - + nb_drives++; + } else { + qemu_aio_flush(); + bdrv_close(bs); + } } #ifdef CONFIG_STUBDOM