qemu-e2k/block
Alberto Garcia 3861946a5b qcow2: Update l2_allocate() to support L2 slices
This patch updates l2_allocate() to support the qcow2 cache returning
L2 slices instead of full L2 tables.

The old code simply gets an L2 table from the cache and initializes it
with zeroes or with the contents of an existing table. With a cache
that returns slices instead of tables the idea remains the same, but
the code must now iterate over all the slices that are contained in an
L2 table.

Since now we're operating with slices the function can no longer
return the newly-allocated table, so it's up to the caller to retrieve
the appropriate L2 slice after calling l2_allocate() (note that with
this patch the caller is still loading full L2 tables, but we'll deal
with that in a separate patch).

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 20fc0415bf0e011e29f6487ec86eb06a11f37445.1517840877.git.berto@igalia.com
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
2018-02-13 16:59:59 +01:00
..
Makefile.objs block: Add VFIO based NVMe driver 2018-02-08 09:22:03 +08:00
accounting.c block: make accounting thread-safe 2017-06-16 07:55:00 +08:00
backup.c backup: use copy_bitmap in incremental backup 2017-12-18 10:54:13 -05:00
blkdebug.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
blkreplay.c block: change variable names in BlockDriverState 2017-06-26 14:54:46 +02:00
blkverify.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
block-backend.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
bochs.c block: Deprecate bdrv_set_read_only() and users 2017-11-17 13:35:59 +01:00
cloop.c block: Deprecate bdrv_set_read_only() and users 2017-11-17 13:35:59 +01:00
commit.c commit: Simplify reopen of base 2017-12-22 15:05:32 +01:00
crypto.c block: Simplify bdrv_can_write_zeroes_with_unmap() 2018-02-09 12:32:44 -06:00
crypto.h qcow: convert QCow to use QCryptoBlock for encryption 2017-07-11 17:44:56 +02:00
curl.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
dirty-bitmap.c block: maintain persistent disabled bitmaps 2018-02-13 16:59:58 +01:00
dmg-bz2.c dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
dmg.c block: Deprecate bdrv_set_read_only() and users 2017-11-17 13:35:59 +01:00
dmg.h block: remove "qemu/osdep.h" from header file 2017-12-18 17:07:02 +03:00
file-posix.c block: Simplify bdrv_can_write_zeroes_with_unmap() 2018-02-09 12:32:44 -06:00
file-win32.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
gluster.c gluster: Add preallocated truncation 2018-02-13 16:18:35 +01:00
io.c block: Introduce buf register API 2018-02-08 09:22:03 +08:00
iscsi-opts.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
iscsi.c block: Simplify bdrv_can_write_zeroes_with_unmap() 2018-02-09 12:32:44 -06:00
linux-aio.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
mirror.c blockjob: remove clock argument from block_job_sleep_ns 2017-11-29 15:11:02 +01:00
nbd-client.c nbd: Don't crash when server reports NBD_CMD_READ failure 2017-11-17 08:02:45 -06:00
nbd-client.h nbd: Minimal structured read for client 2017-10-30 21:48:41 +01:00
nbd.c block: Simplify bdrv_can_write_zeroes_with_unmap() 2018-02-09 12:32:44 -06:00
nfs.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
null.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
nvme.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
parallels.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
parallels.h Clean up includes 2018-02-09 05:05:11 +01:00
qapi.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
qcow.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
qcow2-bitmap.c block: maintain persistent disabled bitmaps 2018-02-13 16:59:58 +01:00
qcow2-cache.c qcow2: Remove BDS parameter from qcow2_cache_is_table_offset() 2018-02-13 16:59:59 +01:00
qcow2-cluster.c qcow2: Update l2_allocate() to support L2 slices 2018-02-13 16:59:59 +01:00
qcow2-refcount.c qcow2: Remove BDS parameter from qcow2_cache_is_table_offset() 2018-02-13 16:59:59 +01:00
qcow2-snapshot.c qcow2: Discard/zero clusters by byte count 2017-05-11 14:28:07 +02:00
qcow2.c qcow2: Add l2_slice_size field to BDRVQcow2State 2018-02-13 16:59:59 +01:00
qcow2.h qcow2: Add offset_to_l2_slice_index() 2018-02-13 16:59:59 +01:00
qed-check.c qed: Use DIV_ROUND_UP 2016-06-07 18:19:24 +03:00
qed-cluster.c qed: protect table cache with CoMutex 2017-07-17 11:34:11 +08:00
qed-l2-cache.c qed: protect table cache with CoMutex 2017-07-17 11:34:11 +08:00
qed-table.c qed: protect table cache with CoMutex 2017-07-17 11:34:11 +08:00
qed.c block: Simplify bdrv_can_write_zeroes_with_unmap() 2018-02-09 12:32:44 -06:00
qed.h qed: protect table cache with CoMutex 2017-07-17 11:34:11 +08:00
quorum.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
raw-format.c block: remove unused bdrv_media_changed 2017-09-04 18:31:13 +02:00
rbd.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
replication.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
sheepdog.c sheepdog: Allow fully preallocated truncation 2018-02-13 16:18:41 +01:00
snapshot.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
ssh.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
stream.c blockjob: remove clock argument from block_job_sleep_ns 2017-11-29 15:11:02 +01:00
throttle-groups.c throttle-groups: forget timer and schedule next TGM on detach 2017-11-16 14:12:57 +00:00
throttle.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
trace-events block: Add VFIO based NVMe driver 2018-02-08 09:22:03 +08:00
vdi.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
vhdx-endian.c vhdx: Use QEMU UUID API 2016-09-23 11:42:52 +08:00
vhdx-log.c vhdx: use QEMU_ALIGN_DOWN 2017-08-31 12:29:07 +02:00
vhdx.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
vhdx.h block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec 2014-12-12 15:42:22 +00:00
vmdk.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
vpc.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
vvfat.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
vxhs.c qobject: Use simpler QDict/QList scalar insertion macros 2017-05-09 09:13:51 +02:00
win32-aio.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
write-threshold.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00