Unfortunately, old guest OSes do not align partitions to page size by default. This is true for Windows 2003 and Windows XP.
"Padding" is a value which should be added to guest LBA to obtain sector number inside the image. This results in a shifted images. 0123 offset inside image (in 512 byte sectors) +------- +.012 guest data (512 byte sectors) +------- The information about this is available in DiskDescriptor.xml ONLY. There is no such data in the image header. This patch contains very simple image with padding and corresponding XML disk descriptor created in authentic way. Signed-off-by: Denis V. Lunev <d...@openvz.org> Acked-by: Roman Kagan <rka...@parallels.com> Reviewed-by: Jeff Cody <jc...@redhat.com> CC: Kevin Wolf <kw...@redhat.com> CC: Stefan Hajnoczi <stefa...@redhat.com> --- tests/qemu-iotests/076 | 6 ++++++ tests/qemu-iotests/076.out | 4 ++++ tests/qemu-iotests/sample_images/parallels-padded.xml.bz2 | Bin 0 -> 377 bytes tests/qemu-iotests/sample_images/parallels-v2-padded.bz2 | Bin 0 -> 139 bytes 4 files changed, 10 insertions(+) create mode 100644 tests/qemu-iotests/sample_images/parallels-padded.xml.bz2 create mode 100644 tests/qemu-iotests/sample_images/parallels-v2-padded.bz2 diff --git a/tests/qemu-iotests/076 b/tests/qemu-iotests/076 index 636fc58..766b359 100755 --- a/tests/qemu-iotests/076 +++ b/tests/qemu-iotests/076 @@ -81,6 +81,12 @@ _use_sample_img parallels-v2.bz2 _use_sample_img parallels-simple.xml.bz2 { $QEMU_IO -c "read -P 0x11 0 64k" "$TEST_IMG"; } 2>&1 | _filter_qemu_io | _filter_testdir +echo +echo "== Read from a valid v2 image opened through xml with padding ==" +_use_sample_img parallels-v2-padded.bz2 +_use_sample_img parallels-padded.xml.bz2 +{ $QEMU_IO -c "read -P 0x11 0 64k" "$TEST_IMG"; } 2>&1 | _filter_qemu_io | _filter_testdir + # success, all done echo "*** done" rm -f $seq.full diff --git a/tests/qemu-iotests/076.out b/tests/qemu-iotests/076.out index 628d9bf..46680d8 100644 --- a/tests/qemu-iotests/076.out +++ b/tests/qemu-iotests/076.out @@ -23,4 +23,8 @@ read 65536/65536 bytes at offset 0 == Read from a valid v2 image opened through xml == read 65536/65536 bytes at offset 0 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +== Read from a valid v2 image opened through xml with padding == +read 65536/65536 bytes at offset 0 +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) *** done diff --git a/tests/qemu-iotests/sample_images/parallels-padded.xml.bz2 b/tests/qemu-iotests/sample_images/parallels-padded.xml.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..90e481b88e1f4d65256d0511a8509114c6358052 GIT binary patch literal 377 zcmV-<0fzoUT4*^jL0KkKS+JP`&Hw<KUw~9lPy_$xpWsdazwh08FaddH8X6Fz^phqa z0kr@C000`P{z){A0000Upa9SS5-9{U$c>4nhyVtdfq>MRN`P%Vs7e5mydg1cvP<`s zYo%7Ss&>_C5i%-bDqP)#HmEBiP+TU)8WyoiurHMw!l_ZF1>8_3m3N^^QwEd8=8hkN zLO3;VtVoT0C3B518KN#oIV4@)7DfOSbkchYBQVO$9`K;#(G?m(FfikRxR&q(!eB`z zPfQaAWzYbTAj%3PZH#S=y<l!A7-v`x<>0Cm|7Ih97TD6vNg%Klm)F8;i7;OxS)eka zB8A?w-Lb<P2oQ=RX}Frn6(&gA)fHtcO2o1qAWlwhDKQig<sdQwI23XvR~T0E)#6G< zUDR|Oi30I4$}VPcTnCQ(CKJjW0g+;mFwDaQlohzp(E|mg47s2j;G&NR^b?hm3@s%x XY}H|5IAssg=l(9_ig2MJVKN1r8+(|= literal 0 HcmV?d00001 diff --git a/tests/qemu-iotests/sample_images/parallels-v2-padded.bz2 b/tests/qemu-iotests/sample_images/parallels-v2-padded.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..80948ce689e2c5c2335d6e6b36965fe0b2305613 GIT binary patch literal 139 zcmV;60CfLCT4*^jL0KkKSt&WeumB1p|H%DFU;t162mk{B2!JYJ)<8f2AOHXuAOMPl zQl^8-X^;SIHmDUv6HN?Ehp1#2<6B`Us=32n6t4O~g)zWI0C`4`x5NN3Kna)uT+{)Q t08GFDLI4D2paA;U<m>wRX=_?<Gd@%RJirP-3P26T+>uTcBnnP&Yyj78F)siB literal 0 HcmV?d00001 -- 1.9.1