[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 18/31] qcow2: Update qcow2_get_cluster_offset()
From: |
Alberto Garcia |
Subject: |
Re: [Qemu-devel] [PATCH 18/31] qcow2: Update qcow2_get_cluster_offset() to support L2 slices |
Date: |
Fri, 13 Oct 2017 14:52:43 +0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Thu, Oct 12, 2017 at 04:05:32PM +0300, Alberto Garcia wrote:
> @@ -522,8 +522,8 @@ int qcow2_get_cluster_offset(BlockDriverState *bs,
> uint64_t offset,
> {
> BDRVQcow2State *s = bs->opaque;
> unsigned int l2_index;
> - uint64_t l1_index, l2_offset, *l2_table;
> - int l1_bits, c;
> + uint64_t l1_index, l2_offset, *l2_slice;
> + int c;
> unsigned int offset_in_cluster;
> uint64_t bytes_available, bytes_needed, nb_clusters;
> QCow2ClusterType type;
> @@ -532,12 +532,11 @@ int qcow2_get_cluster_offset(BlockDriverState *bs,
> uint64_t offset,
> offset_in_cluster = offset_into_cluster(s, offset);
> bytes_needed = (uint64_t) *bytes + offset_in_cluster;
>
> - l1_bits = s->l2_bits + s->cluster_bits;
> -
> /* compute how many bytes there are between the start of the cluster
> - * containing offset and the end of the l1 entry */
> - bytes_available = (1ULL << l1_bits) - (offset & ((1ULL << l1_bits) - 1))
> - + offset_in_cluster;
> + * containing offset and the end of the l2 slice that contains
> + * the entry pointing to it */
> + bytes_available = (s->l2_slice_size - offset_to_l2_slice_index(s,
> offset))
> + << s->cluster_bits;
There's a mistake here, this should be cast to uint64_t before doing
the shift, else it overflows if the cluster size is large:
bytes_available =
((uint64_t) (s->l2_slice_size - offset_to_l2_slice_index(s, offset)))
<< s->cluster_bits;
The next revision will have this correction, but I'm not sending it
now, so if you want to test/review this one please go ahead.
Berto
- [Qemu-devel] [PATCH 26/31] qcow2: Update qcow2_truncate() to support L2 slices, (continued)
- [Qemu-devel] [PATCH 26/31] qcow2: Update qcow2_truncate() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 29/31] qcow2: Rename l2_table in count_contiguous_clusters_unallocated(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 25/31] qcow2: Update expand_zero_clusters_in_l1() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 24/31] qcow2: Update qcow2_update_snapshot_refcount() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 23/31] qcow2: Update zero_single_l2() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 22/31] qcow2: Update discard_single_l2() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 21/31] qcow2: Update handle_alloc() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 20/31] qcow2: Update handle_copied() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 19/31] qcow2: Update qcow2_alloc_cluster_link_l2() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 18/31] qcow2: Update qcow2_get_cluster_offset() to support L2 slices, Alberto Garcia, 2017/10/12
- Re: [Qemu-devel] [PATCH 18/31] qcow2: Update qcow2_get_cluster_offset() to support L2 slices,
Alberto Garcia <=
- [Qemu-devel] [PATCH 08/31] qcow2: Remove BDS parameter from qcow2_cache_destroy(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 10/31] qcow2: Remove BDS parameter from qcow2_cache_discard(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 12/31] qcow2: Add offset_to_l1_index(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 07/31] qcow2: Remove BDS parameter from qcow2_cache_put(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 16/31] qcow2: Update l2_allocate() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 11/31] qcow2: Remove BDS parameter from qcow2_cache_is_table_offset(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 06/31] qcow2: Remove BDS parameter from qcow2_cache_entry_mark_dirty(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 15/31] qcow2: Update l2_load() to support L2 slices, Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 05/31] qcow2: Remove BDS parameter from qcow2_cache_table_release(), Alberto Garcia, 2017/10/12
- [Qemu-devel] [PATCH 14/31] qcow2: Add offset_to_l2_slice_index(), Alberto Garcia, 2017/10/12