qemu-e2k/block
Pavel Butsykin 13b9414b57 drive-backup: added support for data compression
The idea is simple - backup is "written-once" data. It is written block
by block and it is large enough. It would be nice to save storage
space and compress it.

The patch adds a flag to the qmp/hmp drive-backup command which enables
block compression. Compression should be implemented in the format driver
to enable this feature.

There are some limitations of the format driver to allow compressed writes.
We can write data only once. Though for backup this is perfectly fine.
These limitations are maintained by the driver and the error will be
reported if we are doing something wrong.

Signed-off-by: Pavel Butsykin <pbutsykin@virtuozzo.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Jeff Cody <jcody@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
CC: Eric Blake <eblake@redhat.com>
CC: John Snow <jsnow@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2016-09-05 19:06:48 +02:00
..
accounting.c
archipelago.c
backup.c drive-backup: added support for data compression 2016-09-05 19:06:48 +02:00
blkdebug.c block/blkdebug: Store config filename 2016-08-15 15:52:28 +02:00
blkreplay.c blkreplay: Switch .bdrv_co_discard() to byte-based 2016-07-20 14:11:55 +01:00
blkverify.c block: Convert bdrv_aio_writev() to BdrvChild 2016-07-05 16:46:26 +02:00
block-backend.c block: remove BlockDriver.bdrv_write_compressed 2016-09-05 19:06:48 +02:00
bochs.c block: Convert bdrv_co_preadv/pwritev to BdrvChild 2016-07-05 16:46:27 +02:00
cloop.c block: Convert bdrv_pread(v) to BdrvChild 2016-07-05 16:46:27 +02:00
commit.c Improve block job rate limiting for small bandwidth values 2016-07-13 13:41:38 +02:00
crypto.c block: export LUKS specific data to qemu-img info 2016-07-26 17:46:37 +02:00
curl.c curl: Cast fd to int for DPRINTF 2016-08-17 19:57:54 +08:00
dirty-bitmap.c dirty-bitmap: operate with int64_t amount 2016-07-19 16:54:46 -04:00
dmg.c block: Convert bdrv_pread(v) to BdrvChild 2016-07-05 16:46:27 +02:00
gluster.c Pull request 2016-07-21 11:00:36 +01:00
io.c block/io: turn on dirty_bitmaps for the compressed writes 2016-09-05 19:06:48 +02:00
iscsi.c iscsi: Switch .bdrv_co_discard() to byte-based 2016-07-20 14:24:25 +01:00
linux-aio.c linux-aio: Handle io_submit() failure gracefully 2016-08-11 09:42:35 +01:00
Makefile.objs block: Move bdrv_commit() to block/commit.c 2016-07-05 16:46:27 +02:00
mirror.c mirror: finish earlier on error 2016-08-08 13:05:43 +02:00
nbd-client.c nbd: Convert to byte-based interface 2016-07-20 14:24:25 +01:00
nbd-client.h nbd: Limit nbdflags to 16 bits 2016-08-03 18:44:56 +02:00
nbd.c block/nbd: Store runtime option values 2016-08-15 15:52:29 +02:00
nfs.c coroutine: move entry argument to qemu_coroutine_create 2016-07-13 13:26:02 +02:00
null.c
parallels.c block/parallels: check new image size 2016-08-05 09:59:06 +01:00
qapi.c qapi: Add new visit_complete() function 2016-07-06 10:52:04 +02:00
qcow2-cache.c block: Convert bdrv_pwrite(v/_sync) to BdrvChild 2016-07-05 16:46:27 +02:00
qcow2-cluster.c qcow2: Fix qcow2_get_cluster_offset() 2016-07-13 13:41:38 +02:00
qcow2-refcount.c block: Convert bdrv_discard() to byte-based 2016-07-20 14:11:55 +01:00
qcow2-snapshot.c block: Convert bdrv_pwrite(v/_sync) to BdrvChild 2016-07-05 16:46:27 +02:00
qcow2.c qcow2: cleanup qcow2_co_pwritev_compressed to avoid the recursion 2016-09-05 19:06:48 +02:00
qcow2.h
qcow.c qcow: cleanup qcow_co_pwritev_compressed to avoid the recursion 2016-09-05 19:06:48 +02:00
qed-check.c
qed-cluster.c
qed-gencb.c
qed-l2-cache.c
qed-table.c block: Convert bdrv_aio_writev() to BdrvChild 2016-07-05 16:46:26 +02:00
qed.c coroutine: move entry argument to qemu_coroutine_create 2016-07-13 13:26:02 +02:00
qed.h
quorum.c block: Convert bdrv_aio_writev() to BdrvChild 2016-07-05 16:46:26 +02:00
raw_bsd.c raw_bsd: Convert to byte-based interface 2016-07-20 14:24:25 +01:00
raw-posix.c block: Convert .bdrv_aio_discard() to byte-based 2016-07-20 14:11:55 +01:00
raw-win32.c raw-posix: Switch paio_submit() to byte-based 2016-07-20 14:11:55 +01:00
rbd.c block: Convert .bdrv_aio_discard() to byte-based 2016-07-20 14:11:55 +01:00
sheepdog.c sheepdog: Switch .bdrv_co_discard() to byte-based 2016-07-20 14:24:25 +01:00
snapshot.c
ssh.c block/ssh: Use QemuOpts for runtime options 2016-08-15 15:52:28 +02:00
stream.c Improve block job rate limiting for small bandwidth values 2016-07-13 13:41:38 +02:00
throttle-groups.c
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
vdi.c block: Convert bdrv_co_preadv/pwritev to BdrvChild 2016-07-05 16:46:27 +02:00
vhdx-endian.c
vhdx-log.c block: Convert bdrv_pwrite(v/_sync) to BdrvChild 2016-07-05 16:46:27 +02:00
vhdx.c block: Convert bdrv_pwrite(v/_sync) to BdrvChild 2016-07-05 16:46:27 +02:00
vhdx.h
vmdk.c vmdk: add vmdk_co_pwritev_compressed 2016-09-05 19:06:48 +02:00
vpc.c block: Convert bdrv_co_preadv/pwritev to BdrvChild 2016-07-05 16:46:27 +02:00
vvfat.c vvfat: Fix qcow write target driver specification 2016-07-13 13:41:39 +02:00
win32-aio.c linux-aio: share one LinuxAioState within an AioContext 2016-07-18 15:09:31 +01:00
write-threshold.c