[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 12/20] block: vhdx - remove BAT file offset bit s
From: |
Jeff Cody |
Subject: |
[Qemu-devel] [PATCH v6 12/20] block: vhdx - remove BAT file offset bit shifting |
Date: |
Wed, 25 Sep 2013 17:02:57 -0400 |
Bit shifting can be fun, but in this case it was unnecessary. The
upper 44 bits of the 64-bit BAT entry is specifies the File Offset,
so we shifted the bits to get access to the value.
However, per the spec the value is in MB. So we dutifully shifted back
to the left by 20 bits, to convert to a true uint64_t file offset.
This replaces those steps with just a bit mask, to get rid of the lower
20 bits instead.
Signed-off-by: Jeff Cody <address@hidden>
---
block/vhdx.c | 6 ++----
block/vhdx.h | 1 -
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/block/vhdx.c b/block/vhdx.c
index 129468c..9184ced 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -985,7 +985,7 @@ static void vhdx_block_translate(BDRVVHDXState *s, int64_t
sector_num,
sinfo->bytes_avail = sinfo->sectors_avail << s->logical_sector_size_bits;
- sinfo->file_offset = s->bat[sinfo->bat_idx] >> VHDX_BAT_FILE_OFF_BITS;
+ sinfo->file_offset = s->bat[sinfo->bat_idx] & VHDX_BAT_FILE_OFF_MASK;
sinfo->block_offset = block_offset << s->logical_sector_size_bits;
@@ -999,7 +999,6 @@ static void vhdx_block_translate(BDRVVHDXState *s, int64_t
sector_num,
* in the block, and add in the payload data block offset
* in the file, in bytes, to get the final read address */
- sinfo->file_offset <<= 20; /* now in bytes, rather than 1MB units */
sinfo->file_offset += sinfo->block_offset;
}
@@ -1098,8 +1097,7 @@ static void vhdx_update_bat_table_entry(BlockDriverState
*bs, BDRVVHDXState *s,
{
/* The BAT entry is a uint64, with 44 bits for the file offset in units of
* 1MB, and 3 bits for the block state. */
- s->bat[sinfo->bat_idx] = ((sinfo->file_offset>>20) <<
- VHDX_BAT_FILE_OFF_BITS);
+ s->bat[sinfo->bat_idx] = sinfo->file_offset;
s->bat[sinfo->bat_idx] |= state & VHDX_BAT_STATE_BIT_MASK;
diff --git a/block/vhdx.h b/block/vhdx.h
index 4f32c01..42089d3 100644
--- a/block/vhdx.h
+++ b/block/vhdx.h
@@ -229,7 +229,6 @@ typedef struct QEMU_PACKED VHDXLogDataSector {
/* upper 44 bits are the file offset in 1MB units lower 3 bits are the state
other bits are reserved */
#define VHDX_BAT_STATE_BIT_MASK 0x07
-#define VHDX_BAT_FILE_OFF_BITS (64 - 44)
#define VHDX_BAT_FILE_OFF_MASK 0xFFFFFFFFFFF00000 /* upper 44 bits */
typedef uint64_t VHDXBatEntry;
--
1.8.3.1
- [Qemu-devel] [PATCH v6 02/20] block: vhdx - add header update capability., (continued)
- [Qemu-devel] [PATCH v6 02/20] block: vhdx - add header update capability., Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 03/20] block: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to header., Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 04/20] block: vhdx - log support struct and defines, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 05/20] block: vhdx - break endian translation functions out, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 06/20] block: vhdx - update log guid in header, and first write tracker, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 07/20] block: vhdx code movement - move vhdx_close() above vhdx_open(), Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 08/20] block: vhdx - log parsing, replay, and flush support, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 09/20] block: vhdx - add region overlap detection for image files, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 10/20] block: vhdx - add log write support, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 11/20] block: vhdx write support, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 12/20] block: vhdx - remove BAT file offset bit shifting,
Jeff Cody <=
- [Qemu-devel] [PATCH v6 13/20] block: vhdx - move more endian translations to vhdx-endian.c, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 14/20] block: vhdx - break out code operations to functions, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 15/20] block: vhdx - fix comment typos in header, fix incorrect struct fields, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 16/20] block: vhdx - add .bdrv_create() support, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 18/20] block: qemu-iotests for vhdx, read sample dynamic image, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 17/20] block: qemu-iotests - add basic ability to use binary sample images, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 19/20] block: vhdx - update _make_test_img() to filter out vhdx options, Jeff Cody, 2013/09/25
- [Qemu-devel] [PATCH v6 20/20] block: qemu-iotests for vhdx, add write test support, Jeff Cody, 2013/09/25