[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 25/39] qcow2: Update zero_single_l2() to support
From: |
Alberto Garcia |
Subject: |
[Qemu-devel] [PATCH v4 25/39] qcow2: Update zero_single_l2() to support L2 slices |
Date: |
Mon, 5 Feb 2018 16:33:25 +0200 |
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>
---
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 95419eff38..068d1ee0a0 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1753,33 +1753,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
@@ -1791,16 +1791,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;
}
@@ -1824,13 +1824,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.11.0
- [Qemu-devel] [PATCH v4 33/39] qcow2: Rename l2_table in count_contiguous_clusters(), (continued)
- [Qemu-devel] [PATCH v4 33/39] qcow2: Rename l2_table in count_contiguous_clusters(), Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 39/39] iotests: Add l2-cache-entry-size to iotest 137, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 22/39] qcow2: Update handle_copied() to support L2 slices, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 28/39] qcow2: Read refcount before L2 table in expand_zero_clusters_in_l1(), Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 27/39] qcow2: Update qcow2_update_snapshot_refcount() to support L2 slices, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 26/39] qcow2: Prepare qcow2_update_snapshot_refcount() for adding L2 slice support, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 14/39] qcow2: Add offset_to_l2_slice_index(), Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 21/39] qcow2: Update qcow2_alloc_cluster_link_l2() to support L2 slices, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 25/39] qcow2: Update zero_single_l2() to support L2 slices,
Alberto Garcia <=
- [Qemu-devel] [PATCH v4 19/39] qcow2: Update get_cluster_table() to support L2 slices, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 29/39] qcow2: Prepare expand_zero_clusters_in_l1() for adding L2 slice support, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 16/39] qcow2: Prepare l2_allocate() for adding L2 slice support, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 23/39] qcow2: Update handle_alloc() to support L2 slices, Alberto Garcia, 2018/02/05
- [Qemu-devel] [PATCH v4 18/39] qcow2: Refactor get_cluster_table(), Alberto Garcia, 2018/02/05
- Re: [Qemu-devel] [PATCH v4 00/39] Allow configuring the qcow2 L2 cache entry size, Max Reitz, 2018/02/05
- Re: [Qemu-devel] [PATCH v4 00/39] Allow configuring the qcow2 L2 cache entry size, Max Reitz, 2018/02/13