diff options
| author | Jeff Cody | 2014-08-06 21:54:58 +0200 |
|---|---|---|
| committer | Kevin Wolf | 2014-08-15 15:07:14 +0200 |
| commit | 4f75b52a07e0a0e71c1c81d0cb0ddf9c52c8e1bc (patch) | |
| tree | 4725d765df96358203dcaed03f633e465685294a /block/vhdx-endian.c | |
| parent | block: vhdx - add error check (diff) | |
| download | qemu-4f75b52a07e0a0e71c1c81d0cb0ddf9c52c8e1bc.tar.gz qemu-4f75b52a07e0a0e71c1c81d0cb0ddf9c52c8e1bc.tar.xz qemu-4f75b52a07e0a0e71c1c81d0cb0ddf9c52c8e1bc.zip | |
block: VHDX endian fixes
This patch contains several changes for endian conversion fixes for
VHDX, particularly for big-endian machines (multibyte values in VHDX are
all on disk in LE format).
Tests were done with existing qemu-iotests on an IBM POWER7 (8406-71Y).
This includes sample images created by Hyper-V, both with dirty logs and
without.
In addition, VHDX image files created (and written to) on a BE machine
were tested on a LE machine, and vice-versa.
Reported-by: Markus Armburster <armbru@redhat.com>
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/vhdx-endian.c')
| -rw-r--r-- | block/vhdx-endian.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/block/vhdx-endian.c b/block/vhdx-endian.c index fe879ed995..0640d3f4a9 100644 --- a/block/vhdx-endian.c +++ b/block/vhdx-endian.c @@ -82,8 +82,6 @@ void vhdx_log_desc_le_import(VHDXLogDescriptor *d) assert(d != NULL); le32_to_cpus(&d->signature); - le32_to_cpus(&d->trailing_bytes); - le64_to_cpus(&d->leading_bytes); le64_to_cpus(&d->file_offset); le64_to_cpus(&d->sequence_number); } @@ -99,6 +97,15 @@ void vhdx_log_desc_le_export(VHDXLogDescriptor *d) cpu_to_le64s(&d->sequence_number); } +void vhdx_log_data_le_import(VHDXLogDataSector *d) +{ + assert(d != NULL); + + le32_to_cpus(&d->data_signature); + le32_to_cpus(&d->sequence_high); + le32_to_cpus(&d->sequence_low); +} + void vhdx_log_data_le_export(VHDXLogDataSector *d) { assert(d != NULL); |
