Statistics
| Branch: | Revision:

root @ f8a2e5e3

Name Size
  QMP
  audio
  block
  bsd-user
  darwin-user
  default-configs
  docs
  fpu
  fsdev
  gdb-xml
  hw
  libcacard
  linux-headers
  linux-user
  net
  pc-bios
  qapi
  qga
  roms
  scripts
  slirp
  sysconfigs
  target-alpha
  target-arm
  target-cris
  target-i386
  target-lm32
  target-m68k
  target-microblaze
  target-mips
  target-ppc
  target-s390x
  target-sh4
  target-sparc
  target-unicore32
  target-xtensa
  tcg
  tests
  trace
  ui
.gitignore 897 Bytes
.gitmodules 602 Bytes
CODING_STYLE 3 kB
COPYING 17.6 kB
COPYING.LIB 25.8 kB
Changelog 22.6 kB
HACKING 4.7 kB
LICENSE 637 Bytes
MAINTAINERS 10.5 kB
Makefile 14.7 kB
Makefile.dis 402 Bytes
Makefile.hw 522 Bytes
Makefile.objs 15.3 kB
Makefile.target 13 kB
Makefile.user 475 Bytes
README 59 Bytes
TODO 1.1 kB
VERSION 4 Bytes
a.out.h 13.6 kB
acl.c 4.4 kB
acl.h 2.1 kB
aes.c 59.7 kB
aes.h 717 Bytes
aio.c 5.8 kB
alpha-dis.c 79.8 kB
alpha.ld 3.9 kB
arch_init.c 17.7 kB
arch_init.h 814 Bytes
arm-dis.c 157.1 kB
arm-semi.c 15.7 kB
arm.ld 4.6 kB
async.c 3.4 kB
balloon.c 3.6 kB
balloon.h 737 Bytes
bitmap.c 6.3 kB
bitmap.h 7.3 kB
bitops.c 3.4 kB
bitops.h 6.3 kB
block-migration.c 19.8 kB
block-migration.h 504 Bytes
block.c 99.1 kB
block.h 16 kB
block_int.h 10.4 kB
blockdev.c 23.9 kB
blockdev.h 2.2 kB
bswap.h 13.9 kB
bt-host.c 5.2 kB
bt-host.h 123 Bytes
bt-vhci.c 4.5 kB
buffered_file.c 6.8 kB
buffered_file.h 916 Bytes
cache-utils.c 2.1 kB
cache-utils.h 1.1 kB
check-qdict.c 8.9 kB
check-qfloat.c 1.5 kB
check-qint.c 2.1 kB
check-qjson.c 19.9 kB
check-qlist.c 2.8 kB
check-qstring.c 2.8 kB
cmd.c 12.2 kB
cmd.h 2 kB
compatfd.c 2.6 kB
compatfd.h 1.5 kB
compiler.h 1.6 kB
config.h 52 Bytes
configure 95.7 kB
console.c 46.8 kB
console.h 12.2 kB
coroutine-gthread.c 3.6 kB
coroutine-ucontext.c 5.7 kB
coroutine-win32.c 2.6 kB
cpu-all.h 16.9 kB
cpu-common.h 7.1 kB
cpu-defs.h 9.8 kB
cpu-exec.c 25.2 kB
cpus.c 28.4 kB
cpus.h 549 Bytes
cris-dis.c 80.3 kB
cursor.c 5.3 kB
cursor_hidden.xpm 1.3 kB
cursor_left_ptr.xpm 1.4 kB
cutils.c 9.4 kB
def-helper.h 7.2 kB
device_tree.c 4.1 kB
device_tree.h 1 kB
dis-asm.h 18.3 kB
disas.c 11.7 kB
disas.h 1.1 kB
dma-helpers.c 5.1 kB
dma.h 1.8 kB
dyngen-exec.h 2 kB
elf.h 45.5 kB
envlist.c 5.3 kB
envlist.h 484 Bytes
error.c 2.7 kB
error.h 1.7 kB
error_int.h 631 Bytes
event_notifier.c 1.3 kB
event_notifier.h 369 Bytes
exec-all.h 12.9 kB
exec-memory.h 1 kB
exec.c 139.8 kB
gdbstub.c 73.4 kB
gdbstub.h 1.3 kB
gen-icount.h 1.2 kB
hmp-commands.hx 36.5 kB
hmp.c 15.9 kB
hmp.h 1.1 kB
host-utils.c 2.8 kB
host-utils.h 5.5 kB
hppa-dis.c 100.2 kB
hppa.ld 7.8 kB
i386-dis.c 159.1 kB
i386.ld 4.6 kB
ia64-dis.c 396.7 kB
ia64.ld 8.2 kB
input.c 7.2 kB
int128.h 1.9 kB
iohandler.c 5.5 kB
ioport-user.c 1.6 kB
ioport.c 12.3 kB
ioport.h 2.6 kB
iorange.h 663 Bytes
iov.c 3.2 kB
iov.h 907 Bytes
json-lexer.c 9.2 kB
json-lexer.h 993 Bytes
json-parser.c 14.6 kB
json-parser.h 514 Bytes
json-streamer.c 3.2 kB
json-streamer.h 984 Bytes
kvm-all.c 35.7 kB
kvm-stub.c 2 kB
kvm.h 5.4 kB
libfdt_env.h 1.1 kB
linux-aio.c 5.6 kB
m68k-dis.c 211.6 kB
m68k-semi.c 12.2 kB
m68k.ld 5.9 kB
main-loop.c 12.1 kB
main-loop.h 13 kB
memory.c 43.2 kB
memory.h 18.2 kB
microblaze-dis.c 62.1 kB
migration-exec.c 2.5 kB
migration-fd.c 2.8 kB
migration-tcp.c 4 kB
migration-unix.c 4.2 kB
migration.c 12.1 kB
migration.h 2.8 kB
mips-dis.c 206.6 kB
mips.ld 8.2 kB
module.c 1.3 kB
module.h 1.1 kB
monitor.c 136.4 kB
monitor.h 1.8 kB
nbd.c 17.9 kB
nbd.h 2.7 kB
net.c 38.8 kB
net.h 5.9 kB
notify.c 832 Bytes
notify.h 881 Bytes
os-posix.c 8.8 kB
os-win32.c 3.9 kB
osdep.c 4 kB
osdep.h 3.6 kB
oslib-posix.c 5.6 kB
oslib-win32.c 3.2 kB
path.c 4.7 kB
pci-ids.txt 883 Bytes
pflib.c 6.6 kB
pflib.h 496 Bytes
poison.h 1.8 kB
posix-aio-compat.c 16.9 kB
ppc-dis.c 237 kB
ppc.ld 8.3 kB
ppc64.ld 7.6 kB
qapi-schema-guest.json 5.1 kB
qapi-schema-test.json 828 Bytes
qapi-schema.json 24.2 kB
qbool.c 1.2 kB
qbool.h 535 Bytes
qdict-test-data.txt 88.4 kB
qdict.c 10.5 kB
qdict.h 2.1 kB
qemu-aio.h 2 kB
qemu-barrier.h 978 Bytes
qemu-char.c 74.3 kB
qemu-char.h 7.3 kB
qemu-common.h 9.4 kB
qemu-config.c 19.5 kB
qemu-config.h 542 Bytes
qemu-coroutine-int.h 1.7 kB
qemu-coroutine-lock.c 4.5 kB
qemu-coroutine.c 1.6 kB
qemu-coroutine.h 5.2 kB
qemu-doc.texi 80 kB
qemu-error.c 4.3 kB
qemu-error.h 1.1 kB
qemu-ga.c 17.5 kB
qemu-img-cmds.hx 1.8 kB
qemu-img.c 45.9 kB
qemu-img.texi 8.8 kB
qemu-io.c 43.9 kB
qemu-lock.h 1.6 kB
qemu-log.h 2.1 kB
qemu-nbd.c 16.2 kB
qemu-nbd.texi 1.5 kB
qemu-objects.h 506 Bytes
qemu-option.c 24.8 kB
qemu-option.h 5.3 kB
qemu-options.h 1.5 kB
qemu-options.hx 90.5 kB
qemu-os-posix.h 1.8 kB
qemu-os-win32.h 1.9 kB
qemu-progress.c 4 kB
qemu-queue.h 22.7 kB
qemu-sockets.c 19 kB
qemu-tech.texi 23.3 kB
qemu-thread-posix.c 2.9 kB
qemu-thread-posix.h 233 Bytes
qemu-thread-win32.c 7.6 kB
qemu-thread-win32.h 307 Bytes
qemu-thread.h 1.2 kB
qemu-timer-common.c 2 kB
qemu-timer.c 20.8 kB
qemu-timer.h 8.6 kB
qemu-tls.h 1.9 kB
qemu-tool.c 1.6 kB
qemu-x509.h 239 Bytes
qemu-xattr.h 606 Bytes
qemu.sasl 1.3 kB
qemu_socket.h 1.6 kB
qerror.c 14.2 kB
qerror.h 6.6 kB
qfloat.c 1.2 kB
qfloat.h 562 Bytes
qint.c 1.2 kB
qint.h 539 Bytes
qjson.c 7.3 kB
qjson.h 708 Bytes
qlist.c 3 kB
qlist.h 1.5 kB
qmp-commands.hx 51.6 kB
qmp.c 2.6 kB
qobject.h 2.7 kB
qstring.c 3.1 kB
qstring.h 884 Bytes
range.h 867 Bytes
readline.c 12.7 kB
readline.h 1.5 kB
rules.mak 2.3 kB
s390-dis.c 93.3 kB
s390.ld 6.9 kB
savevm.c 55.5 kB
sh4-dis.c 82.7 kB
softmmu-semi.h 2 kB
softmmu_defs.h 1.2 kB
softmmu_exec.h 3.2 kB
softmmu_header.h 5.1 kB
softmmu_template.h 12.1 kB
sparc-dis.c 171.7 kB
sparc.ld 4.6 kB
sparc64.ld 4.4 kB
spice-qemu-char.c 6.8 kB
sysemu.h 5.1 kB
targphys.h 538 Bytes
tcg-runtime.c 2.2 kB
tci-dis.c 1.8 kB
tci.c 34.3 kB
test-coroutine.c 4.1 kB
test-qmp-commands.c 4 kB
test-visitor.c 9.1 kB
thunk.c 8.2 kB
thunk.h 4.1 kB
trace-events 39.1 kB
translate-all.c 4.2 kB
uboot_image.h 5.9 kB
usb-bsd.c 17.5 kB
usb-linux.c 59.1 kB
usb-redir.c 38.9 kB
usb-stub.c 1.8 kB
user-exec.c 19.3 kB
version.rc 749 Bytes
vgafont.h 93.3 kB
vl.c 98 kB
x86_64.ld 6.4 kB
xen-all.c 28.1 kB
xen-mapcache.c 11.4 kB
xen-mapcache.h 1 kB
xen-stub.c 760 Bytes
xtensa-semi.c 6.7 kB

Latest revisions

# Date Author Comment
b7d5a5b8 12/05/2011 03:51 pm Stefan Hajnoczi

qed: convert to .bdrv_co_is_allocated()

The bdrv_qed_is_allocated() function is a synchronous wrapper around
qed_find_cluster(), which performs the cluster lookup. In order to
convert the synchronous function to a coroutine function we yield
instead of using qemu_aio_wait(). Note that QED's cache is already safe...

f8a2e5e3 12/05/2011 03:51 pm Stefan Hajnoczi

block: convert qcow2, qcow2, and vmdk to .bdrv_co_is_allocated()

The qcow2, qcow, and vmdk block drivers are based on coroutines. They have a
coroutine mutex which protects internal state. We can convert the
.bdrv_is_allocated() function to .bdrv_co_is_allocated() by holding the mutex...

03343166 12/05/2011 03:51 pm Kevin Wolf

qcow2: Cleanups and memleak fix in qcow2_snapshot_create

sn->id_str could be leaked before this. The rest of this patch changes
comments, fixes coding style or removes checks that are unnecessary with
g_malloc.

Signed-off-by: Kevin Wolf <>...

d1ea98d5 12/05/2011 03:51 pm Kevin Wolf

qcow2: Rework qcow2_snapshot_create error handling

Increase refcounts only after allocating a new L1 table has succeeded in
order to make leaks less likely. If writing the snapshot table fails,
revert in-memory state to be consistent with that on disk.

While at it, make it return the real error codes instead of -1....

589f284b 12/05/2011 03:51 pm Kevin Wolf

qcow2: Return real error in qcow2_snapshot_goto

Besides fixing the return code, this adds some comments that make clear
how the code works and that it potentially breaks images if we fail in
the wrong place. Actually fixing this is left for the next patch....

43a0cac4 12/05/2011 03:51 pm Kevin Wolf

qcow2: Fix order of refcount updates in qcow2_snapshot_goto

The refcount updates must be moved so that in the worst case we can get
cluster leaks, but refcounts may never be too low.

Signed-off-by: Kevin Wolf <>
Reviewed-by: Stefan Hajnoczi <>

9a476780 12/05/2011 03:51 pm Kevin Wolf

qcow2: Fix order in qcow2_snapshot_delete

First the snapshot must be deleted and only then the refcounts can be
decreased.

Signed-off-by: Kevin Wolf <>
Reviewed-by: Stefan Hajnoczi <>

e3f652b3 12/05/2011 03:51 pm Kevin Wolf

qcow2: Fix error path in qcow2_snapshot_load_tmp

If the bdrv_read() of the snapshot's L1 table fails, return the right
error code and make sure that the old L1 table is still loaded and we
don't break the BlockDriverState completely.

Signed-off-by: Kevin Wolf <>...

05c4af54 12/05/2011 03:51 pm Stefan Hajnoczi

block: use public bdrv_is_allocated() interface

There is no need for bdrv_commit() to use the BlockDriver
.bdrv_is_allocated() interface directly. Converting to the public
interface gives us the freedom to drop .bdrv_is_allocated() entirely in
favor of a new .bdrv_co_is_allocated() in the future....

376ae3f1 12/05/2011 03:51 pm Stefan Hajnoczi

block: add .bdrv_co_is_allocated()

This patch adds the .bdrv_co_is_allocated() interface which is identical
to .bdrv_is_allocated() but runs in coroutine context. Running in
coroutine context implies that other coroutines might be performing I/O
at the same time. Therefore it must be safe to run while the following...

View all revisions | View revisions

Also available in: Atom