[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 11/17] vmdk: Add vmdk_find_offset_in_cluster()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH v2 11/17] vmdk: Add vmdk_find_offset_in_cluster() |
Date: |
Thu, 28 Apr 2016 15:16:40 +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
- [Qemu-devel] [PATCH v2 08/17] dmg: Implement .bdrv_co_preadv() interface, (continued)
- [Qemu-devel] [PATCH v2 08/17] dmg: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 06/17] bochs: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 10/17] vdi: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 05/17] block: Introduce .bdrv_co_preadv/pwritev BlockDriver function, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 15/17] vpc: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 07/17] cloop: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 11/17] vmdk: Add vmdk_find_offset_in_cluster(),
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 13/17] vmdk: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/28
- Re: [Qemu-devel] [PATCH v2 13/17] vmdk: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/04/29
[Qemu-devel] [PATCH v2 16/17] vvfat: Implement .bdrv_co_preadv/pwritev interfaces, Kevin Wolf, 2016/04/28
[Qemu-devel] [PATCH v2 17/17] block: Remove BlockDriver.bdrv_read/write, Kevin Wolf, 2016/04/28
[Qemu-devel] [PATCH v2 14/17] vpc: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28