[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 41/55] qcow2: Update zero_single_l2() to support L2 s
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 41/55] qcow2: Update zero_single_l2() to support L2 slices |
Date: |
Tue, 13 Feb 2018 18:05:15 +0100 |
From: Alberto Garcia <address@hidden>
zero_single_l2() limits the number of clusters to be zeroed 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 zero_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 | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 62336960a5..f440105f6c 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1752,33 +1752,33 @@ fail:
/*
* This zeroes as many clusters of nb_clusters as possible at once (i.e.
- * all clusters in the same L2 table) and returns the number of zeroed
+ * all clusters in the same L2 slice) and returns the number of zeroed
* clusters.
*/
-static int zero_single_l2(BlockDriverState *bs, uint64_t offset,
- uint64_t nb_clusters, int flags)
+static int zero_in_l2_slice(BlockDriverState *bs, uint64_t offset,
+ uint64_t nb_clusters, int flags)
{
BDRVQcow2State *s = bs->opaque;
- uint64_t *l2_table;
+ uint64_t *l2_slice;
int l2_index;
int ret;
int i;
bool unmap = !!(flags & BDRV_REQ_MAY_UNMAP);
- 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_offset;
QCow2ClusterType cluster_type;
- old_offset = be64_to_cpu(l2_table[l2_index + i]);
+ old_offset = be64_to_cpu(l2_slice[l2_index + i]);
/*
* Minimize L2 changes if the cluster already reads back as
@@ -1790,16 +1790,16 @@ static int zero_single_l2(BlockDriverState *bs,
uint64_t offset,
continue;
}
- qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_table);
+ qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_slice);
if (cluster_type == QCOW2_CLUSTER_COMPRESSED || unmap) {
- l2_table[l2_index + i] = cpu_to_be64(QCOW_OFLAG_ZERO);
+ l2_slice[l2_index + i] = cpu_to_be64(QCOW_OFLAG_ZERO);
qcow2_free_any_clusters(bs, old_offset, 1, QCOW2_DISCARD_REQUEST);
} else {
- l2_table[l2_index + i] |= cpu_to_be64(QCOW_OFLAG_ZERO);
+ l2_slice[l2_index + i] |= cpu_to_be64(QCOW_OFLAG_ZERO);
}
}
- qcow2_cache_put(s->l2_table_cache, (void **) &l2_table);
+ qcow2_cache_put(s->l2_table_cache, (void **) &l2_slice);
return nb_clusters;
}
@@ -1823,13 +1823,13 @@ int qcow2_cluster_zeroize(BlockDriverState *bs,
uint64_t offset,
return -ENOTSUP;
}
- /* Each L2 table is handled by its own loop iteration */
+ /* Each L2 slice is handled by its own loop iteration */
nb_clusters = size_to_clusters(s, bytes);
s->cache_discards = true;
while (nb_clusters > 0) {
- cleared = zero_single_l2(bs, offset, nb_clusters, flags);
+ cleared = zero_in_l2_slice(bs, offset, nb_clusters, flags);
if (cleared < 0) {
ret = cleared;
goto fail;
--
2.13.6
- [Qemu-block] [PULL 35/55] qcow2: Update get_cluster_table() to support L2 slices, (continued)
- [Qemu-block] [PULL 35/55] qcow2: Update get_cluster_table() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 33/55] qcow2: Update l2_allocate() to support L2 slices, Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 25/55] qcow2: Remove BDS parameter from qcow2_cache_clean_unused(), Kevin Wolf, 2018/02/13
- [Qemu-block] [PULL 38/55] qcow2: Update handle_copied() to support L2 slices, Kevin Wolf, 2018/02/13
- [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 <=
- [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, 2018/02/13
- [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