vmdk: fix L1 and L2 table size in vmdk3 open

VMDK3 header has the field l1dir_size, but vmdk_open_vmdk3 hardcoded the
value. This patch honors the header field.

And the L2 table size is 4096 according to VMDK spec[1], instead of
1 << 9 (512).

[1]:
http://www.vmware.com/support/developer/vddk/vmdk_50_technote.pdf?src=vmdk

Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Fam Zheng 2013-08-19 18:54:26 +08:00 committed by Stefan Hajnoczi
parent b0651b8c24
commit f6b61e54bd

View File

@ -494,14 +494,14 @@ static int vmdk_open_vmdk3(BlockDriverState *bs,
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ret = vmdk_add_extent(bs, file, false,
ret = vmdk_add_extent(bs, le32_to_cpu(header.disk_sectors),
bs->file, false, le32_to_cpu(header.l1dir_offset) << 9,
le32_to_cpu(header.disk_sectors), 0,
le32_to_cpu(header.l1dir_offset) << 9, le32_to_cpu(header.l1dir_size),
0, 1 << 6, 1 << 9, 4096,
le32_to_cpu(header.granularity), le32_to_cpu(header.granularity),
&extent); &extent);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }