[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 40/55] qcow2: Update discard_single_l2() to support L
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 40/55] qcow2: Update discard_single_l2() to support L2 slices |
Date: |
Tue, 13 Feb 2018 18:05:14 +0100 |
From: Alberto Garcia <address@hidden>
discard_single_l2() limits the number of clusters to be discarded
to the amount that fits inside an L2 table. Since we'll be loading
L2 slices instead of full tables we need to update that limit. The
function is renamed to discard_in_l2_slice() for clarity.
Apart from that, this function doesn't need any additional changes, so
this patch simply updates the variable name from l2_table to l2_slice.
Signed-off-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
---
block/qcow2-cluster.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index dbd57cd35f..62336960a5 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1631,32 +1631,32 @@ int qcow2_decompress_cluster(BlockDriverState *bs,
uint64_t cluster_offset)
/*
* This discards as many clusters of nb_clusters as possible at once (i.e.
- * all clusters in the same L2 table) and returns the number of discarded
+ * all clusters in the same L2 slice) and returns the number of discarded
* clusters.
*/
-static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
- uint64_t nb_clusters, enum qcow2_discard_type
type,
- bool full_discard)
+static int discard_in_l2_slice(BlockDriverState *bs, uint64_t offset,
+ uint64_t nb_clusters,
+ enum qcow2_discard_type type, bool full_discard)
{
BDRVQcow2State *s = bs->opaque;
- uint64_t *l2_table;
+ uint64_t *l2_slice;
int l2_index;
int ret;
int i;
- ret = get_cluster_table(bs, offset, &l2_table, &l2_index);
+ ret = get_cluster_table(bs, offset, &l2_slice, &l2_index);
if (ret < 0) {
return ret;
}
- /* Limit nb_clusters to one L2 table */
- nb_clusters = MIN(nb_clusters, s->l2_size - l2_index);
+ /* Limit nb_clusters to one L2 slice */
+ nb_clusters = MIN(nb_clusters, s->l2_slice_size - l2_index);
assert(nb_clusters <= INT_MAX);
for (i = 0; i < nb_clusters; i++) {
uint64_t old_l2_entry;
- old_l2_entry = be64_to_cpu(l2_table[l2_index + i]);
+ old_l2_entry = be64_to_cpu(l2_slice[l2_index + i]);
/*
* If full_discard is false, make sure that a discarded area reads back
@@ -1694,18 +1694,18 @@ static int discard_single_l2(BlockDriverState *bs,
uint64_t offset,
}
/* First remove L2 entries */
- qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_table);
+ qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_slice);
if (!full_discard && s->qcow_version >= 3) {
- l2_table[l2_index + i] = cpu_to_be64(QCOW_OFLAG_ZERO);
+ l2_slice[l2_index + i] = cpu_to_be64(QCOW_OFLAG_ZERO);
} else {
- l2_table[l2_index + i] = cpu_to_be64(0);
+ l2_slice[l2_index + i] = cpu_to_be64(0);
}
/* Then decrease the refcount */
qcow2_free_any_clusters(bs, old_l2_entry, 1, type);
}
- qcow2_cache_put(s->l2_table_cache, (void **) &l2_table);
+ qcow2_cache_put(s->l2_table_cache, (void **) &l2_slice);
return nb_clusters;
}
@@ -1729,10 +1729,10 @@ int qcow2_cluster_discard(BlockDriverState *bs,
uint64_t offset,
s->cache_discards = true;
- /* Each L2 table is handled by its own loop iteration */
+ /* Each L2 slice is handled by its own loop iteration */
while (nb_clusters > 0) {
- cleared = discard_single_l2(bs, offset, nb_clusters, type,
- full_discard);
+ cleared = discard_in_l2_slice(bs, offset, nb_clusters, type,
+ full_discard);
if (cleared < 0) {
ret = cleared;
goto fail;
--
2.13.6
- [Qemu-block] [PULL 30/55] qcow2: Add offset_to_l2_slice_index(), (continued)
- [Qemu-block] [PULL 30/55] qcow2: Add offset_to_l2_slice_index(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 27/55] qcow2: Remove BDS parameter from qcow2_cache_is_table_offset(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 31/55] qcow2: Update l2_load() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 32/55] qcow2: Prepare l2_allocate() for adding L2 slice support, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 34/55] qcow2: Refactor get_cluster_table(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 44/55] qcow2: Read refcount before L2 table in expand_zero_clusters_in_l1(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 41/55] qcow2: Update zero_single_l2() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 39/55] qcow2: Update handle_alloc() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 42/55] qcow2: Prepare qcow2_update_snapshot_refcount() for adding L2 slice support, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 36/55] qcow2: Update qcow2_get_cluster_offset() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 40/55] qcow2: Update discard_single_l2() to support L2 slices,
Kevin Wolf <=
- [Qemu-block] [PULL 43/55] qcow2: Update qcow2_update_snapshot_refcount() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 45/55] qcow2: Prepare expand_zero_clusters_in_l1() for adding L2 slice support, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 47/55] qcow2: Update qcow2_truncate() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 46/55] qcow2: Update expand_zero_clusters_in_l1() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 49/55] qcow2: Rename l2_table in count_contiguous_clusters(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 50/55] qcow2: Rename l2_table in count_contiguous_clusters_unallocated(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 51/55] qcow2: Rename l2_table in count_cow_clusters(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 48/55] qcow2: Rename l2_table in qcow2_alloc_compressed_cluster_offset(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 55/55] iotests: Add l2-cache-entry-size to iotest 137, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 54/55] iotests: Test downgrading an image using a small L2 slice size, Kevin Wolf, 2018/02/13