Go to file
Kevin Wolf 08fd2f30bd qcow2: Bring synchronous read/write back to life
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 ef845c3bf4)

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-12-03 11:29:25 +01:00
audio Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
block qcow2: Bring synchronous read/write back to life 2009-12-03 11:29:25 +01:00
bsd-user Fix Sparse warning about missing prototype 2009-08-27 21:23:37 -05:00
darwin-user Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
fpu Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static' 2009-04-13 16:31:01 +00:00
gdb-xml gdb-xml: fix hacks in powerpc register numbering 2009-07-12 23:42:05 +02:00
hw fix I2C slave addressing 2009-12-02 17:24:48 +01:00
linux-user ELF codedump build failures 2009-11-18 15:30:23 +01:00
pc-bios Fix checksum writing in signboot.sh 2009-08-27 21:23:37 -05:00
slirp slirp: fix use-after-free 2009-11-21 00:34:59 +01:00
target-alpha target-alpha: fix extlh instruction 2009-09-18 17:22:47 +02:00
target-arm Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
target-cris Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
target-i386 kvm: Move KVM mp_state accessors to i386-specific code 2009-11-17 07:52:16 +01:00
target-m68k Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
target-microblaze Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
target-mips target-mips: fix conditional moves off fp condition codes 2009-08-25 18:07:05 +02:00
target-ppc Fix most warnings (errors with -Werror) when debugging is enabled 2009-07-22 15:41:01 -05:00
target-sh4 Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
target-sparc sparc64 flush pending conditional evaluations before exposing cpu state 2009-08-27 21:23:36 -05:00
tcg tcg: fix size of local variables in tcg_gen_bswap64_i64 2009-09-16 21:27:08 +02:00
tests Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
.gitignore dot gitignore: add qemu-monitor.texi 2009-06-22 10:15:28 -05:00
a.out.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
acl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
acl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
aes.c Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c Handle BH's queued by AIO completions in qemu_aio_flush() 2009-07-22 15:41:01 -05:00
alpha-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
arm-semi.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
balloon.h Add missing file from previous commit. 2008-12-04 20:35:16 +00:00
block_int.h replace bdrv_{get, put}_buffer with bdrv_{load, save}_vmstate 2009-07-16 08:28:13 -05:00
block.c replace bdrv_{get, put}_buffer with bdrv_{load, save}_vmstate 2009-07-16 08:28:13 -05:00
block.h replace bdrv_{get, put}_buffer with bdrv_{load, save}_vmstate 2009-07-16 08:28:13 -05:00
bswap.h Sparse fixes: truncation by cast 2009-03-07 15:46:23 +00:00
bt-host.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
bt-host.h Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-vhci.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
buffered_file.c Fix most warnings (errors with -Werror) when debugging is enabled 2009-07-22 15:41:01 -05:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
cache-utils.c Properly initialize len argument of sysctl and include stdio.h (perror) 2009-02-04 20:39:09 +00:00
cache-utils.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
Changelog Update version and changelog for 0.11.1 release 2009-12-02 21:27:02 +01:00
cmd.c qemu-io: Improve portability (win32 now supported). 2009-09-22 21:15:57 -05:00
cmd.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
cocoa.m Update cocoa.m to match new DisplayState code (Samuel Benson) 2009-03-04 19:25:22 +00:00
CODING_STYLE Remove potentially offensive humor. 2009-04-07 02:10:16 +00:00
configure this patch fixes a typo where armv4l was incorrectly spelled arm4l, 2009-11-17 07:30:09 +01:00
console.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
console.h sdl zooming 2009-06-29 08:52:44 -05:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
cpu-all.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
cpu-common.h Remove io_index argument from cpu_register_io_memory() 2009-06-16 15:18:37 -05:00
cpu-defs.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
cpu-exec.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
create_config Generate $target_dir/config.h from $target_dir/config.mak 2009-07-16 17:28:58 -05:00
cris-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
curses_keys.h Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
curses.c curses: save 250MB of memory 2009-09-15 00:27:53 +02:00
cutils.c Revert "support colon in filenames" 2009-07-09 16:06:38 -05:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
def-helper.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
device_tree.c Remove unused variable 2009-05-24 21:24:33 +01:00
device_tree.h Wean device tree code off phys_ram_base. 2009-04-10 16:23:59 +00:00
dis-asm.h microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.c microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
dma-helpers.c fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dma.h fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dyngen-exec.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
elf_ops.h Fix symfind. 2009-08-27 21:23:37 -05:00
elf.h linux-user: implemented ELF coredump support for ARM target 2009-06-16 16:56:28 +03:00
exec-all.h ARM host: fix generated blocks linking 2009-09-25 17:40:44 +02:00
exec.c Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
feature_to_c.sh Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
gdbstub.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
gdbstub.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gen-icount.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Include <strings.h> for ffs(). 2008-11-12 17:18:41 +00:00
hostregs_helper.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hxtool Fix hxtool. 2009-07-02 17:54:34 +00:00
i386-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
ioport-user.c ioport: use uint{32, 16, 8}_t for ioport value and pio_addr_t for ioport address. 2009-07-16 17:28:50 -05:00
ioport.c ioport: use uint{32, 16, 8}_t for ioport value and pio_addr_t for ioport address. 2009-07-16 17:28:50 -05:00
ioport.h ioport: use uint{32, 16, 8}_t for ioport value and pio_addr_t for ioport address. 2009-07-16 17:28:50 -05:00
keymaps.c Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
keymaps.h Add missing file from previous commit 2009-03-06 22:47:54 +00:00
kqemu.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
kvm-all.c kvm: Move KVM mp_state accessors to i386-specific code 2009-11-17 07:52:16 +01:00
kvm.h kvm: Move KVM mp_state accessors to i386-specific code 2009-11-17 07:52:16 +01:00
libfdt_env.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
LICENSE Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
loader.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
m68k-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
m68k-semi.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
MAINTAINERS Update maintainer list. 2009-05-28 14:00:49 +02:00
Makefile Option rom makefile fixes 2009-08-27 21:23:36 -05:00
Makefile.hw We can wrap ARCH_CFLAGS/ARCH_LDFLAGS in CFLAGS/LDFLAGS at configure time 2009-07-16 17:28:56 -05:00
Makefile.target Move CLOCKLIBS and PTHREADLIBS out of CONFIG_LINUX_USER_ONLY 2009-07-29 16:35:28 -05:00
microblaze-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
migration-exec.c Fix detached migration with exec. 2009-08-27 21:23:39 -05:00
migration-tcp.c fix migration to obey -S 2009-08-27 21:22:28 -05:00
migration.c flush pending aio requests 2009-07-10 13:44:30 -05:00
migration.h set migration max downtime 2009-06-16 15:52:32 -05:00
mips-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
module.c Fix module initialization when more than 1 class is in use 2009-05-14 18:06:49 -05:00
module.h Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
monitor.c Fix device name completion for 'eject' 2009-08-27 21:23:39 -05:00
monitor.h Add monitor_get_fd() command for fetching named fds 2009-07-29 11:47:09 -05:00
nbd.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
nbd.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
net-checksum.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
net.c net: disable draining tap queue in one go 2009-11-10 18:17:57 +01:00
net.h net: Fix send queue ordering 2009-09-16 21:19:54 +02:00
osdep.c Add out of memory and zero size argument checks to be consistent with 2009-07-08 18:24:05 +04:00
osdep.h snapshot subcommand for qemu-img (Kevin Wolf) 2009-01-07 17:40:15 +00:00
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
posix-aio-compat.c fix asynchronous ioctls 2009-05-08 15:51:19 -05:00
posix-aio-compat.h push down vector linearization to posix-aio-compat.c (Christoph Hellwig) 2009-04-07 18:43:24 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
ppc-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
qemu_socket.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
qemu-aio.h fix qemu_aio_flush 2009-06-15 13:52:27 +02:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.c More NULL pointer fixes 2009-08-27 21:23:36 -05:00
qemu-char.h Add SCM_RIGHTS support to unix socket character devices 2009-07-29 11:47:09 -05:00
qemu-common.h Revert "support colon in filenames" 2009-07-09 16:06:38 -05:00
qemu-doc.texi doc: Update information on supported network adapters. 2009-06-06 19:22:44 +03:00
qemu-img-cmds.hx Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-img.c qmu-img: fix qemu-img convert to generate a valid image when the source referenced a backing file 2009-07-22 15:41:01 -05:00
qemu-img.texi Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-io.c qemu-io: Improve portability (win32 now supported). 2009-09-22 21:15:57 -05:00
qemu-lock.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
qemu-log.h Define macros that will become the new logging API (Eduardo Habkost) 2009-01-15 21:52:11 +00:00
qemu-malloc.c Format per CODING_STYLE 2009-05-19 22:29:20 +04:00
qemu-monitor.hx Add getfd and closefd monitor commands 2009-07-29 11:47:09 -05:00
qemu-nbd.c Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-option.c qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-option.h qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-options.hx Update boot option documentation 2009-07-16 08:28:12 -05:00
qemu-sockets.c Fix in file qemu-sockets.c 2009-05-08 16:11:49 -05:00
qemu-tech.texi Update docs on dynamic condition code calculation 2009-05-10 18:23:46 +00:00
qemu-thread.c qemu-thread: use pthread_equal 2009-07-22 15:41:02 -05:00
qemu-thread.h qemu: mutex/thread/cond wrappers and configure tweaks (Marcelo Tosatti) 2009-04-24 18:03:15 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c Fix most warnings (errors with -Werror) when debugging is enabled 2009-07-22 15:41:01 -05:00
qemu.sasl Add SASL authentication support ("Daniel P. Berrange") 2009-03-06 20:27:28 +00:00
readline.c readline: Remove unneeded qemu_mallocz() check 2009-06-16 15:18:37 -05:00
readline.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
README Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
rules.mak Remove bogus -Werror 2009-06-30 12:10:52 +01:00
s390-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
s390.ld Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
savevm.c fix segfault in setting migration speed 2009-07-16 17:28:51 -05:00
sdl_keysym.h Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
sdl_zoom_template.h sdl zooming 2009-06-29 08:52:44 -05:00
sdl_zoom.c Fix sdl_zoom compile problems on OpenBSD 2009-07-01 18:49:34 +00:00
sdl_zoom.h Remove SDL/ prefix 2009-07-08 18:25:37 +04:00
sdl.c sdl.c: support 32 bpp cursors 2009-08-27 21:23:38 -05:00
sh4-dis.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Allow 5 mmu indexes. 2009-04-07 21:47:27 +00:00
softmmu_header.h Remove dead i386 assembly code from softmmu_header.h 2009-07-16 17:28:50 -05:00
softmmu_template.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sparc-dis.c Fix Sparse warnings: "Using plain integer as NULL pointer" 2009-08-27 21:23:36 -05:00
sparc.ld Fix sparc.ld 2009-11-19 01:22:47 +01:00
sys-queue.h Remove CRs 2008-12-14 08:53:17 +00:00
sysemu.h Clean up VGA type selection; far too many variables being used to track one state leads to confusion if new variables are added. 2009-08-27 21:23:39 -05:00
tap-win32.c tap-win32: Use correct headers. 2009-07-29 11:38:12 -05:00
targphys.h kvm: Mark full address range dirty on live migration start 2009-05-28 02:14:56 -05:00
texi2pod.pl Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
thunk.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
thunk.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
TODO Update 2008-12-04 11:29:42 +00:00
tool-osdep.c Add tool_osdep.c 2009-05-13 22:21:47 +01:00
translate-all.c Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
uboot_image.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
usb-bsd.c Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
usb-linux.c usb-linux.c: fix buffer overflow 2009-10-04 13:16:01 +02:00
usb-stub.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
VERSION Update version and changelog for 0.11.1 release 2009-12-02 21:27:02 +01:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c Clean up VGA type selection; far too many variables being used to track one state leads to confusion if new variables are added. 2009-08-27 21:23:39 -05:00
vnc_keysym.h More NULL pointer fixes 2009-08-27 21:23:36 -05:00
vnc-auth-sasl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc-auth-sasl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc-auth-vencrypt.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-auth-vencrypt.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc.c When using stdio monitor and VNC display, one can set or clear a VNC password; this should set or turn off VNC authentication as well. 2009-08-27 21:23:39 -05:00
vnc.h vnc: throttle screen updates. (Gerd Hoffmann) 2009-03-20 15:59:24 +00:00
vnchextile.h vnc: cleanup surface handling, fix screen corruption bug. (Gerd Hoffmann) 2009-03-20 15:59:14 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00
x_keymap.h Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.