Go to file
Kevin Wolf 493810940b qcow2: Add QcowCache
This adds some new cache functions to qcow2 which can be used for caching
refcount blocks and L2 tables. When used with cache=writethrough they work
like the old caching code which is spread all over qcow2, so for this case we
have merely a cleanup.

The interesting case is with writeback caching (this includes cache=none) where
data isn't written to disk immediately but only kept in cache initially. This
leads to some form of metadata write batching which avoids the current "write
to refcount block, flush, write to L2 table" pattern for each single request
when a lot of cluster allocations happen. Instead, cache entries are only
written out if its required to maintain the right order. In the pure cluster
allocation case this means that all metadata updates for requests are done in
memory initially and on sync, first the refcount blocks are written to disk,
then fsync, then L2 tables.

This improves performance of scenarios with lots of cluster allocations
noticably (e.g. installation or after taking a snapshot).

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2011-01-24 11:08:51 +01:00
audio audio: split sample conversion and volume mixing 2011-01-12 18:36:22 +03:00
block qcow2: Add QcowCache 2011-01-24 11:08:51 +01:00
bsd-user bsd-user: Fix possible memory leaks and wrong realloc call 2011-01-17 20:23:47 +00:00
darwin-user darwin-user: Use GCC_FMT_ATTR (format checking) 2010-12-04 20:51:19 +00:00
default-configs config: add ahci for pci capable machines 2010-12-17 16:11:02 +01:00
docs document QEMU<->ACPIBIOS PCI hotplug interface 2011-01-17 17:29:42 +02:00
fpu softfloat: fix floatx80_is_{quiet,signaling}_nan() 2011-01-20 12:37:20 +01:00
fsdev Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
gdb-xml
hw ide: kill ide_dma_submit_check 2011-01-24 11:08:51 +01:00
linux-user Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
net Add support for OpenBSD to QEMU's tap driver. 2010-12-21 19:44:33 +00:00
pc-bios Add scripts directory 2011-01-20 20:54:21 +00:00
QMP spice: connection events. 2010-12-09 14:23:24 +01:00
roms Add new vgabios binaries to blobs list. 2010-11-16 08:39:52 -06:00
scripts gdbstub-xml: avoid a warning from sparse 2011-01-23 11:43:25 +00:00
slirp Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
sysconfigs/target
target-alpha softfloat: Rename float*_is_nan() functions to float*_is_quiet_nan() 2011-01-02 11:15:25 +01:00
target-arm target-arm: Log instruction start in TCG code 2011-01-18 15:23:44 +01:00
target-cris cris: Set btaken when storing direct jumps 2011-01-13 15:14:04 +01:00
target-i386 target-i386: Use deposit operation. 2011-01-20 12:16:12 +01:00
target-m68k softfloat: Rename float*_is_nan() functions to float*_is_quiet_nan() 2011-01-02 11:15:25 +01:00
target-microblaze microblaze: cleanup helper_addkc 2011-01-23 03:52:20 +01:00
target-mips mips: Break TBs after mfc0_count 2011-01-18 12:32:46 +01:00
target-ppc ppc: Correct BookE tlb reads 2011-01-21 23:12:42 +01:00
target-s390x Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
target-sh4 target-sh4: implement negc using TCG 2011-01-16 13:19:20 +01:00
target-sparc sparc: fix NaN handling 2011-01-18 21:34:51 +00:00
tcg tcg: README, name deposit second argument len/LEN 2011-01-20 12:16:57 +01:00
tests Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
ui Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
.gitignore Add a DTrace tracing backend targetted for SystemTAP compatability 2010-11-21 09:16:56 -06:00
.gitmodules
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c
alpha-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
alpha.ld
arch_init.c migration: stable ram block ordering 2010-12-02 21:13:39 +02:00
arch_init.h
arm-dis.c arm-dis: Include opcode hex when doing disassembly 2011-01-12 15:10:47 +01:00
arm-semi.c Fix commandline handling for ARM semihosted executables 2011-01-07 18:20:48 +02:00
arm.ld
async.c
balloon.c trace: Trace entry point of balloon request handler 2010-09-09 16:22:45 -05:00
balloon.h
block_int.h qed: Add QEMU Enhanced Disk image format 2010-12-17 16:11:04 +01:00
block-migration.c Avoid divide by zero when there is no block device to migrate 2011-01-24 11:08:50 +01:00
block-migration.h
block.c block: delete a write-only variable 2011-01-06 18:25:37 +00:00
block.h block: add discard support 2010-12-17 16:11:03 +01:00
blockdev.c do_snapshot_blkdev() error on missing snapshot_file argument 2011-01-24 11:08:50 +01:00
blockdev.h Introduce do_snapshot_blkdev() and monitor command to handle it. 2010-12-17 16:11:03 +01:00
bswap.h bswap.h: add cpu_to_be64wu() 2011-01-10 10:55:10 +01:00
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c migration: allow rate > 4g 2010-12-02 21:13:39 +02:00
buffered_file.h
cache-utils.c Remove trailing whitespace 2010-11-01 00:54:06 +03:00
cache-utils.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
Changelog
check-qdict.c check-qdict: Introduce test for the new iteration API 2010-07-01 14:27:13 -03:00
check-qfloat.c
check-qint.c
check-qjson.c Silence compiler warning in json test case 2010-10-22 10:08:37 -02:00
check-qlist.c
check-qstring.c
cmd.c qemu-io: check registered fds in command_loop() 2010-06-22 14:38:02 +02:00
cmd.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
CODING_STYLE checkpatch: adjust to QEMUisms 2011-01-20 20:58:56 +00:00
compatfd.c signalfd compatibility 2010-10-20 16:15:04 -05:00
compatfd.h signalfd compatibility 2010-10-20 16:15:04 -05:00
config.h
configure Add scripts directory 2011-01-20 20:54:21 +00:00
console.c console: Avoid dereferencing NULL active_console 2010-10-03 06:43:10 +00:00
console.h Fix curses on big endian hosts 2011-01-04 21:58:24 +01:00
COPYING
COPYING.LIB
cpu-all.h target-xxx: Use fprintf_function (format checking) 2010-10-30 08:01:59 +00:00
cpu-common.h exec: introduce endianness swapped mmio 2010-12-11 15:24:25 +00:00
cpu-defs.h
cpu-exec.c target-mips: fix host CPU consumption when guest is idle 2010-12-27 00:58:06 +01:00
cpus.c cpus: flush all requests on each vm stop 2010-12-09 12:47:19 +02:00
cpus.h target-xxx: Use fprintf_function (format checking) 2010-10-30 08:01:59 +00:00
cris-dis.c cris: Support disassembly of crisv10 2011-01-10 22:31:09 +01:00
cursor_hidden.xpm
cursor_left_ptr.xpm
cursor.c
cutils.c Make strtosz() return int64_t instead of ssize_t 2011-01-24 11:08:50 +01:00
def-helper.h tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts. 2010-06-16 11:29:11 +02:00
device_tree.c
device_tree.h
dis-asm.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
disas.c disas: remove opcode printing on ARM hosts 2011-01-12 15:12:58 +01:00
disas.h Remove special handling of system include files (no longer needed) 2010-10-22 17:11:28 +00:00
dma-helpers.c
dma.h
dyngen-exec.h Remove special handling of system include files (no longer needed) 2010-10-22 17:11:28 +00:00
elf.h Add more DT_* and AT_* constants to qemu's copy of elf.h. 2010-07-29 08:32:27 +02:00
envlist.c
envlist.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
exec-all.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
exec.c tcg/sparc64: fix segfault 2011-01-16 08:32:27 +00:00
gdbstub.c gdbstub: Close connection in gdb_exit 2011-01-16 20:56:01 +01:00
gdbstub.h Add scripts directory 2011-01-20 20:54:21 +00:00
gen-icount.h
HACKING HACKING: add rules for printf-like functions 2010-09-10 18:53:11 +00:00
hmp-commands.hx Merge remote branch 'mst/for_anthony' into staging 2011-01-10 10:32:01 -06:00
host-utils.c
host-utils.h
hpet.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c un-register kbd driver in case of USB kbd unplug. 2010-06-14 15:46:28 -05:00
ioport-user.c
ioport.c Type-safe ioport callbacks 2010-11-21 09:16:57 -06:00
ioport.h Type-safe ioport callbacks 2010-11-21 09:16:57 -06:00
iorange.h Type-safe ioport callbacks 2010-11-21 09:16:57 -06:00
iov.c
iov.h
json-lexer.c
json-lexer.h
json-parser.c Use GCC_FMT_ATTR (format checking) 2010-10-03 06:34:51 +00:00
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: test for ioeventfd support on old kernels 2011-01-10 14:44:16 +02:00
kvm-stub.c kvm: test for ioeventfd support on old kernels 2011-01-10 14:44:16 +02:00
kvm.h kvm: test for ioeventfd support on old kernels 2011-01-10 14:44:16 +02:00
libfdt_env.h
LICENSE
linux-aio.c
m68k-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
m68k-semi.c Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
m68k.ld
MAINTAINERS Merge branch 'usb.4' of git://anongit.freedesktop.org/spice/qemu 2011-01-21 17:56:50 +01:00
Makefile Add scripts directory 2011-01-20 20:54:21 +00:00
Makefile.dis
Makefile.hw
Makefile.objs qcow2: Add QcowCache 2011-01-24 11:08:51 +01:00
Makefile.target Add scripts directory 2011-01-20 20:54:21 +00:00
Makefile.user
microblaze-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
migration-exec.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-fd.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-tcp.c Close socket file descriptor when qemu_accept fails 2010-07-25 17:03:51 +02:00
migration-unix.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration.c savevm: Fix no_migrate 2011-01-17 18:22:17 +02:00
migration.h Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
mips-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
mips.ld
module.c
module.h
monitor.c Make strtosz() return int64_t instead of ssize_t 2011-01-24 11:08:50 +01:00
monitor.h spice: connection events. 2010-12-09 14:23:24 +01:00
nbd.c nbd: Haiku has _IO() in its BSD compatibility layer 2010-10-03 06:31:33 +00:00
nbd.h Merge remote branch 'kwolf/for-anthony' into staging 2010-09-08 14:26:57 -05:00
net-checksum.c
net.c net/sock: option to specify local address 2010-12-09 12:45:50 +02:00
net.h Add bootindex parameter to net/block/fd device 2010-12-11 21:32:46 +00:00
notify.c
notify.h
os-posix.c Separate qemu_pidfile() into OS specific versions 2010-10-30 08:02:39 +00:00
os-win32.c Separate qemu_pidfile() into OS specific versions 2010-10-30 08:02:39 +00:00
osdep.c Remove unncessary includes 2010-10-30 08:02:40 +00:00
osdep.h Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
oslib-posix.c virtio-9p: fix build on !CONFIG_UTIMENSAT 2010-12-02 16:08:40 -08:00
oslib-win32.c Consolidate oom_check() functions 2010-10-30 08:02:39 +00:00
path.c
pci-ids.txt
pflib.c add pflib: PixelFormat conversion library. 2010-09-21 18:35:30 +02:00
pflib.h add pflib: PixelFormat conversion library. 2010-09-21 18:35:30 +02:00
poison.h
posix-aio-compat.c Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
ppc64.ld
ppc-dis.c
ppc.ld
qbool.c
qbool.h
qdict-test-data.txt
qdict.c QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qdict.h QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qemu_socket.h Fix OpenBSD build 2010-09-22 20:05:23 +00:00
qemu-aio.h
qemu-barrier.h Introduce proper compiler barrier 2010-07-22 05:52:08 +02:00
qemu-char.c qemu-char: Introduce Memory driver 2010-11-17 09:52:24 -02:00
qemu-char.h qemu-char: Introduce Memory driver 2010-11-17 09:52:24 -02:00
qemu-common.h Make strtosz() return int64_t instead of ssize_t 2011-01-24 11:08:50 +01:00
qemu-config.c Add bootindex for option roms. 2010-12-11 21:32:47 +00:00
qemu-config.h spice: core bits 2010-09-21 18:36:42 +02:00
qemu-doc.texi Add scripts directory 2011-01-20 20:54:21 +00:00
qemu-error.c
qemu-error.h Use GCC_FMT_ATTR (format checking) 2010-10-03 06:34:51 +00:00
qemu-img-cmds.hx Copy snapshots out of QCOW2 disk 2010-10-22 14:49:35 +02:00
qemu-img.c Make strtosz() return int64_t instead of ssize_t 2011-01-24 11:08:50 +01:00
qemu-img.texi Copy snapshots out of QCOW2 disk 2010-10-22 14:49:35 +02:00
qemu-io.c qemu-io: fix a memory leak 2011-01-12 19:48:59 +00:00
qemu-lock.h Remove unused spin_trylock() function 2010-12-04 21:21:28 +00:00
qemu-log.h
qemu-malloc.c Add missing tracing to qemu_mallocz() 2010-12-14 15:44:21 +01:00
qemu-nbd.c Remove NULL checks for bdrv_new return value 2010-12-17 16:11:03 +01:00
qemu-nbd.texi
qemu-objects.h
qemu-option.c qemu-option: Fix parse_option_parameters() documentation typo 2010-12-14 15:44:21 +01:00
qemu-option.h error: New qemu_opts_loc_restore() 2010-07-06 17:05:49 +02:00
qemu-options.h
qemu-options.hx Merge branch 'spice.v23.pull' of git://anongit.freedesktop.org/spice/qemu 2010-12-27 22:59:48 +01:00
qemu-os-posix.h virtio-9p: fix build on !CONFIG_UTIMENSAT 2010-12-02 16:08:40 -08:00
qemu-os-win32.h Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
qemu-queue.h
qemu-sockets.c
qemu-tech.texi qemu-tech: Spelling fixes 2011-01-09 20:59:53 +00:00
qemu-thread.c qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-thread.h qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-timer-common.c Add OpenBSD to ifdef list since it has CLOCK_MONOTONIC. 2010-12-21 19:44:42 +00:00
qemu-timer.c Avoid deadlock whith iothread and icount 2011-01-23 04:44:51 +01:00
qemu-timer.h Mov muldiv64 to qemu-common.h (Thus unbreaking gus) 2010-10-30 01:41:01 +04:00
qemu-tool.c Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
qemu-x509.h
qemu.sasl
qerror.c pci: allow devices being tagged as not hotpluggable. 2011-01-10 13:29:16 +02:00
qerror.h pci: allow devices being tagged as not hotpluggable. 2011-01-10 13:29:16 +02:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c Add support for JSON pretty printing 2010-10-01 10:12:43 -03:00
qjson.h Merge remote branch 'qmp/for-anthony' into staging 2010-10-05 13:54:49 -05:00
qlist.c
qlist.h
qmp-commands.hx Merge branch 'spice.v23.pull' of git://anongit.freedesktop.org/spice/qemu 2010-12-27 22:59:48 +01:00
qobject.h
qstring.c
qstring.h
range.h Introduce range.h 2010-09-18 05:53:14 +00:00
readline.c
readline.h
README
rules.mak Add scripts directory 2011-01-20 20:54:21 +00:00
rwhandler.c Make simple io mem handler endian aware 2010-12-11 15:24:25 +00:00
rwhandler.h Make simple io mem handler endian aware 2010-12-11 15:24:25 +00:00
s390-dis.c
s390.ld
savevm.c savevm: Fix no_migrate 2011-01-17 18:22:17 +02:00
sh4-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
simpletrace.c qemu-timer: move commonly used timer code to qemu-timer-common 2010-10-23 15:24:07 +00:00
simpletrace.h trace: Use fprintf_function (format checking) 2010-11-21 09:16:57 -06:00
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
softmmu-semi.h
sparc64.ld
sparc-dis.c
sparc.ld
sysemu.h savevm: Fix no_migrate 2011-01-17 18:22:17 +02:00
targphys.h
tcg-runtime.c
thunk.c
thunk.h
TODO
trace-events usb: add device qualifier support 2011-01-11 17:15:24 +01:00
translate-all.c
uboot_image.h
usb-bsd.c usb-bsd: fix a file descriptor leak 2011-01-09 14:43:33 +00:00
usb-linux.c usb-linux: Get the active configuration from sysfs rather then asking the dev 2010-11-16 14:35:00 -06:00
usb-stub.c
VERSION Update version for 0.13.x 2010-07-28 07:58:15 -05:00
version.rc mingw: add version information to the executables 2010-09-26 16:07:57 +00:00
vgafont.h
vl.c Make strtosz() return int64_t instead of ssize_t 2011-01-24 11:08:50 +01:00
x86_64.ld

Read the documentation in qemu-doc.html.

Fabrice Bellard.