[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 18/69] vmdk: Add vmdk_find_offset_in_cluster()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 18/69] vmdk: Add vmdk_find_offset_in_cluster() |
Date: |
Thu, 12 May 2016 16:34:58 +0200 |
This is a byte granularity version of vmdk_find_index_in_cluster().
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Fam Zheng <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] [PULL 10/69] block: Support AIO drivers in bdrv_driver_preadv/pwritev(), (continued)
- [Qemu-devel] [PULL 10/69] block: Support AIO drivers in bdrv_driver_preadv/pwritev(), Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 11/69] block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 17/69] vdi: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 20/69] vmdk: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 13/69] bochs: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 08/69] block: Introduce bdrv_driver_preadv(), Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 15/69] dmg: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 24/69] block: Remove BlockDriver.bdrv_read/write, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 21/69] vpc: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 14/69] cloop: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 18/69] vmdk: Add vmdk_find_offset_in_cluster(),
Kevin Wolf <=
- [Qemu-devel] [PULL 26/69] block: always compile-check debug prints, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 19/69] vmdk: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 22/69] vpc: Implement .bdrv_co_pwritev() interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 25/69] block: Fix typo in comment, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 27/69] Allow users to specify the vmdk virtual hardware version., Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 29/69] block: Allow BDRV_REQ_FUA through blk_pwrite(), Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 28/69] qemu-io: Fix memory leak in 'aio_write -z', Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 44/69] nbd: Switch to byte-based block access, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 30/69] block: Switch blk_read_unthrottled() to byte interface, Kevin Wolf, 2016/05/12
- [Qemu-devel] [PULL 39/69] onenand: Switch to byte-based block access, Kevin Wolf, 2016/05/12