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
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 |
Computing file changes ...