qcow2: Nicer variable names in qcow2_update_snapshot_refcount()
In order to keep checkpatch happy when the next patch changes indentation, we first have to shorten some long lines. The easiest approach is to use a new variable in place of 'offset & L2E_OFFSET_MASK', except that 'offset' is the best name for that variable. Change '[old_]offset' to '[old_]entry' to make room. While touching things, also fix checkpatch warnings about unusual 'for' statements. Suggested by Max Reitz <mreitz@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com> Message-id: 20170507000552.20847-2-eblake@redhat.com Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
40812d9373
commit
b32cbae111
@ -1059,9 +1059,9 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
|
|||||||
int64_t l1_table_offset, int l1_size, int addend)
|
int64_t l1_table_offset, int l1_size, int addend)
|
||||||
{
|
{
|
||||||
BDRVQcow2State *s = bs->opaque;
|
BDRVQcow2State *s = bs->opaque;
|
||||||
uint64_t *l1_table, *l2_table, l2_offset, offset, l1_size2, refcount;
|
uint64_t *l1_table, *l2_table, l2_offset, entry, l1_size2, refcount;
|
||||||
bool l1_allocated = false;
|
bool l1_allocated = false;
|
||||||
int64_t old_offset, old_l2_offset;
|
int64_t old_entry, old_l2_offset;
|
||||||
int i, j, l1_modified = 0, nb_csectors;
|
int i, j, l1_modified = 0, nb_csectors;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1089,15 +1089,16 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0;i < l1_size; i++)
|
for (i = 0; i < l1_size; i++) {
|
||||||
be64_to_cpus(&l1_table[i]);
|
be64_to_cpus(&l1_table[i]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
assert(l1_size == s->l1_size);
|
assert(l1_size == s->l1_size);
|
||||||
l1_table = s->l1_table;
|
l1_table = s->l1_table;
|
||||||
l1_allocated = false;
|
l1_allocated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < l1_size; i++) {
|
for (i = 0; i < l1_size; i++) {
|
||||||
l2_offset = l1_table[i];
|
l2_offset = l1_table[i];
|
||||||
if (l2_offset) {
|
if (l2_offset) {
|
||||||
old_l2_offset = l2_offset;
|
old_l2_offset = l2_offset;
|
||||||
@ -1117,20 +1118,22 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(j = 0; j < s->l2_size; j++) {
|
for (j = 0; j < s->l2_size; j++) {
|
||||||
uint64_t cluster_index;
|
uint64_t cluster_index;
|
||||||
|
uint64_t offset;
|
||||||
|
|
||||||
offset = be64_to_cpu(l2_table[j]);
|
entry = be64_to_cpu(l2_table[j]);
|
||||||
old_offset = offset;
|
old_entry = entry;
|
||||||
offset &= ~QCOW_OFLAG_COPIED;
|
entry &= ~QCOW_OFLAG_COPIED;
|
||||||
|
offset = entry & L2E_OFFSET_MASK;
|
||||||
|
|
||||||
switch (qcow2_get_cluster_type(offset)) {
|
switch (qcow2_get_cluster_type(entry)) {
|
||||||
case QCOW2_CLUSTER_COMPRESSED:
|
case QCOW2_CLUSTER_COMPRESSED:
|
||||||
nb_csectors = ((offset >> s->csize_shift) &
|
nb_csectors = ((entry >> s->csize_shift) &
|
||||||
s->csize_mask) + 1;
|
s->csize_mask) + 1;
|
||||||
if (addend != 0) {
|
if (addend != 0) {
|
||||||
ret = update_refcount(bs,
|
ret = update_refcount(bs,
|
||||||
(offset & s->cluster_offset_mask) & ~511,
|
(entry & s->cluster_offset_mask) & ~511,
|
||||||
nb_csectors * 512, abs(addend), addend < 0,
|
nb_csectors * 512, abs(addend), addend < 0,
|
||||||
QCOW2_DISCARD_SNAPSHOT);
|
QCOW2_DISCARD_SNAPSHOT);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -1143,18 +1146,17 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
|
|||||||
|
|
||||||
case QCOW2_CLUSTER_NORMAL:
|
case QCOW2_CLUSTER_NORMAL:
|
||||||
case QCOW2_CLUSTER_ZERO:
|
case QCOW2_CLUSTER_ZERO:
|
||||||
if (offset_into_cluster(s, offset & L2E_OFFSET_MASK)) {
|
if (offset_into_cluster(s, offset)) {
|
||||||
qcow2_signal_corruption(bs, true, -1, -1, "Data "
|
qcow2_signal_corruption(bs, true, -1, -1, "Data "
|
||||||
"cluster offset %#llx "
|
"cluster offset %#" PRIx64
|
||||||
"unaligned (L2 offset: %#"
|
" unaligned (L2 offset: %#"
|
||||||
PRIx64 ", L2 index: %#x)",
|
PRIx64 ", L2 index: %#x)",
|
||||||
offset & L2E_OFFSET_MASK,
|
offset, l2_offset, j);
|
||||||
l2_offset, j);
|
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
cluster_index = (offset & L2E_OFFSET_MASK) >> s->cluster_bits;
|
cluster_index = offset >> s->cluster_bits;
|
||||||
if (!cluster_index) {
|
if (!cluster_index) {
|
||||||
/* unallocated */
|
/* unallocated */
|
||||||
refcount = 0;
|
refcount = 0;
|
||||||
@ -1184,14 +1186,14 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (refcount == 1) {
|
if (refcount == 1) {
|
||||||
offset |= QCOW_OFLAG_COPIED;
|
entry |= QCOW_OFLAG_COPIED;
|
||||||
}
|
}
|
||||||
if (offset != old_offset) {
|
if (entry != old_entry) {
|
||||||
if (addend > 0) {
|
if (addend > 0) {
|
||||||
qcow2_cache_set_dependency(bs, s->l2_table_cache,
|
qcow2_cache_set_dependency(bs, s->l2_table_cache,
|
||||||
s->refcount_block_cache);
|
s->refcount_block_cache);
|
||||||
}
|
}
|
||||||
l2_table[j] = cpu_to_be64(offset);
|
l2_table[j] = cpu_to_be64(entry);
|
||||||
qcow2_cache_entry_mark_dirty(bs, s->l2_table_cache,
|
qcow2_cache_entry_mark_dirty(bs, s->l2_table_cache,
|
||||||
l2_table);
|
l2_table);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user