Revision 08fd2f30bd3ee5d04596da8293689af4d4f7eb6c authored by Kevin Wolf on 03 December 2009, 09:28:44 UTC, committed by Aurelien Jarno on 03 December 2009, 10:29:25 UTC
When the synchronous read and write functions were dropped, they were replaced
by generic emulation functions. Unfortunately, these emulation functions don't
provide the same semantics as the original functions did.

The original bdrv_read would mean that we read some data synchronously and that
we won't be interrupted during this read. The latter assumption is no longer
true with the emulation function which needs to use qemu_aio_poll and therefore
allows the callback of any other concurrent AIO request to be run during the
read. Which in turn means that (meta)data read earlier could have changed and
be invalid now. qcow2 is not prepared to work in this way and it's just scary
how many places there are where other requests could run.

I'm not sure yet where exactly it breaks, but you'll see breakage with virtio
on qcow2 with a backing file. Providing synchronous functions again fixes the
problem for me.

Patchworks-ID: 35437
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit ef845c3bf421290153154635dc18eaa677cecb43)

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
1 parent 35bfc73
History
File Mode Size
audio
block
bsd-user
darwin-user
fpu
gdb-xml
hw
linux-user
pc-bios
slirp
target-alpha
target-arm
target-cris
target-i386
target-m68k
target-microblaze
target-mips
target-ppc
target-sh4
target-sparc
tcg
tests
.gitignore -rw-r--r-- 453 bytes
CODING_STYLE -rw-r--r-- 2.7 KB
COPYING -rw-r--r-- 17.6 KB
COPYING.LIB -rw-r--r-- 25.8 KB
Changelog -rw-r--r-- 25.7 KB
LICENSE -rw-r--r-- 637 bytes
MAINTAINERS -rw-r--r-- 2.3 KB
Makefile -rw-r--r-- 11.9 KB
Makefile.hw -rw-r--r-- 747 bytes
Makefile.target -rw-r--r-- 16.7 KB
README -rw-r--r-- 59 bytes
TODO -rw-r--r-- 1.1 KB
VERSION -rw-r--r-- 7 bytes
a.out.h -rw-r--r-- 13.6 KB
acl.c -rw-r--r-- 4.4 KB
acl.h -rw-r--r-- 2.1 KB
aes.c -rw-r--r-- 59.7 KB
aes.h -rw-r--r-- 717 bytes
aio.c -rw-r--r-- 5.0 KB
alpha-dis.c -rw-r--r-- 80.4 KB
alpha.ld -rw-r--r-- 4.0 KB
arm-dis.c -rw-r--r-- 156.7 KB
arm-semi.c -rw-r--r-- 14.1 KB
arm.ld -rw-r--r-- 4.8 KB
balloon.h -rw-r--r-- 537 bytes
block.c -rw-r--r-- 43.1 KB
block.h -rw-r--r-- 7.1 KB
block_int.h -rw-r--r-- 6.9 KB
bswap.h -rw-r--r-- 4.7 KB
bt-host.c -rw-r--r-- 5.4 KB
bt-host.h -rw-r--r-- 123 bytes
bt-vhci.c -rw-r--r-- 4.5 KB
buffered_file.c -rw-r--r-- 6.0 KB
buffered_file.h -rw-r--r-- 916 bytes
cache-utils.c -rw-r--r-- 1.6 KB
cache-utils.h -rw-r--r-- 1.1 KB
cmd.c -rw-r--r-- 10.9 KB
cmd.h -rw-r--r-- 2.2 KB
cocoa.m -rw-r--r-- 36.4 KB
configure -rwxr-xr-x 54.8 KB
console.c -rw-r--r-- 44.4 KB
console.h -rw-r--r-- 9.9 KB
cpu-all.h -rw-r--r-- 25.8 KB
cpu-common.h -rw-r--r-- 3.6 KB
cpu-defs.h -rw-r--r-- 8.5 KB
cpu-exec.c -rw-r--r-- 55.0 KB
create_config -rwxr-xr-x 1.2 KB
cris-dis.c -rw-r--r-- 80.3 KB
curses.c -rw-r--r-- 9.8 KB
curses_keys.h -rw-r--r-- 12.4 KB
cutils.c -rw-r--r-- 4.5 KB
d3des.c -rw-r--r-- 15.0 KB
d3des.h -rw-r--r-- 1.6 KB
def-helper.h -rw-r--r-- 6.6 KB
device_tree.c -rw-r--r-- 2.6 KB
device_tree.h -rw-r--r-- 942 bytes
dis-asm.h -rw-r--r-- 18.5 KB
disas.c -rw-r--r-- 10.9 KB
disas.h -rw-r--r-- 1.1 KB
dma-helpers.c -rw-r--r-- 4.7 KB
dma.h -rw-r--r-- 1.1 KB
dyngen-exec.h -rw-r--r-- 3.5 KB
elf.h -rw-r--r-- 42.9 KB
elf_ops.h -rw-r--r-- 7.9 KB
exec-all.h -rw-r--r-- 13.1 KB
exec.c -rw-r--r-- 111.3 KB
feature_to_c.sh -rw-r--r-- 2.1 KB
gdbstub.c -rw-r--r-- 63.4 KB
gdbstub.h -rw-r--r-- 1.1 KB
gen-icount.h -rw-r--r-- 1.5 KB
host-utils.c -rw-r--r-- 2.8 KB
host-utils.h -rw-r--r-- 5.5 KB
hostregs_helper.h -rw-r--r-- 1.8 KB
hpet.h -rw-r--r-- 618 bytes
hppa-dis.c -rw-r--r-- 100.1 KB
hppa.ld -rw-r--r-- 8.1 KB
hxtool -rw-r--r-- 720 bytes
i386-dis.c -rw-r--r-- 159.1 KB
i386.ld -rw-r--r-- 4.6 KB
ia64.ld -rw-r--r-- 8.4 KB
ioport-user.c -rw-r--r-- 1.7 KB
ioport.c -rw-r--r-- 7.4 KB
ioport.h -rw-r--r-- 2.1 KB
keymaps.c -rw-r--r-- 5.3 KB
keymaps.h -rw-r--r-- 2.0 KB
kqemu.c -rw-r--r-- 27.8 KB
kqemu.h -rw-r--r-- 5.2 KB
kvm-all.c -rw-r--r-- 25.8 KB
kvm.h -rw-r--r-- 3.7 KB
libfdt_env.h -rw-r--r-- 1.1 KB
loader.c -rw-r--r-- 13.4 KB
m68k-dis.c -rw-r--r-- 211.6 KB
m68k-semi.c -rw-r--r-- 12.2 KB
m68k.ld -rw-r--r-- 5.9 KB
microblaze-dis.c -rw-r--r-- 39.8 KB
migration-exec.c -rw-r--r-- 3.1 KB
migration-tcp.c -rw-r--r-- 4.7 KB
migration.c -rw-r--r-- 7.8 KB
migration.h -rw-r--r-- 2.5 KB
mips-dis.c -rw-r--r-- 204.7 KB
mips.ld -rw-r--r-- 8.5 KB
mipsel.ld -rw-r--r-- 8.5 KB
module.c -rw-r--r-- 1.3 KB
module.h -rw-r--r-- 1.1 KB
monitor.c -rw-r--r-- 87.2 KB
monitor.h -rw-r--r-- 901 bytes
nbd.c -rw-r--r-- 13.9 KB
nbd.h -rw-r--r-- 1.8 KB
net-checksum.c -rw-r--r-- 2.2 KB
net.c -rw-r--r-- 79.8 KB
net.h -rw-r--r-- 5.6 KB
osdep.c -rw-r--r-- 8.7 KB
osdep.h -rw-r--r-- 2.0 KB
pci-ids.txt -rw-r--r-- 883 bytes
posix-aio-compat.c -rw-r--r-- 10.1 KB
posix-aio-compat.h -rw-r--r-- 1.6 KB
ppc-dis.c -rw-r--r-- 237.0 KB
ppc.ld -rw-r--r-- 8.6 KB
ppc64.ld -rw-r--r-- 8.2 KB
qemu-aio.h -rw-r--r-- 1.5 KB
qemu-binfmt-conf.sh -rw-r--r-- 4.0 KB
qemu-char.c -rw-r--r-- 58.0 KB
qemu-char.h -rw-r--r-- 3.4 KB
qemu-common.h -rw-r--r-- 6.5 KB
qemu-doc.texi -rw-r--r-- 65.9 KB
qemu-img-cmds.hx -rw-r--r-- 1.5 KB
qemu-img.c -rw-r--r-- 30.0 KB
qemu-img.texi -rw-r--r-- 5.2 KB
qemu-io.c -rw-r--r-- 29.7 KB
qemu-lock.h -rw-r--r-- 6.0 KB
qemu-log.h -rw-r--r-- 2.1 KB
qemu-malloc.c -rw-r--r-- 2.2 KB
qemu-monitor.hx -rw-r--r-- 18.6 KB
qemu-nbd.c -rw-r--r-- 13.0 KB
qemu-nbd.texi -rw-r--r-- 1.5 KB
qemu-option.c -rw-r--r-- 9.8 KB
qemu-option.h -rw-r--r-- 2.4 KB
qemu-options.hx -rw-r--r-- 56.4 KB
qemu-sockets.c -rw-r--r-- 12.0 KB
qemu-tech.texi -rw-r--r-- 22.1 KB
qemu-thread.c -rw-r--r-- 3.3 KB
qemu-thread.h -rw-r--r-- 1.1 KB
qemu-timer.h -rw-r--r-- 1.6 KB
qemu-tool.c -rw-r--r-- 1.4 KB
qemu.sasl -rw-r--r-- 1.3 KB
qemu_socket.h -rw-r--r-- 1.3 KB
readline.c -rw-r--r-- 12.7 KB
readline.h -rw-r--r-- 1.5 KB
rules.mak -rw-r--r-- 598 bytes
s390-dis.c -rw-r--r-- 90.2 KB
s390.ld -rw-r--r-- 7.0 KB
savevm.c -rw-r--r-- 31.6 KB
sdl.c -rw-r--r-- 26.8 KB
sdl_keysym.h -rw-r--r-- 8.5 KB
sdl_zoom.c -rw-r--r-- 2.8 KB
sdl_zoom.h -rw-r--r-- 578 bytes
sdl_zoom_template.h -rw-r--r-- 7.0 KB
sh4-dis.c -rw-r--r-- 83.1 KB
softmmu-semi.h -rw-r--r-- 2.0 KB
softmmu_defs.h -rw-r--r-- 1.1 KB
softmmu_exec.h -rw-r--r-- 2.7 KB
softmmu_header.h -rw-r--r-- 4.8 KB
softmmu_template.h -rw-r--r-- 12.0 KB
sparc-dis.c -rw-r--r-- 170.8 KB
sparc.ld -rw-r--r-- 4.8 KB
sparc64.ld -rw-r--r-- 4.6 KB
sys-queue.h -rw-r--r-- 16.8 KB
sysemu.h -rw-r--r-- 8.2 KB
tap-win32.c -rw-r--r-- 20.1 KB
targphys.h -rw-r--r-- 720 bytes
texi2pod.pl -rwxr-xr-x 11.9 KB
thunk.c -rw-r--r-- 8.2 KB
thunk.h -rw-r--r-- 4.1 KB
tool-osdep.c -rw-r--r-- 142 bytes
translate-all.c -rw-r--r-- 5.0 KB
uboot_image.h -rw-r--r-- 5.9 KB
usb-bsd.c -rw-r--r-- 16.9 KB
usb-linux.c -rw-r--r-- 44.3 KB
usb-stub.c -rw-r--r-- 1.8 KB
vgafont.h -rw-r--r-- 93.3 KB
vl.c -rw-r--r-- 155.4 KB
vnc-auth-sasl.c -rw-r--r-- 19.1 KB
vnc-auth-sasl.h -rw-r--r-- 2.3 KB
vnc-auth-vencrypt.c -rw-r--r-- 5.6 KB
vnc-auth-vencrypt.h -rw-r--r-- 1.4 KB
vnc-tls.c -rw-r--r-- 14.0 KB
vnc-tls.h -rw-r--r-- 2.2 KB
vnc.c -rw-r--r-- 70.0 KB
vnc.h -rw-r--r-- 9.5 KB
vnc_keysym.h -rw-r--r-- 11.1 KB
vnchextile.h -rw-r--r-- 4.5 KB
x86_64.ld -rw-r--r-- 6.5 KB
x_keymap.c -rw-r--r-- 5.9 KB
x_keymap.h -rw-r--r-- 1.3 KB

README

back to top