[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 11/17] vmdk: Add vmdk_find_offset_in_cluster()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 11/17] vmdk: Add vmdk_find_offset_in_cluster() |
Date: |
Wed, 27 Apr 2016 11:52:41 +0200 |
This is a byte granularity version of vmdk_find_index_in_cluster().
Signed-off-by: Kevin Wolf <address@hidden>
---
block/vmdk.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/block/vmdk.c b/block/vmdk.c
index 45f9d3c..f1e01f9 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -1259,15 +1259,26 @@ static VmdkExtent *find_extent(BDRVVmdkState *s,
return NULL;
}
+static inline uint64_t vmdk_find_offset_in_cluster(VmdkExtent *extent,
+ int64_t offset)
+{
+ uint64_t offset_in_cluster, extent_begin_offset, extent_relative_offset;
+ uint64_t cluster_size = extent->cluster_sectors * BDRV_SECTOR_SIZE;
+
+ extent_begin_offset =
+ (extent->end_sector - extent->sectors) * BDRV_SECTOR_SIZE;
+ extent_relative_offset = offset - extent_begin_offset;
+ offset_in_cluster = extent_relative_offset % cluster_size;
+
+ return offset_in_cluster;
+}
+
static inline uint64_t vmdk_find_index_in_cluster(VmdkExtent *extent,
int64_t sector_num)
{
- uint64_t index_in_cluster, extent_begin_sector, extent_relative_sector_num;
-
- extent_begin_sector = extent->end_sector - extent->sectors;
- extent_relative_sector_num = sector_num - extent_begin_sector;
- index_in_cluster = extent_relative_sector_num % extent->cluster_sectors;
- return index_in_cluster;
+ uint64_t offset;
+ offset = vmdk_find_offset_in_cluster(extent, sector_num *
BDRV_SECTOR_SIZE);
+ return offset / BDRV_SECTOR_SIZE;
}
static int64_t coroutine_fn vmdk_co_get_block_status(BlockDriverState *bs,
--
1.8.3.1
- Re: [Qemu-devel] [PATCH 04/17] block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev, (continued)
- [Qemu-devel] [PATCH 05/17] block: Introduce .bdrv_co_preadv/pwritev BlockDriver function, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 07/17] cloop: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 08/17] dmg: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 09/17] vdi: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 10/17] vdi: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 11/17] vmdk: Add vmdk_find_offset_in_cluster(),
Kevin Wolf <=
- [Qemu-devel] [PATCH 06/17] bochs: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 12/17] vmdk: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 13/17] vmdk: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/27
- [Qemu-devel] [PATCH 15/17] vpc: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/27